LivenessProbe 失败原因 → 解决办法对照表
📊 LivenessProbe 失败排查对照表
| 失败原因 | 典型表现 | 排查方法 | 解决办法 |
|---|---|---|---|
| 应用端口没监听 | curl http://127.0.0.1:8080/healthz 不通 |
netstat -tlnp / ss -tlnp 查看端口 |
确认应用监听在正确端口 |
| 应用监听地址不对 | 探针访问 127.0.0.1,但应用只监听 0.0.0.0 或反之 |
查看 netstat 绑定的 IP |
修改应用监听地址或调整探针 host 参数 |
| 应用启动慢 | Pod 刚启动就报 livenessProbe failed | 查看应用启动日志,是否 > initialDelaySeconds |
增加 initialDelaySeconds |
| 应用响应慢 | 日志显示 Client.Timeout exceeded |
容器内执行 curl 看耗时 |
调大 timeoutSeconds,优化 /healthz 逻辑 |
| 探针路径错误 | 探针 404/403/500 | curl 验证 URL 是否正确 |
修改探针 path,避免依赖鉴权 |
| 探针配置过严 | 偶尔网络抖动即失败 | 查看 failureThreshold 是否过低 |
增加 failureThreshold,放宽容忍度 |
| 容器 CPU/内存不足 | kubectl top pod 显示资源高,探针超时 |
dmesg 或应用日志有 OOM 信息 |
提高 request/limit,优化应用 |
| 应用 GC/卡死 | 日志无响应,CPU 占用异常 | 应用内部监控/GC 日志 | 优化代码,增加健康检查接口独立性 |
| CNI/网络异常 | 其他端口访问也超时 | 检查 kubelet 日志、CNI 状态 | 修复网络插件或节点问题 |
✅ 最佳实践
-
探针接口要轻量级、无依赖(不要依赖数据库、外部 API)
-
livenessProbe用来判断 进程卡死,readinessProbe才是判断 服务是否可用 -
建议配置:
initialDelaySeconds: 10 periodSeconds: 10 timeoutSeconds: 5 failureThreshold: 5
















