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

Kubernetes Ingress-Nginx 502错误:chat-srv-service无法接收API请求

排查与解决方法

一、优先解决connect() failed (111: Connection refused)核心问题

该错误说明Ingress尝试连接chat-srv-service对应Pod时被拒绝,即便Pod状态正常,也可能是以下原因导致:

  • 容器端口与Service端口不匹配
    检查Deployment中容器的containerPort是否和Service的targetPort完全一致(数值或端口名称都要匹配)。执行以下命令验证:

    kubectl get deployment chat-srv -o jsonpath='{.spec.template.spec.containers[0].ports}'
    kubectl get service chat-srv-service -o jsonpath='{.spec.ports[0].targetPort}'
    

    若不一致,修改Service或Deployment的端口配置使其对齐。

  • 容器内服务仅监听localhost
    很多应用默认绑定127.0.0.1,导致集群内其他组件无法访问。进入容器检查监听地址:

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

    确保服务监听0.0.0.0:<端口>而非127.0.0.1:<端口>。若代码硬编码了localhost,需修改为0.0.0.0或移除绑定地址配置。

  • NetworkPolicy限制访问
    检查是否存在NetworkPolicy阻止Ingress控制器Pod访问chat-srv的Pod:

    kubectl get networkpolicy
    

    若有相关策略,需添加规则允许Ingress控制器所在命名空间(通常是kube-system或自定义Ingress命名空间)访问chat-srv服务的端口。

  • Service端点关联异常
    即便你确认端点配置正常,仍需再次验证Service是否正确关联Ready状态的Pod:

    kubectl describe service chat-srv-service
    

    查看Endpoints字段,应显示Pod的IP和端口且状态为Ready。若端点为空或异常,检查Pod的readinessProbe是否配置错误,导致Pod未被纳入服务端点。

二、处理SSL_do_handshake() failed错误

该错误多为连接拒绝的连带问题,但也可能存在独立诱因:

  • Ingress后端协议配置错误
    若Ingress启用了TLS,但chat-srv服务仅支持HTTP,或Ingress注解backend-protocol与后端服务不匹配,会引发握手失败。修改Ingress资源的注解:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      annotations:
        nginx.ingress.kubernetes.io/backend-protocol: "HTTP" # 后端为HTTPS则改为"HTTPS"
    
  • 后端证书不被信任(若启用HTTPS)
    若chat-srv使用自签名证书,Ingress控制器默认会拒绝未知CA签发的证书。测试环境可添加注解跳过验证:

    nginx.ingress.kubernetes.io/ssl-verify-client: "off"
    nginx.ingress.kubernetes.io/ssl-verify-depth: "0"
    

    生产环境建议使用集群信任的CA签发证书,或把自签名证书加入Ingress控制器的信任存储。

三、额外验证步骤

  • 集群内直接测试连通性
    用busybox Pod直接访问chat-srv-service的ClusterIP和端口,确认问题是否出在Ingress层:

    kubectl run -it --rm busybox --image=busybox -- wget -O- http://<chat-srv-service-cluster-ip>:<port>
    

    若同样返回连接拒绝,问题出在Service或Pod层面;若能正常访问,再聚焦Ingress配置。

  • 检查容器日志
    即便容器状态为Running,也可能存在服务启动失败或异常:

    kubectl logs <chat-srv-pod-name>
    

    排查是否有服务启动报错、端口占用等信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 02:43:15