Azure Arc 対応 Kubernetes クラスターのプラットフォームの問題をトラブルシューティングする
このドキュメントでは、Azure Arc 対応 Kubernetes の接続、アクセス許可、エージェントに関する問題のトラブルシューティング ガイドを提供します。 また、Azure Arc 対応 Kubernetes または Azure Kubernetes Service (AKS) クラスターのいずれかで使用できる Azure GitOps のトラブルシューティング ガイドも提供します。
拡張機能 (GitOps (Flux v2)、Azure Monitor Container Insights、Open Service Mesh など) に関連する問題のトラブルシューティングに関するヘルプについては、「Azure Arc 対応 Kubernetes クラスターの拡張機能に関する問題のトラブルシューティング」をご覧ください。
Azure CLI
az connectedk8s
または az k8s-configuration
CLI コマンドを使用する前に、Azure CLI が適切な Azure サブスクリプションに対して機能するように設定されていることをご確認ください。
az account set --subscription 'subscriptionId'
az account show
cli.azext_connectedk8s.custom: Failed to download and install kubectl
などのエラーが表示される場合は、az connectedk8s connect
を再度実行する前に、az aks install-cli --install-location ~/.azure/kubectl-client/kubectl
を実行してください。 このコマンドは、コマンドが動作するために必要な kubectl クライアントをインストールします。
Azure Arc エージェント
Azure Arc 対応 Kubernetes のすべてのエージェントは、azure-arc
名前空間にポッドとしてデプロイされます。 すべてのポッドが実行され、正常性チェックに合格する必要があります。
まず、Azure Arc の Helm グラフ リリースを確認します。
$ helm --namespace default status azure-arc
NAME: azure-arc
LAST DEPLOYED: Fri Apr 3 11:13:10 2020
NAMESPACE: default
STATUS: deployed
REVISION: 5
TEST SUITE: None
Helm グラフ リリースが見つからないか欠落している場合は、もう一度クラスターを Azure Arc に接続してみてください。
Helm グラフ リリースが存在し、STATUS: deployed
の場合は、kubectl
を使用してエージェントの状態を確認します。
$ kubectl -n azure-arc get deployments,pods
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/cluster-metadata-operator 1/1 1 1 3d19h
deployment.apps/clusterconnect-agent 1/1 1 1 3d19h
deployment.apps/clusteridentityoperator 1/1 1 1 3d19h
deployment.apps/config-agent 1/1 1 1 3d19h
deployment.apps/controller-manager 1/1 1 1 3d19h
deployment.apps/extension-events-collector 1/1 1 1 3d19h
deployment.apps/extension-manager 1/1 1 1 3d19h
deployment.apps/flux-logs-agent 1/1 1 1 3d19h
deployment.apps/kube-aad-proxy 1/1 1 1 3d19h
deployment.apps/metrics-agent 1/1 1 1 3d19h
deployment.apps/resource-sync-agent 1/1 1 1 3d19h
NAME READY STATUS RESTARTS AGE
pod/cluster-metadata-operator-74747b975-9phtz 2/2 Running 0 3d19h
pod/clusterconnect-agent-cf4c7849c-88fmf 3/3 Running 0 3d19h
pod/clusteridentityoperator-79bdfd945f-pt2rv 2/2 Running 0 3d19h
pod/config-agent-67bcb94b7c-d67t8 1/2 Running 0 3d19h
pod/controller-manager-559dd48b64-v6rmk 2/2 Running 0 3d19h
pod/extension-events-collector-85f4fbff69-55zmt 2/2 Running 0 3d19h
pod/extension-manager-7c7668446b-69gps 3/3 Running 0 3d19h
pod/flux-logs-agent-fc7c6c959-vgqvm 1/1 Running 0 3d19h
pod/kube-aad-proxy-84d668c44b-j457m 2/2 Running 0 3d19h
pod/metrics-agent-58fb8554df-5ll67 2/2 Running 0 3d19h
pod/resource-sync-agent-dbf5db848-c9lg8 2/2 Running 0 3d19h
すべてのポッドの STATUS
が Running
と示され、READY
列の下に 3/3
または 2/2
のいずれかが表示されます。 ログをフェッチし、Error
または CrashLoopBackOff
を返しているポッドを書き留めます。 これらのポッドのいずれかが Pending
状態で止まっている場合、クラスター ノードにリソースが十分にないことが考えられます。 クラスターをスケールアップすると、これらのポッドを Running
状態に移行させることができます。
リソース のプロビジョニングに失敗しました/サービス のタイムアウト エラー
これらのエラーが表示された場合は、Azure 状態を確認して、Azure Arc 対応 Kubernetes サービスの状態に影響を与えるアクティブなイベントがあるかどうかを確認します。 ある場合は、サービス イベントが解決されるまで待ってから、既存の接続されたクラスター リソースを削除した後にオンボードを再試行してください。 サービス イベントがなく、オンボード中に問題が引き続き発生する場合は、Microsoft が問題を調査できるようにサポート リクエストを開いてください。
超過要求エラー
超過分の要求を受け取った場合は、サービス プリンシパルが、200 を超える Microsoft Entra グループに含まれていないことを確認します。 含まれている場合は、200 を超えるグループのメンバーではない別のサービス プリンシパルを作成して使用するか、一部のグループから元のサービス プリンシパルを削除して、もう一度やり直す必要があります。
送信トラフィックのエンドポイント https://<region>.obo.arc.azure.com:8084/
を許可せずに送信プロキシ環境を構成した場合も、超過分の要求が発生する可能性があります。
これらのいずれにも該当しない場合は、この問題を調査できるように、サポート リクエストを開いてください。
Azure Arc に Kubernetes クラスターを Azure に接続するときの問題
クラスターを Azure Arc に接続するには、Azure サブスクリプションへのアクセスと、ターゲット クラスターへの cluster-admin
アクセスが必要です。 クラスターに接続できない場合、またはアクセス許可が不十分な場合は、クラスターの Azure Arc への接続は失敗します。 クラスターを接続するための前提条件をすべて満たしてください。
ヒント
接続の問題をトラブルシューティングするためのビジュアル ガイドについては、Arc 対応 Kubernetes クラスターの接続問題の診断に関するページをご覧ください。
DNS 解決の問題
クラスターでの DNS 解決に関連する問題のヘルプについては、「DNS 解決のデバッグ」を参照してください。
送信ネットワーク接続の問題
クラスターからの送信ネットワーク接続に関する問題は、さまざまな理由で発生する可能性があります。 まず、すべてのネットワーク要件が満たされていることを確認します。
接続の問題が発生し、クラスターが送信プロキシ サーバーの背後にある場合は、クラスターのオンボード中にプロキシ パラメーターを渡していること、およびプロキシが正しく構成されていることをご確認ください。 詳細については、「送信プロキシ サーバーを使用して接続する」を参照してください。
次のようなエラーが表示される場合があります。
An exception has occurred while trying to execute the cluster diagnostic checks in the cluster. Exception: Unable to pull cluster-diagnostic-checks helm chart from the registry 'mcr.microsoft.com/azurearck8s/helmchart/stable/clusterdiagnosticchecks:0.1.2': Error: failed to do request: Head "https://mcr.microsoft.com/v2/azurearck8s/helmchart/stable/clusterdiagnosticchecks/manifests/0.1.2": dial tcp xx.xx.xx.219:443: i/o timeout
このエラーは、https://k8connecthelm.azureedge.net
エンドポイントがブロックされたときに発生します。 ネットワークがこのエンドポイントへの接続を許可し、他のすべてのネットワーク要件を満たしていることを確認します。
MSI 証明書を取得できない
MSI 証明書の取得に関する問題は、通常、ネットワークの問題が原因です。 すべてのネットワーク要件が満たされていることを確認してから、もう一度やり直してください。
クラスターのアクセス許可が不十分
指定された kubeconfig ファイルに、Azure Arc エージェントをインストールするための十分なアクセス許可がない場合、Azure CLI コマンドから次のエラーが返されます: Error: list: failed to list: secrets is forbidden: User "myuser" cannot list resource "secrets" in API group "" at the cluster scope
この問題を解決するには、クラスターを Azure Arc に接続するユーザーに cluster-admin
ロールが割り当てられていることを確認します。
OpenShift クラスターを Azure Arc に接続できない
OpenShift クラスターを Azure Arc に接続するときに az connectedk8s connect
がタイムアウトして失敗する場合:
OpenShift クラスターがバージョンの前提条件 (4.5.41+ または 4.6.35+ または 4.7.18+) を満たしていることを確認します。
az connectedk8s connnect
を実行する前に、クラスターで次のコマンドを実行します。oc adm policy add-scc-to-user privileged system:serviceaccount:azure-arc:azure-arc-kube-aad-proxy-sa
インストールのタイムアウト
Kubernetes クラスターを Azure Arc 対応 Kubernetes に接続するには、クラスターに Azure Arc エージェントをインストールする必要があります。 クラスターが低速のインターネット接続を介して実行されている場合、エージェントのコンテナー イメージのプルに、Azure CLI のタイムアウトよりも時間がかかることがあります。
Helm タイムアウト エラー
Unable to install helm release: Error: UPGRADE Failed: time out waiting for the condition
のエラーが表示されることがあります。 この問題を解決するには、次の手順を試してください。
次のコマンドを実行します。
kubectl get pods -n azure-arc
clusterconnect-agent
またはconfig-agent
ポッドにcrashloopbackoff
が表示されているかどうか、またはすべてのコンテナーが実行されていないかどうかを確認します。NAME READY STATUS RESTARTS AGE cluster-metadata-operator-664bc5f4d-chgkl 2/2 Running 0 4m14s clusterconnect-agent-7cb8b565c7-wklsh 2/3 CrashLoopBackOff 0 1m15s clusteridentityoperator-76d645d8bf-5qx5c 2/2 Running 0 4m15s config-agent-65d5df564f-lffqm 1/2 CrashLoopBackOff 0 1m14s
azure-identity-certificate
が存在しない場合、システム割り当てマネージド ID はインストールされていません。kubectl get secret -n azure-arc -o yaml | grep name:
name: azure-identity-certificate
この問題を解決するには、
az connectedk8s delete
コマンドを実行して Arc のデプロイを削除し、再インストールしてみてください。 問題が引き続き発生する場合は、プロキシ設定に問題がある可能性があります。 その場合は、プロキシを介してクラスターを Arc に接続するために、プロキシを介したクラスターの Azure Arc への接続を試みてください。 また、すべてのネットワークの前提条件が満たされていることを確認します。clusterconnect-agent
とconfig-agent
ポッドは実行されているが、kube-aad-proxy
ポッドが見つからない場合は、ポッドのセキュリティ ポリシーを調べます。 このポッドで使用されるazure-arc-kube-aad-proxy-sa
サービス アカウントには、管理者アクセス許可はありませんが、ホスト パスをマウントするためのアクセス許可が必要です。kube-aad-proxy
ポッドのContainerCreating
状態が停止している場合は、kube-aad-プロキシ証明書がクラスターにダウンロードされているかどうかを確認します。kubectl get secret -n azure-arc -o yaml | grep name:
name: kube-aad-proxy-certificate
証明書がない場合は、デプロイを削除し、クラスターに別の名前を使用して再オンボードします。 問題が解決しない場合は、サポート リクエストを開きます。
CryptoHash モジュール エラー
Kubernetes クラスターを Azure Arc プラットフォームにオンボードしようとすると、ローカル環境 (クライアント コンソールなど) から次のエラー メッセージが返されることがあります。
Cannot load native module 'Crypto.Hash._MD5'
Azure CLI または Azure PowerShell を使用して拡張機能 connectedk8s
および k8s-configuration
を追加するとき、依存モジュールが正常にダウンロードされない場合があります。 この問題を解決するには、手動で拡張機能を削除してから、ローカル環境で追加します。
拡張機能を削除するには、次を使用します。
az extension remove --name connectedk8s
az extension remove --name k8s-configuration
拡張機能を追加するには、次を使用します。
az extension add --name connectedk8s
az extension add --name k8s-configuration
クラスター接続の問題
クラスターが送信プロキシまたはファイアウォールの内側にある場合は、特にクラスター接続機能で必要な *.servicebus.windows.net
に対して Websocket 接続が有効になっていることを確認します。 さらに、クラスター接続の使用で問題が発生している場合は、connectedk8s
Azure CLI 拡張機能の最新バージョンを使用していることをご確認ください。
clusterconnect-agent
および kube-aad-proxy
ポッドが見つからない場合、クラスター上でクラスター接続機能が無効になっている可能性があります。 その場合、az connectedk8s proxy
はクラスターとのセッションの確立に失敗し、Cannot connect to the hybrid connection because no agent is connected in the target arc resource.
の読み取りでエラーが表示されることがあります
このエラーを解決するには、クラスターでクラスター接続機能を有効にします。
az connectedk8s enable-features --features cluster-connect -n $CLUSTER_NAME -g $RESOURCE_GROUP
詳細については、「クラスター接続を使用して Azure Arc 対応 Kubernetes クラスターに安全に接続する」を参照してください。
サービス プリンシパルを使用してカスタムの場所を有効にする
クラスターを Azure Arc に接続するとき、または既存のクラスターでカスタムの場所を有効にするときに、次の警告が表示される場合があります。
Unable to fetch oid of 'custom-locations' app. Proceeding without enabling the feature. Insufficient privileges to complete the operation.
この警告は、サービス プリンシパルを使用して Azure にログインするときに、サービス プリンシパルに必要なアクセス許可がない場合に発生します。 このエラーを解決するには、次の手順に従います。
ユーザー アカウントを使用して Azure CLI にサインインします。 Azure Arc サービスで使用される Microsoft Entra アプリケーションのオブジェクト ID を取得します。
az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query objectId -o tsv
サービス プリンシパルを使用して Azure CLI にサインインします。 上記の手順の
<objectId>
の値を使用して、クラスターでカスタムの場所を有効にします。- クラスターを Arc に接続するときにカスタムの場所を有効にするには、
az connectedk8s connect -n <cluster-name> -g <resource-group-name> --custom-locations-oid <objectId>
を実行します - 既存の Azure Arc 対応 Kubernetes クラスターでカスタムの場所を有効にするには、
az connectedk8s enable-features -n <cluster-name> -g <resource-group-name> --custom-locations-oid <objectId> --features cluster-connect custom-locations
を実行します
- クラスターを Arc に接続するときにカスタムの場所を有効にするには、
次のステップ
- 接続の問題を診断する方法を視覚的に説明するチュートリアルをご覧ください。
- クラスター拡張機能に関連するトラブルシューティングをご覧ください。