Azure AKS服务公网IP访问无响应,咨询Azure侧是否需额外配置
AKS LoadBalancer服务公网IP无响应的Azure侧排查要点
我来帮你梳理下Azure侧还需要检查的几个关键点,毕竟你已经确认了K8s组件状态和NSG端口配置,接下来从Azure基础设施层面排查:
1. 检查负载均衡器的健康探针状态
AKS的LoadBalancer默认会基于Service的端口配置健康探针,如果后端Pod的服务没有正常监听端口,或者探针路径不符合预期,LB会判定后端不健康,拒绝转发流量。
- 你可以通过Azure门户找到对应的负载均衡器,查看后端池的健康状态,确认所有节点/Pod实例都处于健康状态;
- 也可以用Azure CLI命令查看探针配置:
az network lb probe show --resource-group <你的资源组名> --lb-name <AKS自动创建的LB名称> --name <探针名称> - 另外,先确认容器内服务是否正常:进入Pod执行
kubectl exec -it <你的Pod名称> -- curl localhost:80,看是否能正常返回服务响应。
2. 检查AKS节点子网的路由表
如果你的AKS节点所在子网配置了用户定义路由(UDR),比如指向防火墙、NVA等设备,要确保路由规则没有阻止公网流量和Pod之间的往返。比如:
- 入站流量:公网→LB→节点→Pod的路径是否通畅;
- 出站流量:Pod→节点→公网的回包路径是否被拦截。
3. 检查Azure防火墙(若已启用)
如果你的AKS集群部署时搭配了Azure防火墙,需要额外配置:
- DNAT规则:允许公网流量转发到LoadBalancer的公网IP和目标端口;
- 应用规则/网络规则:允许Pod的出站流量回源,确保服务能正常响应请求。
4. 验证LoadBalancer公网IP的关联状态
先确认Service的公网IP已经正常分配:
kubectl get svc sample-service
查看EXTERNAL-IP列是否是有效的公网IP,然后到Azure门户搜索这个IP,确认它的状态是已分配,且没有被锁定或配置错误。
5. 检查节点级别的网络安全组(NSG)
除了你配置的公网IP对应的NSG,AKS节点自身的NSG也需要允许LoadBalancer的流量进入:
- 先查看Service对应的NodePort:
kubectl describe svc sample-service,找到NodePort字段; - 检查节点NSG的入站规则,是否允许来自LoadBalancer IP段的流量访问这个NodePort(默认AKS会自动配置,但如果手动修改过NSG规则可能会被误删)。
6. 排查容器DNS策略问题
你的Deployment里dnsPolicy配置为xxxxx,如果是自定义DNS配置,可能导致容器内服务无法正常启动或解析依赖,进而出现Pod运行正常但服务无响应的情况。可以临时将dnsPolicy改为默认的ClusterFirst测试,看是否能解决问题。
内容的提问来源于stack exchange,提问作者Srinivasaragavan R




