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

升级K8s版本后无法从公网连接Azure AKS集群

AKS集群K8s 1.19升1.22后Ingress公网访问超时排查方案

已知集群内临时Pod通过kubectl run my-shell --rm -i --tty --image ubuntu -- bash创建后,curl Ingress公网IP可正常返回结果,说明Ingress转发链路、后端服务本身无异常,故障点在公网到集群入口的路由/流量拦截层,按以下顺序逐层排查:

1. 先校验Ingress-Nginx LoadBalancer服务配置兼容性

K8s 1.22移除了多个旧版API,AKS对应负载均衡的默认逻辑也有调整,优先排查配置错配:

  • 执行kubectl get svc -n ingress-nginx找到ingress-nginx-controller对应的LoadBalancer类型服务,核对返回的EXTERNAL-IP和你公网curl的IP一致,避免升级过程中服务重建更换公网IP,导致原有NSG规则未匹配到新IP
  • 执行kubectl describe svc ingress-nginx-controller -n ingress-nginx查看注解,删除所有service.beta.kubernetes.io/azure-load-balancer-health-probe-*开头的旧版健康探针注解:1.20之后AKS会自动为LoadBalancer服务配置正确的节点健康探针,旧版本残留的注解会导致SLB健康检查失败,公网流量不会被转发到后端节点
  • 检查服务的externalTrafficPolicy配置:如果值为Local,执行kubectl get pod -n ingress-nginx -o wide确认Ingress控制器Pod确实调度在SLB后端池列出的节点上,否则流量到节点后找不到对应监听端口会直接丢弃

2. 全链路枚举所有流量拦截规则,不要仅检查单个NSG

公网到集群节点的流量会经过多层访问控制,漏查任意一层都会导致超时:

  • 到AKS对应的MC_开头的自动生成节点资源组,找到和Ingress公网IP绑定的负载均衡器资源:先检查负载均衡规则是否正常监听80/443端口,查看后端池实例健康状态,如果实例全部显示不健康,回到上一步重新排查健康探针配置
  • 逐层核对所有关联NSG的规则:流量路径上一共会经过4层NSG/访问控制,分别是「公网IP直接关联的NSG(若配置)」→「负载均衡器所在子网关联的NSG」→「AKS节点网卡单独关联的NSG」→「AKS节点本地主机防火墙」,每一层都要确认没有高优先级的拒绝规则拦截来自Internet、目标端口为80/443的TCP流量,注意NSG规则优先级数字越小匹配顺序越靠前,要确认放通规则排在所有拒绝规则之前
  • 检查虚拟网络路由配置:如果VNet配置了0.0.0.0/0的默认路由指向Azure Firewall或第三方网络虚拟设备(NVA),需要确认防火墙入站规则放通了到Ingress公网IP的80/443流量,同时回包路由没有被强制隧道劫持造成不对称路由丢包
  • 校验节点本地防火墙规则:执行kubectl debug node/<替换为实际节点名> -it --image=mcr.microsoft.com/aks/fundamental/base-ubuntu:v0.0.11进入节点调试环境,执行iptables -L INPUT -n | grep -E '80|443|DROP'确认节点本地iptables规则没有丢弃公网到Ingress监听端口的流量,1.22升级后部分旧版安全DaemonSet可能会下发错误的iptables拦截规则

3. 版本升级相关的特殊配置校验

  • 确认Ingress-Nginx版本兼容性:低于1.0.0版本的Ingress-Nginx不兼容K8s 1.22版本,虽然集群内访问正常的场景下该问题概率较低,仍可执行kubectl exec -n ingress-nginx <替换为Ingress控制器Pod名> -- /nginx-ingress-controller --version确认版本,建议升级到1.2+版本适配K8s 1.22
  • 检查公网IP SKU:如果Ingress使用的是基本SKU公网IP,AKS 1.22版本默认开启的节点公网访问默认拒绝策略会拦截对应流量,更换为标准SKU公网IP即可恢复

快速定位故障点技巧:在公网侧机器执行tcptraceroute <Ingress公网IP> 80,如果在Azure骨干网边缘节点就出现丢包,故障点在SLB、NSG或防火墙层;如果流量已经到达SLB后端节点后才丢包,故障点在节点本地iptables或kube-proxy规则层。

内容的提问来源于stack exchange,提问作者HEDGEWIZARDS

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 12:54:31