Kubernetes中Nginx Ingress访问前端出现502 Bad Gateway错误
问题:K3s环境下Nginx Ingress返回502 Bad Gateway,前端Pod正常运行
我在安装了K3s的Linux虚拟机上部署了Nginx Ingress Controller,目标是为前端服务配置HTTPS,但通过Ingress地址app.192.168.[something].nip.io访问应用时,持续出现502 Bad Gateway错误。
相关信息
- 前端Service详情(
kubectl describe svc输出) - 集群所有Pod状态信息
kubectl get svc -o wide执行结果
Nginx Ingress错误日志
connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.223.229, server: app.192.168.[something].nip.io, request: "GET / HTTP/2.0", upstream: "http://10.43.141.56:3000/", host: "app.192.168.[something].nip.io"
前端Pod处于正常运行状态,但不清楚下一步排查方向。
Ingress资源配置
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress annotations: nginx.ingress.kubernetes.io/service-upstream: "true" spec: ingressClassName: nginx tls: - secretName: dailygrind-tls hosts: - app.192.168.[something].nip.io rules: - host: app.192.168.[something].nip.io http: paths: - pathType: Prefix path: "/" backend: service: name: frontend port: number: 3000
排查步骤
1. 验证Service与Pod的关联有效性
执行kubectl get endpoints frontend,查看Service对应的Pod端点列表:
- 如果端点为空,说明Service的标签选择器与Pod标签不匹配,检查两者的
labels字段是否一致 - 如果端点存在,确认IP和端口与前端Pod的实际配置对应
2. 集群内部直接测试前端Pod连通性
进入集群内任意可执行curl的Pod(比如Ingress Controller的Pod),执行:
curl http://10.43.141.56:3000
(替换为错误日志中的upstream IP)
- 如果连接被拒绝,说明:
- 前端容器内的服务未监听3000端口,检查Pod的容器配置,确认应用监听的是
0.0.0.0:3000(不能仅监听127.0.0.1) - 存在NetworkPolicy限制了Ingress Controller到前端Pod的流量,检查集群内的NetworkPolicy规则
- 前端容器内的服务未监听3000端口,检查Pod的容器配置,确认应用监听的是
3. 核对Service端口配置
对比Service的spec.ports与前端Pod的容器端口:
- 确认Service的
port和targetPort(如果未指定则默认与port一致)与Pod暴露的容器端口完全匹配
4. 临时调整Ingress的service-upstream注解
当前配置了nginx.ingress.kubernetes.io/service-upstream: "true",该注解会让Ingress直接转发到Service的ClusterIP而非后端Pod。临时移除该注解后重新部署Ingress,测试访问是否正常:
- 如果恢复正常,说明Service本身存在转发故障,回到步骤1重新排查Service与Pod的关联
- 如果仍报错,问题大概率出在Pod内部服务或网络策略
5. 排除TLS证书干扰
虽然502错误通常与证书无关,但可临时关闭TLS配置进行测试:
- 注释Ingress配置中的
tls字段,用HTTP访问app.192.168.[something].nip.io - 如果HTTP访问正常,再检查
dailygrind-tlsSecret的证书和密钥是否有效,执行kubectl describe secret dailygrind-tls确认格式正确
内容的提问来源于stack exchange,提问作者PioPio
相关产品推荐
相关产品推荐

