Java Fabric K8s Client疑问:部分容器未就绪Pod仍显示Running
Kubernetes Pod状态为Running但容器未就绪的原因
Pod生命周期状态和容器就绪状态是两个独立概念
Pod的Running状态是Kubernetes对Pod生命周期阶段的标记:只要Pod被成功调度到节点,所有容器都已创建,且至少有一个容器处于运行/启动/重启状态,Pod就会被标记为Running。这个状态不关心容器是否能正常提供服务,只看Pod的基础运行条件是否满足。
而容器的就绪状态是单独的健康检查指标,用来判断容器是否准备好接收请求,就绪检查失败只会让Pod的ready字段变为false,不会改变Pod的生命周期状态。多容器Pod的状态判定逻辑
对于包含多个容器的Pod,Kubernetes不会因为某个容器未就绪就改变Pod的Running状态。只要所有容器都已启动(哪怕其中一个没通过就绪检查),Pod就会保持Running状态。就绪状态的失败只会影响Pod是否能被服务发现机制选中,不会影响Pod的生命周期阶段。Fabric Kubernetes Client的返回逻辑
getPods()方法只是直接返回Kubernetes API提供的Pod数据,它不会额外根据容器就绪状态去修改Pod的生命周期状态值。你看到的结果就是Kubernetes集群中Pod的真实生命周期状态,和容器就绪状态无关。
内容的提问来源于stack exchange,提问作者Ravi Teja Muddada
相关产品推荐
相关产品推荐

