You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

K8s存活探针持续失败但Pod内CURL访问健康端点正常求助

Kubernetes存活探针失败但Pod内curl正常的排查思路

针对存活探针报错dial tcp 10.224.0.130:7000: connect: connection refused,但Pod内部curl本地/health端点正常的情况,按以下步骤排查:

  • 检查应用监听地址:这是最常见的根因。很多应用(如你使用的gunicorn/Flask)默认仅绑定127.0.0.1,仅允许容器内部本地访问,而Kubernetes存活探针是通过Pod的集群IP发起请求,因此会被拒绝。

    • 进入Pod执行ss -tulpn查看端口监听状态,确认7000端口是否绑定0.0.0.0而非仅127.0.0.1。
    • 若为gunicorn启动,确保启动命令包含--bind 0.0.0.0:7000;若为Flask,需设置环境变量FLASK_RUN_HOST=0.0.0.0或启动时指定--host=0.0.0.0。
  • 验证Pod网络可达性:在Pod所在节点上执行curl http://10.224.0.130:7000/health:

    • 若节点上也无法连接,说明应用监听地址或Pod网络配置存在问题;
    • 若节点上能正常访问,需检查kubelet服务状态,或节点防火墙是否拦截了kubelet的探针请求。
  • 排查NetworkPolicy规则:确认集群中是否存在针对该Pod所在Namespace的NetworkPolicy,是否限制了7000端口的入站访问——kubelet的探针请求需要被允许通过,否则会被拦截。

  • 调整探针参数:尽管你设置了initialDelaySeconds:20,但如果应用启动依赖外部服务(如数据库、配置中心),可能探针首次检查时应用尚未完全就绪:

    • 尝试延长initialDelaySeconds(例如改为60),同时可增加failureThreshold(默认值3),给应用更多启动缓冲时间。
  • 查看容器启动日志:执行kubectl logs <pod-name> -c flask-container,检查应用启动过程中是否有异常日志,确认服务是否真的在7000端口正常启动。

内容的提问来源于stack exchange,提问作者john

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 15:50:29