You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GKE触发PDB_STATEFULSET_WITHOUT_PROBES告警:是否需为多容器Pod每个容器配就绪探针?

问题

GKE正在触发"PDB_STATEFULSET_WITHOUT_PROBES"告警,但告警指向的StatefulSet实际上已配置就绪探针。其他StatefulSet/Deployment未出现该问题,仅在包含多容器的Pod中触发此告警。请问:

  1. GKE是否要求为每个容器配置就绪探针?
  2. 这是通用最佳实践还是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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 16:58:09