Azure私有网络中通过应用网关Ingress访问AKS出现502错误求助
诊断并解决AKS与应用网关私有环境下的502错误
环境背景
- 已在Azure私有网络中部署AKS和应用网关,通过Application Gateway Ingress Controller(AGIC)实现通信
- 所有资源无公网IP,AKS与应用网关VNet已完成双向对等互联
- 已部署测试Pod及Ingress组件,设置
use-private-ip: "true",应用网关自动生成后端池,Pod状态及功能验证正常 - 问题:通过应用网关私有IP访问服务时出现502错误,已确认后端池与Ingress映射正确,推测应用网关无法与AKS通信
相关配置
ingress.yaml
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: prd-pt-ui-app-ingress namespace: prd annotations: kubernetes.io/ingress.class: azure/application-gateway appgw.ingress.kubernetes.io/backend-path-prefix: "/" appgw.ingress.kubernetes.io/use-private-ip: "true" spec: rules: - http: paths: - path: /* pathType: Prefix backend: service: name: prd-pt-ui-app-service port: number: 80
后端池截图

健康探测截图

诊断与解决步骤
1. 验证健康探测配置
从健康探测截图检查:
- 确认探测路径是否与Pod实际服务路径匹配:如果Pod的服务根路径不是
/,或需要特定健康检查端点(如/healthz),当前探测路径可能无法返回200状态码,导致后端被标记为不健康 - 检查探测协议(HTTP/HTTPS)、端口是否与服务端口一致:应用网关探测端口需与Ingress指向的Service端口(80)匹配
- 查看探测超时、间隔设置:如果Pod启动较慢,探测间隔过短可能导致误判,可适当调整阈值
2. 检查网络连通性
- 应用网关到AKS节点的连通性:在应用网关所在VNet的虚拟机中,执行
telnet <AKS节点私有IP> <Service端口>或curl http://<AKS节点私有IP>:<Service端口>/<探测路径>,确认是否能连通 - AKS节点到Pod的连通性:在AKS节点上执行
kubectl exec -n prd <Pod名称> -- curl http://localhost:<Pod端口>/,验证Pod内部服务正常;同时检查Service的Endpoints是否正确关联Pod:kubectl get endpoints prd-pt-ui-app-service -n prd,确认Endpoints包含Pod的私有IP及端口 - VNet对等互联的路由与NSG规则:
- 检查两个VNet的对等互联是否启用双向转发,确认路由表中存在对方VNet的网段路由
- 检查AKS节点子网、应用网关子网的NSG规则:允许应用网关子网到AKS节点子网的入站流量(目标端口为Service的80端口),以及AKS节点到Pod的内部流量
3. 检查AGIC日志与状态
- 查看AGIC Pod的日志,确认是否有配置同步异常:
重点关注后端池更新失败、IP解析错误等日志信息kubectl logs -n kube-system <agic-pod-name> - 确认AGIC服务账号权限:确保其能访问AKS API及应用网关资源,正常同步Ingress配置
4. 验证Service配置
- 检查Service类型:如果是
ClusterIP,确认其ClusterIP可在AKS集群内部访问:kubectl exec -n prd <test-pod> -- curl http://prd-pt-ui-app-service.prd.svc.cluster.local:80 - 确认Service的selector与Pod的labels匹配:
kubectl describe service prd-pt-ui-app-service -n prd,检查Selector字段是否和Pod的labels一致
5. 应用网关后端池状态检查
- 在Azure门户中查看应用网关后端池的健康状态,如果后端成员显示为
不健康,说明健康探测失败,需回到步骤1调整探测配置 - 确认后端池中的IP是否为AKS节点的私有IP(使用ClusterIP时,应用网关通过节点端口转发流量),如果IP错误,需检查AGIC同步是否正常
内容的提问来源于stack exchange,提问作者Rahul
相关产品推荐
相关产品推荐

