編集

次の方法で共有


Arc で有効になっている AKS の AKS ワークロード クラスターで Azure Arc を有効または無効にするときのエラーを解決する

適用対象: AKS on Azure Local、AKS on Windows Server

この記事では、AKS Arc で Enable-AksHciArcConnection および Disable-AksHciArcConnection PowerShell コマンドレットを使用して、AKS ワークロード クラスターを Azure Arc に接続または切断するときに発生する可能性があるエラー (およびその回避策) について説明します。この記事で取り上げられない問題については、「 Arc 対応 Kubernetes のトラブルシューティングを参照してください。

一覧に示されている回避策が適用されない場合はサポートの問題を開くこともできます。

エラー: "'my-aks-cluster' という名前のワークロード クラスターが見つかりませんでした"

このエラーは、ワークロード クラスターを作成していないか、ワークロード クラスターの名前のスペルが間違っていることを意味します。

Get-AksHciCluster を実行して、正しい名前を持っているか、Arc に接続するクラスターが存在することを確認します。

エラー: "System.Management.Automation.RemoteException Starting onboarding process Cluster "azure-arc-onboarding" set..."

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]

この問題を解決するには、下のオプションを確認する必要があります。

  • オプション 1: ワークロード クラスターを削除し、Windows Admin Center を使用してもう一度やり直します。
  • オプション 2: PowerShell で、Get-AksHciCluster コマンドを実行して、クラスターが正常に作成されていることを確認します。次に、Enable-AksHciArcConnection を使用して、クラスターを Arc に接続します。

'Connect-AzAccount' を使用して Azure にサインインすると、'Enable-AksHciArcConnection' が失敗する

Connect-AzAccountを使用して Azure にサインインする場合は、Set-AksHciRegistrationへの入力として指定したサブスクリプションとは異なるサブスクリプションを既定のコンテキストとして設定できます。 Enable-AksHciArcConnectionを実行すると、コマンドはSet-AksHciRegistrationで使用されるサブスクリプションを想定します。 ところが、Enable-AksHciArcConnection には、Connect-AzAccount を使用して設定された既定のサブスクリプションが渡されるため、エラーが発生します。

このエラーを回避するために、下のいずれかのオプションに従ってください。

  • オプション 1: AKS ホストを課金のために Azure に接続するために Set-AksHciRegistration を最初に実行したときに使用したのと同じパラメーター (サブスクリプションとリソース グループ) を指定してこのコマンドを実行し、Azure にログインします。 これにより、Enable-AksHciArcConnection -Name <ClusterName> を既定値で使用でき、クラスターが AKS ホストの課金サブスクリプションとリソース グループの Arc に接続されます。

  • オプション 2: すべてのパラメーター (subscriptionresource grouplocationtenantsecret) を指定して Enable-AksHciArcRegistration を実行して、AKS ホストとは異なるサブスクリプションとリソース グループの Azure Arc にクラスターを接続します。 Azure アカウントを使用してクラスターを Azure Arc に接続するための十分なアクセス許可がない場合 (たとえば、サブスクリプションの所有者でない場合) は、Enable-AksHciArcRegistration も実行する必要があります。

エラー: "条件を待機中にタイムアウトしました"

このエラーは通常、次のいずれかの問題を示しています。

  • クラスターは、仮想化された環境の Azure VM に作成されたか、複数のレベルの仮想化で Azure Local に AKS をデプロイしました。
  • インターネットが遅いとタイムアウトが発生しました。

上記のいずれかのシナリオが該当する場合は、 Disable-AksHciArcConnection を実行して、もう一度接続してみてください。 上記のシナリオが該当しない場合は、AKS on Azure Local のサポートの問題開きます。

エラー: "シークレット "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 の再実行時には、最初に AKS ホストを課金のために Azure に登録したときに使用したのと同じサブスクリプションとリソース グループの詳細情報を使用してください。 別のサブスクリプションまたはリソース グループを使用してこのコマンドを再実行すると、登録されません。 サブスクリプションとリソース グループを 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" already exists"

通常、このエラーは、AKS クラスターを Arc 対応 Kubernetes に既に接続していることを意味します。 接続されたことを確認するには、Azure ポータルに移動しSet-AksHciRegistrationの実行時に指定したサブスクリプションとリソース グループ (既定値を使用した場合) またはEnable-AksHciArcConnection (既定値を使用していない場合) を確認します。 az connectedk8s show Azure CLI コマンドを実行して、AKS on Azure Local クラスターが Azure に接続されているかどうかを確認することもできます。 ワークロード クラスターが表示されない場合は、 Disable-AksHciArcConnection 実行してもう一度やり直してください。

エラー: "autorest/azure: サービスからエラーが返されました。 Status=404 Code="ResourceNotFound"..."

このエラーは、クラスターに関連付けられている Azure Resource Manager リソース connectedCluster が Azure で見つからないことを意味します。

"autorest/azure: サービスからエラーが返されました。 Status=404 Code="ResourceNotFound" Message="リソース グループ 'AKS-HCI2' のリソース 'Microsoft.Kubernetes/connectedClusters/my-workload-cluster' が見つかりませんでした。 詳細については、 https://aka.ms/ARMResourceNotFoundFix"]" を参照してください。

このエラーは次の場合に発生することがあります。

  • Disable-AksHciArcConnection コマンドレットの実行時に正しくないリソース グループまたはサブスクリプションを指定した。
  • Azure portal でリソースを手動で削除した。
  • Azure Resource Manager で Azure リソースが見つかりません。

エラー メッセージに示されているように、このエラーを解決するには、リソースが見つからないエラーの解決に関する記事を参照してください。

エラー: "クラスター アドオン arc アンインストール エラー: 名前空間 "azure-arc" が見つかりません"

このエラーは、通常、ワークロード クラスターから Arc エージェントを既にアンインストールしているか、kubectl コマンドを使用してazure-arc名前空間を手動で削除したことを意味します。

Azure ポータルに移動してリソースがリークしていないことを確認します。 たとえば、サブスクリプションとリソース グループに connectedCluster リソースが表示されないかどうかを確認します。

エラー: "Azure サブスクリプションが正しく構成されていません"

Arc 対応 Kubernetes リソース プロバイダーを使用して Azure サブスクリプションを構成していない場合は、この問題が発生する可能性があります。 現時点では、Microsoft.Kubernetes および Microsoft.KubernetesConfiguration が構成されていることが確認されます。

これらのリソース プロバイダーの有効化の詳細については、「 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