新建Azure Kubernetes Service(AKS)集群网络不可达问题求助
排查AKS集群LoadBalancer IP和仪表盘隧道不可访问问题
听起来你遇到了AKS集群网络突发故障的麻烦——昨天还正常的公网IP和仪表盘隧道今天突然失效,只能通过az工具连接集群,这确实让人头疼。我来帮你一步步排查可能的原因:
1. 先确认集群和节点的基础状态
首先得确保集群本身没有处于异常状态:
- 检查集群的部署状态:
正常应该返回az aks show --resource-group <你的资源组名称> --name <AKS集群名称> --query provisioningStateSucceeded。 - 检查节点池的状态:
所有节点池都应该是az aks nodepool list --resource-group <你的资源组名称> --cluster-name <AKS集群名称> --query "[].provisioningState"Succeeded。 - 用
kubectl查看节点状态:
所有节点的状态应该是kubectl get nodesReady,如果有NotReady或者其他异常,那节点层面可能出了问题(比如节点重启、资源耗尽)。
2. 排查LoadBalancer服务的异常
既然公网IP无法访问,先聚焦到LoadBalancer类型的服务上:
- 列出所有LoadBalancer服务,查看公网IP和状态:
重点看kubectl get svc -o wideEXTERNAL-IP列,是不是显示的是你之前能用的IP,状态有没有变成Pending(如果是,说明Azure没有成功创建/绑定负载均衡器)。 - 查看具体LB服务的详细信息,重点看Endpoints和事件:
kubectl describe svc <你的LoadBalancer服务名称>- 检查
Endpoints字段:有没有关联到正常运行的Pod IP?如果是空的,说明服务和Pod的标签匹配有问题,或者Pod本身没在运行。 - 检查
Events部分:有没有类似Failed to create loadbalancer或者健康检查失败的提示?这可能指向Azure负载均衡器资源的创建/配置问题。
- 检查
3. 排查仪表盘隧道(az aks browse)的问题
仪表盘隧道连不上,先确认仪表盘组件本身是否正常:
- 查看kube-system命名空间下的仪表盘Pod状态:
正常应该是kubectl get pods -n kube-system -l k8s-app=kubernetes-dashboardRunning状态,如果是CrashLoopBackOff或者Error,需要查看Pod日志:kubectl logs -n kube-system <仪表盘Pod名称> - 查看仪表盘服务状态:
kubectl get svc -n kube-system kubernetes-dashboard - 另外,把你执行
az aks browse时的完整错误信息贴出来会很有帮助——比如有没有权限提示?隧道建立失败的具体原因?是不是本地的8001端口被占用了?
4. 检查Azure底层网络资源状态
AKS的LoadBalancer依赖Azure的公共IP和负载均衡器资源,这些资源可能出现异常:
- 首先找到AKS的节点资源组(一般格式是
MC_<你的资源组>_<集群名>_<区域>):az aks show --resource-group <你的资源组> --name <集群名> --query nodeResourceGroup -o tsv - 检查该资源组下的负载均衡器状态:
az network lb list --resource-group <节点资源组名称> --query "[].{Name:name, ProvisioningState:provisioningState}" - 检查对应的公共IP资源:
确认这些资源的状态都是az network public-ip list --resource-group <节点资源组名称> --query "[].{Name:name, ProvisioningState:provisioningState, IPAddress:ipAddress}"Succeeded,IP地址和你之前使用的一致。
5. 排查网络安全组(NSG)和防火墙规则
有可能是NSG规则变更阻止了流量:
- 查看节点NSG的入站规则,确认允许HTTP/HTTPS(80/443端口)的流量:
正常应该有允许az network nsg rule list --resource-group <节点资源组名称> --nsg-name <节点NSG名称> --query "[].{Name:name, Direction:direction, Access:access, DestinationPortRange:destinationPortRange}"80、443端口入站的规则。 - 另外,检查本地防火墙是否阻止了
az aks browse使用的8001端口,或者你的网络环境有没有限制出站到AKS集群的流量。
如果以上步骤还没找到问题,建议你把kubectl describe svc <LB服务名>的输出、仪表盘Pod的日志,以及az aks browse的完整错误信息贴出来,这样能更精准地定位问题。
内容的提问来源于stack exchange,提问作者Daniel J. Pritchett
相关产品推荐
相关产品推荐

