首页/开发/CI/CD 与发布速查/就绪探针与发布门禁
发布策略60 条

就绪探针与发布门禁

Readiness 探针决定 Pod 是否加入 Service 后端;滚动更新只有在新 Pod 就绪后才继续,因此探针配置直接决定发布期的流量安全与更新能否推进。

CI/CD 与发布速查开发更新于 2026-10-13

就绪探针与发布的关系

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       # 连续失败次数才判未就绪
就绪探针依赖下游系统时,下游抖动会引发全量摘流:探针只应回答本实例能否接流量。
参数与真实启动时间不匹配时,慢启动实例迟迟不就绪,更新停滞;慢启动应用用启动探针分开保护更稳妥。
探针接口保持轻量:复杂查询会随检查频率放大自身故障,拖垮实例也拖垮发布。

易错点

  • 探针返回正常但依赖未就绪(假就绪):发布后错误率上升,就绪判定要覆盖关键初始化是否完成。
  • initialDelaySeconds 小于真实启动时间:慢启动实例永远不就绪,更新卡住并超时。
  • 就绪与存活探针共用同一重接口:一次抖动同时摘流加重启,故障被放大。
  • 探针路径未随框架升级同步:健康端点改名后实例全部不可用,服务整体摘流。
  • 不配置探针:Pod 一运行就被当作可接流量,启动期请求失败全部计入错误。

数据来源与参考

  • Kubernetes 文档《Configure Liveness, Readiness and Startup Probes》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌