首页/云/Kubernetes 速查/readinessProbe 就绪探针
调度与资源52 条

readinessProbe 就绪探针

决定 Pod 是否进入 Service 后端列表:失败时摘流但不重启,恢复后自动回列;是滚动更新不掉线的关键。

Kubernetes 速查云更新于 2026-10-13

就绪探针是什么

就绪探针决定一个 Pod 是否进入服务的后端列表:检查通过就加入并接收流量,检查失败就被摘出去但容器不会被重启,恢复之后自动回到列表。它解决的是「实例还在但暂时不能服务」的问题,是滚动更新不掉线、依赖未就绪时不误收流量的关键机制。

和存活检查的取舍

就绪检查的代价是摘流量,存活检查的代价是重启,后者重得多。因此启动预热、依赖暂时不可用、过载自保护这类可恢复状态都应放在就绪检查里。反过来,如果就绪检查只返回固定成功,那么滚动更新时流量照样会打到尚未准备好的新实例上。

基本信息

适用环境任何 Kubernetes 发行版,写在容器的探针字段里
检查方式HTTP 请求、TCP 连接或容器内执行命令
失败行为从服务后端移除,容器继续运行
恢复行为检查通过后自动重新加入后端列表
常见参数检查周期、失败阈值、成功阈值
相关字段最小就绪时长,决定新实例稳定多久才算可用

典型使用场景

  • 启动预热:应用加载缓存或建立连接池期间不接流量
  • 依赖未就绪:数据库或下游暂时不可用,先摘掉自己避免大量失败
  • 过载自保护:压力过大时主动退出后端列表,避免雪崩
  • 滚动更新不掉线:新实例就绪后才替换旧实例
  • 优雅下线配合:终止流程开始后先摘流量,再把在途请求处理完
  • 有状态成员:确认成员完成数据同步后再对外提供服务

就绪探针示例

就绪探针示例
readinessProbe:
  httpGet:
    path: /ready
    port: 8080
  periodSeconds: 5           # 检查间隔,可比存活检查更频繁
  timeoutSeconds: 2
  failureThreshold: 2        # 连续失败两次即摘流量
  successThreshold: 1        # 恢复判定次数

验证端点与摘流

验证端点与摘流
kubectl get endpointslices -l kubernetes.io/service-name=web   # 看后端列表变化
kubectl describe pod web-x | grep -i -A3 readiness              # 探针配置与失败记录
kubectl get pods -o wide                                         # 对照就绪列判断
kubectl get events --field-selector reason=Unhealthy --sort-by=.lastTimestamp | tail -10

参数与影响

参数作用设置不当的后果
periodSeconds检查频率过长会延迟发现异常与恢复
timeoutSeconds单次检查超时过短会把慢响应判为未就绪
failureThreshold连续失败几次才摘流量过小会因抖动频繁进出后端
successThreshold连续成功几次才回到后端过大则恢复变慢
检查路径应体现「能不能接流量」,例如依赖连接是否建立完毕,而不是简单返回固定成功。
没有配置就绪检查时,容器一运行就被当作可用,滚动更新期间流量会打到还没准备好的实例上。

易错点

  • 不配就绪检查:新实例刚启动就进入后端,发布期间出现大量失败请求
  • 检查接口固定返回成功:探针形同虚设,滚动更新与依赖异常时都无法起到保护作用
  • 把依赖健康直接作为就绪条件且阈值过严:下游轻微抖动导致后端列表被清空,服务整体不可用
  • 不关注最小就绪时长:实例刚通过检查就被大量流量打入,冷启动阶段直接被打挂

数据来源与参考

  • Kubernetes 官方文档 · 就绪探针
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌