Ubuntu下使用Azure CLI连接AKS集群后无法获取节点信息
解决AKS集群创建后kubectl无法获取节点的问题
我之前帮几个朋友排查过一模一样的问题,咱们一步步来定位解决:
1. 先确认kubectl的凭据是否正确配置
首先别着急,先重新执行凭据导入命令,覆盖掉可能存在的旧配置:
az aks get-credentials --resource-group <你的资源组名称> --name <你的AKS集群名称> --overwrite-existing
然后检查当前kubectl上下文是不是指向你的AKS集群:
kubectl config current-context
如果输出不是你的AKS集群名,用下面的命令切换过去:
kubectl config use-context <你的集群上下文名称>
2. 验证本地到AKS API服务器的网络连通性
很多时候问题出在网络上,AKS的API服务器需要能被你的Ubuntu机器访问:
- 先提取API服务器地址:
kubectl config view --minify -o jsonpath='{.clusters[0].cluster.server}' - 用telnet测试443端口是否能连通(AKS API默认走443):
telnet <上面得到的API地址> 443
如果连接失败,大概率是你的Ubuntu机器所在网络(比如公司内网防火墙、本地NSG)挡住了流量。这时候需要在Azure门户的AKS集群设置里,把你的Ubuntu机器公网IP添加到API服务器授权IP范围里。
3. 检查AKS集群本身的运行状态
有时候集群还在后台部署或者更新,导致kubectl暂时无法访问:
- 检查集群的部署状态:
az aks show --resource-group <资源组名> --name <集群名> --query provisioningState
正常输出应该是Succeeded,如果是Updating或者其他状态,等个10-15分钟再试。
- 检查节点池的状态:
az aks nodepool list --resource-group <资源组名> --cluster-name <集群名> --query '[].provisioningState'
确保所有节点池都显示Succeeded。
4. 确认RBAC权限是否足够
如果你用的不是创建集群的用户登录Azure CLI,可能没有权限查看节点信息:
- 先确认当前登录的Azure账户:
az account show
如果不是集群创建者,需要给这个账户分配Azure Kubernetes Service Cluster Admin Role或者Azure Kubernetes Service Cluster User Role到AKS集群资源上。
5. 清理本地kubeconfig缓存(终极方案)
如果以上步骤都没用,可能是本地kubeconfig有缓存损坏:
- 先备份当前配置:
cp ~/.kube/config ~/.kube/config.bak - 删除旧配置:
rm ~/.kube/config - 重新获取凭据:
az aks get-credentials --resource-group <资源组名> --name <集群名>
另外补充个小细节:确保你本地kubectl的版本和AKS集群的Kubernetes版本兼容(小版本差不超过1即可),可以用下面的命令分别查看:
- 本地kubectl版本:
kubectl version --short - AKS集群版本:
az aks show --resource-group <资源组名> --name <集群名> --query kubernetesVersion
内容的提问来源于stack exchange,提问作者user2412341
相关产品推荐
相关产品推荐

