pod readinessProbe未就绪503分析过程

事件日志

Readiness probe failed: HTTP probe failed with statuscode: 503

告警的含义

Pod 的 Readiness Probe 健康检查失败了,探针返回了 **HTTP 503 (Service Unavailable)**。
这意味着在 Kubernetes 看来,该容器还 没有准备好对外提供服务。因此:

  • Pod 会被标记为 NotReady,不会被加入 Service 的 Endpoint。
  • 应用的负载均衡或访问会被跳过该 Pod,直到探针通过。

常见原因

  1. 应用启动慢

    • Pod 刚起来时服务还没 ready,就被 probe 探测了。
    • 解决办法:增加 initialDelaySecondsfailureThreshold
  2. 探针路径/端口错误

    • readinessProbe 配置的 httpGet 路径或端口和应用实际监听的不一致。
  3. 应用内部错误

    • 服务确实返回 503,说明应用自己没准备好(比如依赖的 DB/Cache 没连上)。
  4. 负载过高

    • 如果 CPU/Mem 不够,探针请求会被拒绝或返回 503。

排查步骤

  1. 检查 Pod 事件和日志

    1
    2
    kubectl describe pod xxxx -n px
    kubectl logs xxxx -n px --previous
  2. 确认 readinessProbe 配置

    1
    2
    3
    4
    5
    6
    7
    readinessProbe:
    httpGet:
    path: /healthz
    port: 8080
    initialDelaySeconds: 10
    periodSeconds: 5
    failureThreshold: 3

    看看是不是路径/端口写错了。

  3. 检查容器服务状态

    • Pod 内部 curl 一下 probe 地址:

      1
      kubectl exec -it xxxx -n px -- curl -v http://127.0.0.1:8080/healthz