gpt4 book ai didi

kubernetes - Kubernetes:服务路由到具有多个容器的Pod

转载 作者:行者123 更新时间:2023-12-02 11:36:19 26 4
gpt4 key购买 nike

我的Kubernetes集群目前面临一个问题。在调试时,我想到了一个我不知道答案的问题。
我正在使用1.15版的AWS EKS,但我不认为我的问题与任何特定的云或kubernetes版本有关
我有一个部署。它具有多个容器。有一项服务可以公开此部署。
假设部署有2个容器,C1和C2。 C1需要1秒才能启动,但C2需要30秒才能启动(疯狂!)。因此,当我在时间t1启动Pod时,发生的情况是,一旦C1立即启动并且Pod进入运行状态,但只有1/2个容器就绪。 pods C2最终在时间t2(t1 + 30秒)开始。在时间t2,准备好2/2个容器。
还要假设C1接收来自服务的传入请求,它执行某项操作,然后将请求转发到C2,C2执行某项操作,然后将其返回给C1。 C1最终返回服务,并将响应提供给客户端。
因此,我的问题是,在t2和t1之间的时间段内,当pod处于运行状态但只有1/2容器准备就绪时,服务将请求转发给pod吗?
换句话说,服务何时将请求转发到Pod?如果它们处于运行状态,则没关系准备好多少个容器?或者它们是否处于运行状态并且所有容器都已准备好?
我的想法是,该服务将不会转发,因为如果所有 pods 尚未准备就绪,它将毫无意义,但我没有任何证据/文档来证明其合理性。

最佳答案

...when pod is in running state but only 1/2 container is ready, would the service forward requests to the pods?


没有。

when does the service forward request to pods?If they are in running state and not matter how many containers are ready? OR if they are in running state and all containers are ready?


My thinking is that service won't forward as it won't make any sense if all the pods are not ready but I don't have any proof/document to justify it.


Here it is :)
官方文档说:“... kubelet使用就绪性探测器来知道何时容器准备开始接受流量。 当Pod的所有容器都准备就绪时,Pod被视为就绪。信号的一种用法是控制哪个Pod用作服务的后端。当Pod尚未就绪时,会将其从服务负载平衡器中删除...”
另外它说:
“...应用程序暂时无法提供流量...应用程序可能取决于外部服务...在这种情况下,您不想杀死应用程序,但也不想发送请求。 Kubernetes提供了就绪性探针来检测和缓解这些情况。一个装有容器的容器报告其容器尚未准备就绪,不会通过Kubernetes Services接收流量...”
就绪探针用于检测流量不应发送到App的情况。

My thinking is that service won't forward as it won't make any sense if all the pods are not ready


您绝对在这里。
希望对您有所帮助。

关于kubernetes - Kubernetes:服务路由到具有多个容器的Pod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62570366/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com