Kubernetes 库伯内特斯吊舱内部通信

Kubernetes 库伯内特斯吊舱内部通信,kubernetes,google-cloud-platform,Kubernetes,Google Cloud Platform,我有一个Kubernetes集群,在一个工作负载中运行两个容器 一个容器运行Flask服务器应用程序,另一个容器运行angular应用程序。我需要将这个pod设置为两个应用程序都可以在本地主机内相互通信的方式。我需要暴露在端口4200中的角度容器与端口5000上的未暴露flask服务器通信。当涉及到让这些容器在吊舱内通信时,我被卡住了 您应该能够使用localhost:彼此通信,因为Kubernetes吊舱中的所有容器共享相同的网络名称空间。而不是localhost(127.0.0.1),确保您

我有一个Kubernetes集群,在一个工作负载中运行两个容器


一个容器运行Flask服务器应用程序,另一个容器运行angular应用程序。我需要将这个pod设置为两个应用程序都可以在本地主机内相互通信的方式。我需要暴露在端口4200中的角度容器与端口5000上的未暴露flask服务器通信。当涉及到让这些容器在吊舱内通信时,我被卡住了

您应该能够使用
localhost:
彼此通信,因为Kubernetes吊舱中的所有容器共享相同的网络名称空间。

而不是localhost(
127.0.0.1
),确保您的flask服务器可以通过任何本地IP访问,即
app.run(host='0.0.0')

kubernetes吊舱内的所有容器共享相同的虚拟网络接口;因此,使用angular应用程序中的
localhost:5000
连接到flask应用程序应该很容易。您可能需要共享更多配置。我的angular应用程序中指定了localhost:5000。在我的本地系统上通信没有问题。只有当我将这两个容器放入kubernetes工作负载/吊舱时,这才是一个问题。当我将其部署为服务时,我希望angular应用程序将数据发送到我的后端flask应用程序,但我一直收到“net::ERR_CONNECTION_Deniked”。你能分享你的部署/pod配置yaml吗?您选择的群集网络模型也可能有问题。@FGreg我会的,但我不能发布全部内容。集群网络模型应该是什么样子的?当安装kubernetes时,安装它的人需要选择一个。如果内部Pod通信不工作,则表明集群的网络配置可能存在问题。我建议用两个容器编写一个简单的Pod规范,并尝试使用
netcat
或类似的工具在两个容器之间进行通信。这样,如果是网络问题或容器本身的问题,您就可以隔离。我的angular应用程序中指定了localhost:5000。在我的本地系统上通信没有问题。只有当我将这两个容器放入kubernetes工作负载/吊舱时,这才是一个问题。当我将其部署为服务时,我希望angular应用程序将数据发送到我的后端flask应用程序,但我一直得到“net::ERR\u CONNECTION\u拒绝”。您能否发布
kubectl描述pod
?角形容器和烧瓶容器之间的交叉原点要求是什么,以便在烧瓶服务器中启用主机0.0.0?这与x原点无关,但与每个(在本例中)pod具有多个IP这一事实有关。我也在讨论这个问题。你真的试过吗?这可能是真的。但是kubernetes吊舱有多个IP地址吗?我读到的所有内容(包括和其他内容)都表明,在正常情况下,每个Pod应该只有一个IP地址。不,Pod只有一个IP,但localhost是另一个;)嗯,我明白你的意思。但是在这种情况下,为什么绑定到
127.0.0.1
(localhost)是不正确的?事实上,您不希望flask绑定到非环回IP,因为它不应该侦听来自非环回IP的数据包。它应该只接受来自本地主机的通信。我唯一的观点是,如果这个方法有效的话,似乎在某个地方有一个bug(idk,如果它是Flask、k8s、使用的网络插件、docker等等)。