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

将PHP应用迁移至EKS时部署失败:就绪探针连接被拒绝

排查EKS中PHP应用就绪探针连接拒绝问题

针对你遇到的就绪探针错误Get "http://172.17.0.6:80//health.php": dial tcp 172.17.0.6:80: connect: connection refused,可以从以下几个方向排查:

  • 容器内Web服务未正常启动
    直接进入运行中的容器(若Pod未被销毁),检查Web服务状态:

    kubectl exec -it <pod-name> -- ps aux
    

    确认apache/nginx等服务是否在运行。同时查看服务日志定位启动失败原因:

    # Apache示例
    kubectl exec -it <pod-name> -- tail -f /var/log/apache2/error.log
    # Nginx示例
    kubectl exec -it <pod-name> -- tail -f /var/log/nginx/error.log
    

    确保Dockerfile中使用前台启动命令(比如CMD ["apache2-foreground"]),避免服务后台运行导致容器退出。

  • Web服务监听地址错误
    检查容器内Web服务是否监听0.0.0.0:80,而非仅127.0.0.1(后者会拒绝外部连接):

    kubectl exec -it <pod-name> -- netstat -tulpn
    

    若监听地址不对,修改apache/nginx配置文件,将监听地址改为0.0.0.0:80,重新构建镜像。

  • 就绪探针路径配置错误
    注意错误日志中的路径是//health.php(双斜杠),检查Deployment的就绪探针配置,确认httpGet.path是否误写为//health.php,应修正为/health.php。错误的路径可能导致服务无法识别请求,间接触发连接问题。

  • 探针触发时机过早
    如果Web服务启动较慢,探针可能在服务就绪前就开始检测。查看Pod事件确认:

    kubectl describe pod <pod-name>
    

    调整探针参数,增加initialDelaySeconds(比如设为30),给服务足够的启动时间,同时可适当调整periodSeconds和failureThreshold。

  • 容器内网络限制
    检查容器内是否有防火墙规则或SELinux限制阻止80端口访问:

    # 查看iptables规则
    kubectl exec -it <pod-name> -- iptables -L
    # 检查SELinux状态(RHEL系镜像)
    kubectl exec -it <pod-name> -- getenforce
    

    关闭不必要的防火墙规则,或调整SELinux策略(测试阶段可临时关闭setenforce 0验证)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 14:40:06