如何通过az cli访问私有AKS集群 排查连接i/o超时故障
问题核心判定
你看到的设备码登录提示是AZ CLI的正常身份校验流程,不属于报错,真正的故障是凭证拉取完成后,kubectl尝试连接AKS API服务器时出现DNS解析超时。你名下其他可正常登录的AKS集群均为公网访问模式,API端点暴露在公网,公网DNS可正常解析、公网IP可直接连通,因此不会触发这类问题。
潜在触发原因
- 集群为私有AKS类型,API服务器仅暴露私有端点,未开启公网访问入口,你当前操作的终端不在与AKS私有端点连通的网络环境中(未接入对应VNet的VPN/专线、未通过同VNet/对等VNet的主机操作),流量无法路由到API服务器。
- DNS解析配置错误:私有AKS的API服务器域名解析记录存储在Azure私有DNS区域中,公网DNS无法查询到对应记录。如果你使用本地自定义DNS、未配置对应域名的解析转发规则,就会出现解析超时。
- 访问策略拦截:AKS配置了API服务器访问IP白名单,你当前操作环境的出口IP不在允许范围内;或网络路径上的防火墙、安全组拦截了到AKS API端点443端口的出站流量。
- 拉取kubeconfig时未指定私有集群参数,默认获取的是公网访问配置,而私有集群无公网入口,导致连接失败。
修复操作步骤
- 打通网络链路
- 临时测试优先选择与AKS集群同VNet的虚拟机执行操作,确认同VNet内可正常连通集群端点。
- 若需在本地终端操作,先接入对应VNet的P2S/S2S VPN、专线,或通过堡垒机配置端口转发,确保终端到AKS私有端点IP的443端口网络可达。
- 修复DNS解析
- 若使用自定义DNS服务器,配置条件转发规则,将
*.hcp.<集群所在区域>.azmk8s.io、对应私有链接域名的解析请求转发至Azure DNS服务IP168.63.129.16。 - 临时测试可在本地hosts文件中添加AKS API FQDN与对应私有端点IP的静态映射,不推荐生产环境长期使用该方案。
- 执行
nslookup <你的AKS API FQDN>验证解析结果,若返回私有网段(10.0.0.0/8、172.16.0.0/12、192.168.0.0/16)IP,说明解析配置正常。
- 若使用自定义DNS服务器,配置条件转发规则,将
- 拉取正确的集群凭证
执行带私有集群参数的命令拉取kubeconfig,确保配置内写入私有访问地址:az account set --subscription [subscription_id] az aks get-credentials --resource-group [resource-group] --name [AKS_cluster_name] --private - 排查访问限制
- 检查AKS API服务器的授权IP范围配置,将当前操作环境的出口IP加入允许列表。
- 逐跳检查网络路径上的NSG、防火墙规则,放通到AKS API端点443端口的出站流量。
- 验证连接
执行kubectl get nodes,若正常返回集群节点列表,说明集群登录成功。
内容的提问来源于stack exchange,提问作者Hvaandres
相关产品推荐
相关产品推荐

