AKS自定义路由配置失败排查:Hub-Spoke环境子网路由异常
AKS Hub-Spoke架构部署失败原因分析(kubenet + UserDefinedRouting场景)
核心原因:节点初始化流量被UDR拦截,无法访问AKS控制平面及Azure内部依赖服务
当你为AKS子网配置自定义路由表并添加keep-subnet-traffic-within-vnet路由后,部署失败的关键问题在于节点初始化阶段的必要流量被错误路由,导致节点无法完成配置,具体分为以下几种情况:
1. AKS控制平面访问被阻断
AKS节点启动时需要与控制平面建立加密连接,获取集群配置并完成节点注册。如果你的路由规则将同虚拟网络内非本子网的流量(包括控制平面所在子网)强制转发到Hub的NVA,而NVA未配置允许节点到控制平面的双向流量,或者NVA没有正确回传响应流量,节点会因无法连接控制平面而卡在创建状态,最终超时失败。
2. Azure内部依赖服务访问失败
节点初始化过程中需要拉取系统容器镜像、访问Azure节点配置服务等,这些服务的私有IP通常属于虚拟网络的其他子网或Azure内部地址空间。如果路由规则将这些流量导向NVA,而NVA未放行这类Azure内部服务的流量,节点会因无法获取必要资源而初始化失败。
3. Kubenet插件的路由冲突
使用kubenet时,AKS会自动为节点配置Pod子网的路由规则。如果你的自定义路由表中存在与Pod子网前缀重叠的路由,或者自定义路由的优先级覆盖了kubenet自动生成的路由,会导致节点的Pod网络无法正常初始化,进一步引发节点创建超时。
解决方案建议
- 为AKS控制平面的私有IP范围添加专属路由,下一跳设置为
Virtual network,确保节点能直接访问控制平面,不经过NVA。 - 检查NVA的安全规则,放行AKS节点到控制平面、Azure容器镜像仓库、Azure元数据服务(169.254.169.254)的流量。
- 确保自定义路由表中的前缀不与kubenet配置的Pod子网前缀重叠,避免路由冲突。
内容的提问来源于stack exchange,提问作者Agyss
相关产品推荐
相关产品推荐

