【发布时间】:2020-03-01 23:07:08
【问题描述】:
我有以下相同的问题: Dual nginx in one Kubernetes pod
在我的 Kubernetes Deployment 模板中,我有 2 个使用相同端口 80 的容器。
我知道Pod 中的容器实际上位于同一个网络命名空间下,这使得使用localhost 或127.0.0.1 可以访问Pod 中的另一个容器。
这意味着容器不能使用相同的端口。
在docker run 或docker-compose 的帮助下很容易实现这一点,第一个容器使用8001:80,第二个容器使用8002:80。
在 Kubernetes Pod 中是否有类似或更好的解决方案?无需将这 2 个容器分成不同的 Pod。
【问题讨论】:
-
您很少希望在一个 pod 中运行多个容器。如果它们是使用标准端口的不同服务器,那就更是如此。将它们分成两个单独的 pod。
-
你了解 docker-compose 我建议你使用一个名为 komposer 的应用程序。它会将您的 docker-compose 文件转换为 k8s.yaml 设置。在您的情况下,它将是您需要创建的服务定义,将 pod 端口映射到容器端口。
-
k8s 无法设置 p 端口转发 docker-compose 所做的。您是否有在同一个 pod 中运行两个网络服务器的用例?为什么不在不同的 pod 中运行它们?如果您需要将两个容器放在同一个 pod 中,请考虑更改容器服务侦听的端口。
-
嗨,@PatrickW 我没有一个非常确定的用例,因为我对 Kubernetes 和集群的概念还很陌生。我对集群的初步规划是将系统的所有容器放入一个 pod。这样我就可以根据需要复制这个 pod。但根据我现在得到的所有反馈,似乎我走错了方向。我将审查我的结构并尝试使用你们提供的建议。谢谢大家! =)
标签: docker kubernetes