就绪探针与发布的关系
Readiness 探针决定 Pod 是否加入 Service 后端:未就绪即摘除流量,但不重启容器。滚动更新只有在新 Pod 就绪后才继续缩旧 Pod,因此探针配置直接决定发布期的流量安全与更新能否推进。关键参数包括 initialDelaySeconds、periodSeconds、failureThreshold、successThreshold。就绪失败会让新 Pod 不接流量、更新停滞并最终超时,失败信息可在 kubectl get pods 与事件里看到。
基本信息
| 语义 | 未就绪等于摘除流量,不重启容器 |
|---|---|
| 关键参数 | initialDelaySeconds、periodSeconds、failureThreshold |
| 与发布关系 | 就绪失败则不接流量,更新停滞并最终超时 |
| 失败可见 | kubectl get pods 与事件中的探针报错 |
| 设计边界 | 探针只回答本实例能否接流量 |
典型使用场景
- 新版本发布:探针保证只有健康的实例接流量,滚动更新自动跳过坏实例。
- 慢启动应用:配合启动探针保护启动期,就绪从能对外服务开始判断。
- 发布观察:发布期间看 READY 状态列,判断滚动是否在推进。
- 摘流维护:临时让探针失败可使实例退出流量(配合优雅退出一起生效)。
- 告警联动:就绪持续失败触发告警,避免更新静默卡住。
- 演练:预发演练探针失败场景,确认摘流与告警符合预期。
就绪探针
就绪探针
readinessProbe:
httpGet: {path: /healthz, port: 8080}
initialDelaySeconds: 5 # 首次检查前等待
periodSeconds: 10 # 检查周期
failureThreshold: 3 # 连续失败次数才判未就绪就绪探针依赖下游系统时,下游抖动会引发全量摘流:探针只应回答本实例能否接流量。
参数与真实启动时间不匹配时,慢启动实例迟迟不就绪,更新停滞;慢启动应用用启动探针分开保护更稳妥。
探针接口保持轻量:复杂查询会随检查频率放大自身故障,拖垮实例也拖垮发布。