編輯

共用方式為


解決在 Arc 所啟用 AKS 的 AKS 工作負載叢集上啟用或停用 Azure Arc 時發生錯誤

適用於:Azure 本機上的 AKS、Windows Server 上的 AKS

本文說明您在使用 PowerShell Cmdlet 和 AKS Arc 中的 PowerShell Cmdlet Enable-AksHciArcConnection Disable-AksHciArcConnection 將 AKS 工作負載叢集連線或中斷連線時可能會遇到的錯誤(及其因應措施)。如需本文未涵蓋的問題,請參閱 針對已啟用Arc的 Kubernetes 進行疑難解答。

如果沒有列出的因應措施適用於您,您也可以 開啟支持問題

錯誤:「找不到名稱為 『my-aks-cluster』 的工作負載叢集」

此錯誤表示您尚未建立工作負載叢集,或拼錯了工作負載叢集的名稱。

執行 Get-AksHciCluster 以確保您擁有正確的名稱,或您想要連線到 Arc 的叢集存在。

錯誤:「System.Management.Automation.RemoteException 開始上線進程叢集 「azure-arc-onboarding」設定...

當您使用 Windows Admin Center 建立工作負載叢集,並將其連線至已啟用 Arc 的 Kubernetes 時,可能會發生下列錯誤:

System.Management.Automation.RemoteException Starting onboarding process Cluster "azure-arc-onboarding" set. User "azure-arc-onboarding" set. Context "azure-arc-onboarding" created. Switched to context "azure-arc-onboarding". Azure login az login: error: argument --password/-p: expected one argument usage: az login [-h] [--verbose] [--debug] [--only-show-errors] [--output {json,jsonc,yaml,yamlc,table,tsv,none}] [--query JMESPATH] [--username USERNAME] [--password PASSWORD] [--service-principal] [--tenant TENANT] [--allow-no-subscriptions] [-i] [--use-device-code] [--use-cert-sn-issuer] : Job Failed Condition]

若要解決此問題,請檢閱下列選項:

如果 'Connect-AzAccount' 用來登入 Azure,'Enable-AksHciArcConnection' 會失敗

當您使用 Connect-AzAccount 登入 Azure 時,可能會將不同的訂用帳戶設定為預設內容,而不是您提供做為 輸入的訂 Set-AksHciRegistration用帳戶。 當您接著執行 Enable-AksHciArcConnection時,命令會預期 中使用的 Set-AksHciRegistration訂用帳戶。 不過, Enable-AksHciArcConnection 使用 取得預設訂用 Connect-AzAccount帳戶集,因此可能會導致錯誤。

若要避免此錯誤,請遵循下列其中一個選項:

  • 選項 1:執行 Set-AksHciRegistration 以使用您第一次執行 命令將 AKS 主機連線至 Azure 以進行計費時所使用的相同參數(訂用帳戶和資源群組)登入 Azure。 接著,您可以搭配預設值使用 Enable-AksHciArcConnection -Name <ClusterName> ,而您的叢集將會連線到 AKS 主機計費訂用帳戶和資源群組下的 Arc。

  • 選項 2:以 Enable-AksHciArcRegistration 與 AKS 主機不同的訂用帳戶和資源群組下,使用所有參數 、 subscriptionresource grouplocationtenantsecret來執行,將您的叢集連線到 Azure Arc。 如果您沒有足夠的許可權可以使用您的 Azure 帳戶將叢集連線到 Azure Arc,則也應該執行 Enable-AksHciArcRegistration (例如,如果您不是訂用帳戶擁有者)。

錯誤:「等待條件逾時」

此錯誤通常指向下列其中一個問題:

  • 叢集是在虛擬化環境中的 Azure VM 中建立的,或您在多個虛擬化層級上部署了 Azure Local 上的 AKS。
  • 因特網緩慢導致逾時。

如果上述其中一個案例適用於您,請執行 Disable-AksHciArcConnection,然後再試一次連線。 如果上述案例不適用於您, 請針對 Azure 本機上的 AKS 開啟支持問題

錯誤:「找不到秘密 “sh.helm.release.v1.azure-arc.v1”

此錯誤表示無法連線到您的 Kubernetes API 伺服器。

請嘗試再次執行Disable-AksHciArcConnection命令,然後移至 Azure 入口網站 以確認您的connectedCluster資源已實際刪除。 您也可以執行 kubectl get ns -A 以確認您的叢集上不存在命名空間 azure-arc

錯誤:「連線至 Azure 失敗。 請執行 'Set-AksHciRegistration',然後再試一次」

此錯誤表示您對 Azure 的登入認證已過期。

使用 再次執行Enable-AksHciArcConnection命令之前,先Set-AksHciRegistration登入 Azure。 重新執行 Set-AksHciRegistration時,請務必使用您第一次向 Azure 註冊 AKS 主機以進行計費時所使用的相同訂用帳戶和資源群組詳細數據。 如果您使用不同的訂用帳戶或資源群組重新執行命令,則不會註冊它們。 在 中 Set-AksHciRegistration設定訂用帳戶和資源群組之後,就無法在卸載 AKS Arc 的情況下加以變更。

錯誤:「『My-Cluster』 不是有效的叢集名稱。 名稱必須是小寫,且符合正則表達式模式:'^[a-z0-9][a-z0-9-]*[a-z0-9]$'”

此錯誤表示工作負載叢集未遵循 Kubernetes 命名慣例。

如錯誤所示,請確定叢集名稱為小寫,並符合正則表達式模式:'^[a-z0-9][a-z0-9-]*[a-z0-9]$'。

錯誤:「addons.msft.microsoft “demo-arc-onboarding” 已經存在」

此錯誤通常表示您已將 AKS 叢集連線到已啟用 Arc 的 Kubernetes。 若要確認已連線,請移至 Azure 入口網站,然後在您執行Set-AksHciRegistration時提供的訂用帳戶和資源群組下檢查(如果您使用預設值),或 Enable-AksHciArcConnection (如果您未使用預設值)。 您也可以執行 az connectedk8s show Azure CLI 命令,確認 Azure 本機叢集上的 AKS 是否已連線到 Azure。 如果您沒有看到工作負載叢集,請執行 Disable-AksHciArcConnection 並再試一次。

錯誤:「autorest/azure:服務傳回錯誤。 Status=404 Code=“ResourceNotFound”...”

此錯誤表示 Azure 找不到 connectedCluster 與您的叢集相關聯的 Azure Resource Manager 資源:

「autorest/azure:服務傳回錯誤。 Status=404 Code=“ResourceNotFound” Message=“找不到資源群組 'AKS-HCI2' 下的資源 'Microsoft.Kubernetes/connectedClusters/my-workload-cluster'。 如需詳細資訊,請移至 https://aka.ms/ARMResourceNotFoundFix"]”

如果您在下列狀況下遇到此錯誤:

  • 在執行 Cmdlet 時 Disable-AksHciArcConnection ,您提供了不正確的資源群組或訂用帳戶。
  • 您手動刪除 Azure 入口網站 上的資源。
  • Azure Resource Manager 找不到您的 Azure 資源。

若要解決此錯誤,如錯誤訊息中所述,請參閱 解決找不到資源的錯誤

錯誤:「找不到叢集附加元件 arc 卸載錯誤:找不到命名空間 “azure-arc”

此錯誤通常表示您已經從工作負載叢集卸載 Arc 代理程式,或使用 命令手動刪除 azure-arc 命名空間 kubectl

移至 Azure 入口網站,確認您沒有任何流失的資源。 例如,請確認您看不到 connectedCluster 訂用帳戶和資源群組中的資源。

錯誤:「未正確設定 Azure 訂用帳戶」

如果您尚未使用已啟用 Arc 的 Kubernetes 資源提供者來設定 Azure 訂用帳戶,可能會遇到此問題。 我們目前會檢查 和 Microsoft.KubernetesConfiguration 是否已Microsoft.Kubernetes設定。

如需啟用這些資源提供者的詳細資訊,請參閱 註冊已啟用Arc的 Kubernetes 提供者。

錯誤:「無法在 'azure-arc' 命名空間中讀取 ConfigMap 'azure-clusterconfig'

在停用現有連線之後,嘗試在 AKS 叢集上重新啟用 Arc 連線時,可能會遇到此問題。 錯誤是因為變更儲存 Azure Arc 秘密的命名空間。

導致錯誤的步驟如下:

  1. 使用 Enable-AksHciArcConnection -name $clusterName將工作負載叢集連線至 Azure Arc。
  2. 中斷叢集與 Azure Arc 的連線: Disable-AksHciArcConnection -name $clusterName
  3. 再次使用此命令將工作負載叢集連線至 Azure Arc: Enable-AksHciArcConnection -name $clusterName

錯誤是:

returned a non zero exit code 1 [Error: Job azure-arc-onboarding terminated with Failed to run CLI command: Error from server (NotFound): namespaces "azure-arc"
not found
System.Management.Automation.RemoteException
ERROR: Unable to read ConfigMap 'azure-clusterconfig' in 'azure-arc' namespace:
Error Response: {"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"configmaps \"azure-clusterconfig\" not
found","reason":"NotFound","details":{"name":"azure-clusterconfig","kind":"configmaps"},"code":404}
System.Management.Automation.RemoteException
System.Management.Automation.RemoteException
: Job Failed Condition

Enable-AksHciArcConnection 一律會失敗,而且在您執行 Disable-AksHciArcConnection之後,azure-arc-release 命名空間中有剩餘的秘密。 若要檢查秘密是否存在,您可以執行下列命令,並確定未列出任何秘密:

kubectl get secret -nazure-arc-release sh.helm.release.v1.azure-arc.v1

若要解決此問題,請在執行 Disable-AksHciArcConnection之後刪除 azure-arc-release 命名空間:

$clusterName = "<name of cluster>"
Get-AksHciCredential -name $clusterName
kubectl delete namespace azure-arc-release
Disable-AksHciArcConnection -name $clusterName
Enable-AksHciArcConnection -name $clusterName