AWS EKS中ALB Ingress出现502 Bad Gateway问题排查求助
问题已解决:服务配置端口与容器实际监听端口不匹配
原问题背景
在AWS EKS集群中部署了包含Deployment、NodePort Service和ALB Ingress的服务,此前按官方文档部署2048示例完全正常,但自有服务出现以下异常:
- Pod运行状态正常、日志无报错
- Service部署成功,端口映射为
80:30533/TCP - Ingress生成了可用DNS地址,但访问返回502 Bad Gateway
- ALB对应的目标组显示后端状态不健康
部署用YAML配置如下:
--- apiVersion: apps/v1 kind: Deployment metadata: name: service-auth-deployment spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: service-auth template: metadata: labels: app.kubernetes.io/name: service-auth spec: containers: - name: service-auth-container image: service-auth-img ports: - containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: service-auth-sample spec: ports: - port: 80 targetPort: 80 protocol: TCP type: NodePort selector: app.kubernetes.io/name: service-auth --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress-auth-sample annotations: alb.ingress.kubernetes.io/scheme: internet-facing alb.ingress.kubernetes.io/target-type: ip spec: ingressClassName: alb rules: - http: paths: - path: / pathType: Prefix backend: service: name: service-auth-sample port: number: 80
故障排查与解决
核心原因
Service配置的targetPort与Pod容器内服务实际监听的端口不匹配,ALB目标组健康检查沿用了配置中的80端口,导致无法与服务建立连接,触发健康检查失败和502错误。
排查修复步骤
确认容器内服务实际监听端口
进入目标Pod执行命令,查看服务真正的监听端口:kubectl exec -it <你的Pod名称> -- ss -tulpn验证后发现容器内服务实际监听的并非80端口。
修正端口配置
- 更新Deployment的
containerPort为服务实际监听端口 - 修改Service的
targetPort为对应端口 - 若需要,在Ingress注解中指定健康检查端口:
alb.ingress.kubernetes.io/healthcheck-port: "实际端口号"
- 更新Deployment的
验证修复效果
重新部署配置后,ALB目标组状态转为健康,访问Ingress DNS地址返回正常响应,502问题解决。
内容的提问来源于stack exchange,提问作者Gonza-B
相关产品推荐
相关产品推荐

