現狀分析
- 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,請參考微軟的技術文檔。