Kubernetes存活探针日志返回200但探测失败问题排查
可能的原因及排查方案
1. 存活探针超时配置缺失,默认阈值过短
你的存活探针未配置timeoutSeconds,Kubernetes HTTP探针默认超时时间为1秒,而就绪探针设置了5秒超时。即便应用最终能返回200(日志已记录成功请求),但只要处理时间超过1秒,Kubelet就会判定探针失败。
- 解决:给
livenessProbe添加timeoutSeconds: 5(与就绪探针保持一致),观察问题是否缓解。
2. Kubelet与Pod间存在偶发网络异常
虽然应用日志记录了探针请求成功,但节点上的Kubelet与Pod之间的网络可能存在偶发丢包或延迟,导致Kubelet无法在超时窗口内收到响应。
- 排查:在Pod所在节点执行
curl -v http://<PodIP>:8020/ht/ -H "Host: pdt-staging.nagyv.com",持续观测是否有请求超时;检查节点CNI插件状态、网络策略是否限制了Kubelet与Pod的通信。
3. Twisted服务器连接队列积压
当应用承载大量业务请求时,Twisted的连接处理队列可能被占满,Kubelet的探针请求被延迟处理——此时应用日志会记录成功响应,但Kubelet已因超时判定失败。
- 排查:查看Twisted的连接数、队列相关日志;调整Twisted连接池配置,增加队列容量或优化请求处理逻辑。
4. 节点Kubelet资源不足
若Pod所在节点CPU、内存资源紧张,Kubelet进程可能因资源匮乏无法及时处理探针响应,导致误判超时。
- 排查:执行
kubectl top nodes查看节点资源使用率;检查Kubelet日志,确认是否存在资源不足相关报错。
5. Host头触发的内部路由延迟
探针请求携带了Host: pdt-staging.nagyv.com,而Kubelet直接访问Pod IP,应用内部可能针对该Host头做了额外路由逻辑(如关联Ingress域名配置),导致请求处理路径变长,偶尔超出探针超时阈值。
- 排查:尝试移除探针中的Host头配置,直接访问应用本地监听路径,观察探针状态;检查应用中基于Host头的路由逻辑是否存在性能瓶颈。
内容的提问来源于stack exchange,提问作者Akasha
相关产品推荐
相关产品推荐

