AKS Load Balancer 分配IP地址无法访问故障咨询
AKS Load Balancer 无法访问故障排查与解决方案
基础配置校验
- 确认LoadBalancer服务状态正常:执行
kubectl get svc <你的服务名> -n <命名空间>,检查EXTERNAL-IP列是否为有效IP,若显示<pending>说明LB未成功创建,通常由Azure配额不足、AKS服务主体无网络权限导致。 - 校验后端端点健康性:执行
kubectl get endpoints <你的服务名> -n <命名空间>,确认输出包含对应工作负载的Pod IP与端口,若为空说明服务的selector与Pod标签不匹配,或Pod未处于Ready状态。 - 核对端口配置:确认service定义的
port、targetPort、协议(TCP/UDP)与Pod暴露的配置完全一致,避免端口号写错、协议不匹配问题。
网络规则校验
- 排查NSG拦截:不仅要确认AKS节点子网的NSG放行了对应端口的入站流量,还要检查LoadBalancer关联的NSG是否允许你发起访问的源IP段访问目标端口,仅放行AKS子网组仅支持集群内部访问LB。如果是内部负载均衡器(ILB),还要确认客户端与LB在同一已打通的虚拟网络内。
- 检查集群网络策略:若AKS开启了NetworkPolicy,确认没有规则阻止LB到后端Pod的流量,可临时删除相关网络策略验证是否恢复访问。
- 校验路由表配置:确认虚拟网络关联的路由表没有将LB IP的流量路由到防火墙等其他设备,导致流量被拦截。
连通性验证
- 集群内部测试:启动临时测试Pod执行
kubectl run -it --rm test-access --image=busybox:1.28 -- wget -O- <LB的IP>:<端口>,如果内部可以访问,说明LB与后端服务配置正常,问题出在集群外部到LB的链路;如果内部也无法访问,优先排查服务与Pod配置。 - 链路抓包验证:如果内部通外部不通,在AKS节点上执行
tcpdump抓对应端口的流量,若请求未到达节点则排查上层网络/NSG拦截,若请求已到达但无回包则检查kube-proxy运行状态、节点iptables规则。
对应解决方案
- LB处于pending状态:给AKS关联的服务主体/托管标识分配虚拟网络的
网络贡献者角色,或申请提升Azure Load Balancer资源配额。 - NSG拦截问题:在LoadBalancer关联的NSG添加入站规则,允许访问源IP段访问目标端口,规则优先级高于全局拒绝规则。
- 内部LB跨网访问不通:配置VNET对等连接、VPN或ExpressRoute打通客户端所在网络与LB所在VNET,同步排查路由冲突。
- 服务配置错误:修正service的selector、端口、协议配置,保证与Pod的对应参数匹配。
内容的提问来源于stack exchange,提问作者Shatabdi Singh
相关产品推荐
相关产品推荐

