现状分析
- AKS cluster 1.31.8
- 启用aad 身份验证和kubernetes RBAC
当尝试执行kubectl get node
命令时,系统返回以下错误信息:
Error from server (Forbidden): nodes is forbidden: User "357517e8-4df5-4daa-88b4-94a84d763ec5" cannot list resource "nodes" in API group "" at the cluster scope
该错误表明当前用户357517e8-4df5-4daa-88b4-94a84d763ec5
没有足够的权限在集群范围内列出nodes
资源。这种情况通常发生在Azure AKS集群中,当用户未被正确分配到具有集群管理权限的Azure AD组时。
任务目标
需要解决当前用户无法执行kubectl get node
的权限问题,确保用户能够正常访问和列出集群节点。具体任务包括:
- 验证当前Azure AD组的配置
- 更新AKS集群的AAD管理员组配置
- 确认权限变更生效
行动步骤
检查Azure AD组的Object ID
确保已正确识别Azure AD管理员组的Object ID。可以通过Azure门户或Azure CLI查找目标组的Object ID。
更新AKS集群的AAD管理员组配置
使用Azure CLI执行以下命令,更新AKS集群的AAD管理员组配置:
az aks update --resource-group $resourceGroup --name $clusterName --aad-admin-group-object-ids 12bf4353-18b4-46df-a567-5551af78bad8
其中$resourceGroup
和$clusterName
需替换为实际的资源组名称和AKS集群名称。
验证权限变更
执行以下命令验证权限是否已生效:
kubectl get node
root cause 分析:
在创建azure aks的时候忘记加上--aad-admin-group-object-ids 参数导致,正确的做法应该加上下面的参数。
az aks create --resource-group myResourceGroup --name myManagedCluster --enable-aad --aad-admin-group-object-ids <id> [--aad-tenant-id <id>] --generate-ssh-keys
另外,在使用azure aad 集成身份验证之前,确保你的电脑上安装了kubelogin,并且添加到系统路径中。有关如何安装kubelogin,请参考微软的技术文档。