【发布时间】:2020-10-15 14:47:54
【问题描述】:
我目前在我的 Kubernetes 集群中遇到问题。在调试时,我想到了一个我不知道答案的问题。
我使用的是 AWS EKS,版本 1.15,但我认为我的问题与任何特定的云或 kubernetes 版本无关
我有一个部署。它有多个容器。有一个服务公开了这个部署。
假设部署有 2 个容器,C1 和 C2。 C1 需要 1 秒才能启动,但 C2 需要 30 秒才能启动(疯狂!)。因此,当我在时间 t1 启动 pod 时,发生的情况是,一旦 C1 立即启动并且 pod 进入运行状态,但只有 1/2 容器准备就绪。 pod C2 最终在时间 t2(t1+30 秒)开始。在时间 t2,有 2/2 个容器准备就绪。
还假设 C1 从服务中获取传入请求,它做一些事情然后将请求转发给 C2,C2 做一些事情然后将其返回给 C1。 C1 最终返回服务并将响应提供给客户端。
所以,我的问题是,在 t2 和 t1 之间,当 pod 处于运行状态但只有 1/2 容器准备就绪时,服务会将请求转发到 pod 吗?
换句话说,服务何时将请求转发到 pod?如果它们处于运行状态,不管有多少容器准备好了?或者如果它们处于运行状态并且所有容器都准备好了?
我的想法是服务不会转发,因为如果所有 pod 都没有准备好,但我没有任何证据/文件来证明它是合理的,它就没有任何意义。
【问题讨论】:
-
好的,我得到了答案。如果一个 pod 的所有容器都没有准备好,则流量不会流向该 pod。仅当所有容器都准备好时,才将 Pod 的端点添加到服务中。当 1/2 容器准备好时,我描述了我的服务。 pod IP 未出现在服务端点中。当 2/2 个容器准备就绪时,它才将 pod IP 添加到服务端点。感谢所有回答的人。这对我来说很愚蠢。
标签: kubernetes containers kubernetes-pod kubernetes-service