【发布时间】:2019-02-20 02:34:49
【问题描述】:
我花了一整天的时间寻找一个答案,为什么我的 node js 应用程序在 Kubernetes 上运行时无法从 Internet 访问它,并将负载均衡器作为服务类型。解决的办法是在node js server app定义中将host从localhost改成0.0.0.0,但还是不知道为什么?
我希望这可以节省将来的时间。
【问题讨论】:
标签: node.js kubernetes localhost
我花了一整天的时间寻找一个答案,为什么我的 node js 应用程序在 Kubernetes 上运行时无法从 Internet 访问它,并将负载均衡器作为服务类型。解决的办法是在node js server app定义中将host从localhost改成0.0.0.0,但还是不知道为什么?
我希望这可以节省将来的时间。
【问题讨论】:
标签: node.js kubernetes localhost
当您说您设置了主机时,我猜您的意思是应用程序在诸如 express app server . listen all intefaces instead of localhost only 之类的侦听函数中被告知要侦听的内容您可以绑定到特定地址或使用 0.0.0.0 将其对所有人开放掩码(零用作匹配的掩码,而不是真正的 IP 地址 - https://stackoverflow.com/a/20778887/9705485)。
我想您的应用程序在本地运行良好,并且能够使用您的 localhost 配置从您的主机访问它。这是因为您的本地计算机将以符合掩码的方式访问它。您的配置实际上是说只有 localhost 可以访问此应用程序。因此,当您移植到 Kubernetes 时,您的机器必须通过网络,然后传入连接是您机器的外部/公共 IP 地址,该地址与 localhost 掩码不匹配。因此,为了让它工作,您更改了掩码以使其对所有 IP 开放。
【讨论】: