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

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的日志,确认是否有配置同步异常:
    kubectl logs -n kube-system <agic-pod-name>
    
    重点关注后端池更新失败、IP解析错误等日志信息
  • 确认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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 23:47:25