GKE触发PDB_STATEFULSET_WITHOUT_PROBES告警:是否需为多容器Pod每个容器配就绪探针?
问题
GKE正在触发"PDB_STATEFULSET_WITHOUT_PROBES"告警,但告警指向的StatefulSet实际上已配置就绪探针。其他StatefulSet/Deployment未出现该问题,仅在包含多容器的Pod中触发此告警。请问:
- GKE是否要求为每个容器配置就绪探针?
- 这是通用最佳实践还是GKE的特定要求?
下方是该StatefulSet的容器探针配置详情:
[ { "readinessProbe": null, "livenessProbe": null }, { "readinessProbe": null, "livenessProbe": null }, { "readinessProbe": { "failureThreshold": 3, "grpc": { "port": 21171, "service": "readiness" }, "initialDelaySeconds": 10, "periodSeconds": 10, "successThreshold": 1, "timeoutSeconds": 1 }, "livenessProbe": { "failureThreshold": 3, "grpc": { "port": 21171, "service": "liveness" }, "initialDelaySeconds": 10, "periodSeconds": 10, "successThreshold": 1, "timeoutSeconds": 1 } }, { "readinessProbe": { "failureThreshold": 3, "grpc": { "port": 2380, "service": "readiness" }, "initialDelaySeconds": 10, "periodSeconds": 10, "successThreshold": 1, "timeoutSeconds": 1 }, "livenessProbe": { "failureThreshold": 3, "grpc": { "port": 2380, "service": "liveness" }, "initialDelaySeconds": 10, "periodSeconds": 10, "successThreshold": 1, "timeoutSeconds": 1 } }, { "readinessProbe": { "failureThreshold": 3, "grpc": { "port": 2379, "service": "readiness" }, "initialDelaySeconds": 10, "periodSeconds": 10, "successThreshold": 1, "timeoutSeconds": 1 }, "livenessProbe": { "failureThreshold": 3, "grpc": { "port": 2379, "service": "liveness" }, "initialDelaySeconds": 10, "periodSeconds": 10, "successThreshold": 1, "timeoutSeconds": 1 } } ]
解答
- 告警触发原因:你的StatefulSet Pod包含5个容器,但其中2个未配置就绪探针——GKE的"PDB_STATEFULSET_WITHOUT_PROBES"告警要求关联PDB的StatefulSet下,Pod内的所有容器都必须配置就绪探针,只要有一个容器没配,就会触发告警。
- GKE的要求:对于关联PodDisruptionBudget(PDB)的StatefulSet,GKE确实要求每个容器都配置就绪探针,这是GKE针对中断就绪性检查的特定规则,目的是确保Pod在被中断(如节点升级、集群缩容)时,所有容器都处于健康就绪状态,避免业务受损。
- 是否为通用最佳实践:给多容器Pod的每个容器配置就绪探针是通用Kubernetes最佳实践,并非GKE独有。Kubernetes中,Pod的就绪状态由所有容器的就绪状态共同决定——只有当Pod内所有容器都就绪时,整个Pod才会被标记为就绪,才能接收服务流量或参与集群调度。尤其是多容器场景,每个容器的状态都直接影响Pod整体可用性,因此为每个容器配置探针是保障业务稳定的必要操作。
- 解决建议:给那两个未配置探针的容器添加就绪探针。如果是辅助容器(如sidecar、日志收集容器),可以配置简单的探针规则,比如检查容器端口是否正常监听,或者执行一个无副作用的确认命令。配置完成后,告警会自动解除。
内容的提问来源于stack exchange,提问作者Kvothe
相关产品推荐
相关产品推荐

