解決「az aks 命令叫用」失敗

本文說明如何解決 Microsoft Azure CLI 中的 az aks 命令叫用失敗,讓您可以成功連線到任何 Azure Kubernetes Service (AKS) 叢集,特別是私人 AKS 叢集

其他連接方法需要使用額外的元件,如下表所示。

線上方法 額外的元件
虛擬網路 虛擬專用網 (VPN)
對等互連網路 Azure ExpressRoute
私人端點 Jumpbox

az aks command invoke Azure CLI 命令是連線到不需要額外元件之叢集的替代方式。

當您執行命令時az aks command invoke,Azure CLI 會自動在 命名空間中aks-command建立 command-<ID> Pod,以存取 AKS 叢集並擷取所需的資訊。

必要條件

徵狀

下表列出常見的 az aks command invoke 錯誤訊息。 每個錯誤訊息都有區段的連結,其中描述錯誤發生的原因,以及如何修正錯誤。

錯誤訊息 連結
作業傳回無效的狀態 「找不到」 原因 1:無法建立 Pod,因為節點或資源條件約束
因為 kubernetes 失敗,所以無法在 Managed 叢集中執行命令。 詳細數據:許可 Webhook「validation.gatekeeper.sh」拒絕要求: <原則特定訊息> 原因 2:Azure 原則 不允許建立 Pod
來自伺服器的錯誤 (禁止) :禁止命名空間:使用者「<標識>符」無法在叢集範圍的 API 群組 “” 中列出資源“<資源>” 原因 3:未授與必要角色
無法連線到 MSI。 請確定 MSI 已正確設定。

傳回令牌要求:回應 [400];
原因 4:發生 Cloud Shell 問題

原因 1:無法建立 Pod,因為節點或資源條件約束

作業會傳 Not Found 回狀態, command-<ID> 因為 Pod 無法達到成功狀態,例如 Running。 (在許多情況下,Pod 會保持在 Pending 狀態。) 在此情況下,節點無法排程 Pod。 此案例可能有不同的原因,例如下列原因:

  • 資源條件約束
  • 具有 或 SchedulingDisabled 狀態的NotReady節點
  • 具有 Pod 無法容許之範本的節點
  • 其他原因

解決方案 1:變更組態,讓您可以排程和執行 Pod

請確定 command-<ID> Pod可以排程並執行。

原因 2:Azure 原則 不允許建立 Pod

如果您有特定的 Azure 原則, az aks command invoke 命令可能會因為 Pod 中不允許的 command-<ID> 設定而失敗。 例如,您可能有需要只讀根文件系統或其他特定組態的 Azure 原則。

解決方案 2:豁免禁止建立 Pod 之原則的命名空間

我們建議您針對不允許建立 Pod 的相關聯 Azure 原則豁免 aks-command 命名空間。 如需豁免的詳細資訊,請參閱瞭解 Azure 原則

若要豁免 Azure 原則:

  1. Azure 入口網站 中,搜尋並選取 [原則]

  2. 在 [ 原則 ] 瀏覽窗格中,找出 [ 撰寫 ] 區段,然後選取 [ 指派]

  3. 在工作分派數據表中,尋找包含您要變更之指 派名稱 的數據列,然後選取工作分派的名稱。

  4. 在該指派的原則指派頁面中,選取 [ 編輯指派]

  5. 選取 [ 參數] 索引標籤

  6. 清除 [僅顯示需要輸入或檢閱的參數 ] 選項。

  7. 在 [ 命名空間排除 專案] 方塊中,將 aks-command 命名空間新增至要排除的命名空間清單。

或者,如果原則不是內建原則,您可以檢查 Pod 的 command-<ID> 設定,並視需要調整原則。 若要探索 Pod 的 YAML 設定,請執行下列命令:

kubectl get pods command-<ID> --namespace aks-command --output yaml

原因 3:未授與必要角色

若要使用 命令 az aks command invoke ,您必須能夠存取叢集上的下列角色:

  • Microsoft.ContainerService/managedClusters/runCommand/action
  • Microsoft.ContainerService/managedClusters/commandResults/read

如果您沒有這些角色, az aks command invoke 命令就無法擷取所需的資訊。

解決方案3:新增必要角色

新增和 Microsoft.ContainerService/managedClusters/runCommand/actionMicrosoft.ContainerService/managedClusters/commandResults/read 角色。

原因 4:發生 Cloud Shell 問題

直接az aks command invokeAzure Cloud Shell 環境中執行命令時,不會如預期般處理命令。 這是 Cloud Shell 中的已知問題。

解決方案 4a:先執行 az login 命令

在 Cloud Shell 中,執行 az login 命令,然後再執行 az aks command invoke

解決方案 4b:在本機電腦或虛擬機上執行命令

az aks command invoke 已安裝 Azure CLI 的本機電腦或任何虛擬機 (VM) 上執行命令。

協力廠商資訊免責聲明

本文提及的協力廠商產品是由與 Microsoft 無關的獨立廠商所製造。 Microsoft 不以默示或其他方式,提供與這些產品的效能或可靠性有關的擔保。

與我們連絡,以取得說明

如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以將產品意見反應提交給 Azure 意應見反社群