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

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

すべてのポッドの STATUSRunning と示され、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 がタイムアウトして失敗する場合:

  1. OpenShift クラスターがバージョンの前提条件 (4.5.41+ または 4.6.35+ または 4.7.18+) を満たしていることを確認します。

  2. 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 のエラーが表示されることがあります。 この問題を解決するには、次の手順を試してください。

  1. 次のコマンドを実行します。

    kubectl get pods -n azure-arc
    
  2. 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
    
  3. 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 への接続を試みてください。 また、すべてのネットワークの前提条件が満たされていることを確認します。

  4. clusterconnect-agentconfig-agent ポッドは実行されているが、kube-aad-proxy ポッドが見つからない場合は、ポッドのセキュリティ ポリシーを調べます。 このポッドで使用される azure-arc-kube-aad-proxy-sa サービス アカウントには、管理者アクセス許可はありませんが、ホスト パスをマウントするためのアクセス許可が必要です。

  5. 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 にログインするときに、サービス プリンシパルに必要なアクセス許可がない場合に発生します。 このエラーを解決するには、次の手順に従います。

  1. ユーザー アカウントを使用して Azure CLI にサインインします。 Azure Arc サービスで使用される Microsoft Entra アプリケーションのオブジェクト ID を取得します。

    az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query objectId -o tsv
    
  2. サービス プリンシパルを使用して 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 を実行します

次のステップ