私有Azure Kubernetes Service集群扩容/启停失败问题求助
私有AKS集群内部LB模式下节点启停/扩缩容卡住的问题分析与解决
原配置的核心问题
- 私有AKS集群使用内部LoadBalancer时,节点初始化必须访问AKS运行依赖的Azure核心服务(比如容器镜像仓库、AKS管理平面、Azure存储、Azure AD等),但内部LB本身不提供出站公网访问能力。如果你的VNet、NSG或路由表没有配置允许这些Azure服务的出站访问路径,节点就会因为连不上必需的服务,卡在初始化阶段。
- 公网LB模式下默认带出站规则,节点能通过公网访问这些服务;无LB模式下节点可能走VNet默认路由或已有NSG规则访问,所以能正常启动。
解决方法(满足无公网出站/仅允许Azure端点的需求)
方案1:用Azure专用链接配置私有端点
给AKS依赖的核心服务创建私有端点,让节点完全通过VNet内部网络访问:
- AKS管理平面:创建AKS私有链接服务,让节点在VNet内直接连接控制平面
- Azure容器注册表(ACR):为ACR配置私有端点,节点拉取镜像无需走公网
- Azure存储账户:AKS要靠存储账户取配置文件、存日志,给它配私有端点
- Azure AD:如果用了AD集成,也要配置Azure AD的私有端点
方案2:配置Azure服务端点
在节点所在的VNet子网里启用对应Azure服务的服务端点,让子网内流量直接访问指定Azure服务(不用公网IP):
- 启用
Microsoft.ContainerRegistry、Microsoft.Storage、Microsoft.Management这些关键服务的端点 - 配合NSG规则,只放行子网到这些Azure服务端点的出站流量,彻底阻断其他公网出站
方案3:用Azure防火墙或NVA管控出站流量
把VNet的默认路由改成指向Azure防火墙或网络虚拟设备,精准管控出站流量:
- 在防火墙里创建允许规则,只放行到Azure服务的流量(可以用Azure服务标签简化配置,比如
AzureContainerRegistry、AzureCloud) - 确保节点的出站流量经过防火墙过滤后,能顺利到达AKS必需的服务端点
验证步骤
- 查看节点系统日志(通过Azure门户AKS节点日志或执行
kubectl describe node),确认是不是有连接超时、无法访问特定端点的错误 - 测试节点能不能访问AKS管理平面、ACR的私有端点/服务端点地址
- 检查NSG规则和路由表,确认没有阻止到Azure服务的出站流量
内容的提问来源于stack exchange,提问作者OLA
相关产品推荐
相关产品推荐

