Azure AGIC与AKS集成出现502 Bad Gateway的排查方案咨询
AKS + 应用网关(Kubenet)通信问题排查方案
基础连通性验证
- 确认应用网关和AKS节点在同一VNet下,且节点子网与应用网关子网IP段无重叠
- 在应用网关测试控制台发起对AKS服务ClusterIP的ping/端口测试,同时在AKS节点执行
tcpdump -i eth0 host <应用网关IP>抓包,验证流量是否到达节点 - 登录AKS节点,直接访问nginx测试Pod的IP和端口,确认应用本身正常运行
路由表配置校验
- 检查AKS节点子网关联的路由表,确认存在指向应用网关子网的用户定义路由(UDR):路由前缀需覆盖应用网关IP段,下一跳类型为
VirtualAppliance,下一跳地址为应用网关私有IP - 验证路由表的路由传播设置:确保
Route propagation已启用,避免系统路由被覆盖导致AKS节点无法回包到应用网关 - 执行
az network route-table route list --resource-group <资源组名> --route-table-name <路由表名>导出路由表,检查是否存在相同前缀的冲突路由
NSG规则合法性检查
- 检查AKS节点子网的NSG:确认入站规则允许应用网关子网IP段访问AKS服务的目标端口(如80/443),优先级需高于默认拒绝规则
- 检查应用网关子网的NSG:确认出站规则允许访问AKS节点子网IP段及服务端口,同时入站规则允许外部流量到应用网关前端端口
- 验证NSG的关联范围:确保NSG正确关联到AKS节点子网和应用网关子网,而非仅单个VM/资源
- 执行
az network nsg rule list --resource-group <资源组名> --nsg-name <NSG名>导出规则,检查源/目标IP、端口、协议是否匹配实际需求
AKS服务与应用网关配置匹配检查
- 确认AKS服务
type为ClusterIP(应用网关仅能直接访问ClusterIP或NodePort,LoadBalancer类型需额外配置) - 检查服务的
selector是否与nginx测试Pod的标签完全匹配,确保服务正确关联到Pod - 验证服务
ports配置:targetPort需与Pod暴露端口一致,port为服务监听端口,应用网关后端池需指向该端口 - 执行
kubectl describe service <服务名>查看服务Endpoint状态,确认列表中包含正常运行的Pod IP
应用网关后端池与健康探针验证
- 检查应用网关后端池:确认后端目标为AKS服务的ClusterIP,端口与服务配置一致
- 验证健康探针配置:探针路径(如
/)、端口、协议需与nginx应用的健康检查端点匹配,探针失败会导致后端被标记为不可用 - 查看应用网关后端健康状态,确认所有后端目标处于
Healthy状态,若为Unhealthy,根据提示排查端口、路径或连通性问题
日志与监控排查
- 查看AKS节点kube-proxy日志:
journalctl -u kube-proxy,确认流量是否正确转发到Pod - 查看应用网关的访问日志和性能日志,过滤目标为AKS服务的请求,检查是否有流量到达及错误状态码(如502/503)
- 执行
kubectl logs <nginx-Pod名>查看应用日志,确认是否收到来自应用网关的请求
内容的提问来源于stack exchange,提问作者Hardik Patel
相关产品推荐
相关产品推荐

