次の方法で共有


AKS クラスターの起動に関する問題の基本的なトラブルシューティング

この記事では、Microsoft Azure Kubernetes Service (AKS) クラスターを正常に起動できない場合に使用する基本的なトラブルシューティング方法について説明します。

前提条件

  • Azure CLI (バージョン 2.0.59 以降のバージョン)。

  • Kubernetes kubectl ツール。 Azure CLI を使用して kubectl をインストールするには、 az aks install-cli コマンドを実行します。

Azure CLI からエラーを表示する

Azure CLI を使用してクラスターを起動すると、操作が失敗した場合、エラーが出力として記録されます。 コマンド、ユーザー入力、操作の出力が Bash コンソールにどのように表示されるかを次に示します。

$ az aks start --resource-group myResourceGroup --name MyManagedCluster

(VMExtensionProvisioningError) Unable to establish outbound connection from agents, please see https://learn.microsoft.com/en-us/troubleshoot/azure/azure-kubernetes/error-code-outboundconnfailvmextensionerror and https://aka.ms/aks-required-ports-and-addresses for more information.  
Details: instance 3 has extension error details : {vmssCSE error messages : {vmssCSE exit status=50, output=AGE_SHA=sha-16fd35

多くの場合、これらのエラーには、クラスターの開始操作で何が問題が発生したかの詳細な説明が含まれており、詳細を含む記事へのリンクが提供されます。 さらに、Azure CLI 操作で生成されるエラーに基づく参照として、トラブルシューティングの記事を使用できます。

Azure portal でエラーの詳細を表示する

Azure ポータルでエラーの詳細を表示するにはazure アクティビティ ログ確認。 Azure portal でアクティビティ ログの一覧を見つけるには、 Activity ログを検索します。 または、 Notifications (ベル アイコン) を選択し、 アクティビティ ログの [その他のイベント] を選択

Activity ログ ページのログの一覧には、Operation 名列の値に Start Managed Cluster という名前の行エントリが含まれています。 対応する Event initiated by 列の値は、職場または学校アカウントの名前に設定されます。 操作が成功すると、 Status 列の値に Accepted が表示されます。

失敗した開始操作を示す AKS クラスター アクティビティ ログ ブレードのスクリーンショット。

代わりにエラーが発生した場合はどうしますか? その場合、 Start Managed Cluster 操作 Status フィールドに Failed が表示されます。 クラスター コンポーネントを作成する操作とは異なり、ここでは、失敗した操作エントリを展開して、サブ操作エントリを確認する必要があります。 一般的なサブ操作名は、'audit' ポリシー アクション'auditIfNotExists' Policy action. などのポリシー アクションです。一部のサブ操作は、成功したことを引き続き示します。

さらに調査するには、失敗したサブ操作のいずれかを選択します。 サブ操作に関する詳細情報を確認できるように、サイド ウィンドウが開きます。 SummaryJSONChange 履歴などのフィールドの値のトラブルシューティングを行うことができますJSON フィールドには、エラーの出力テキストが JSON 形式で含まれており、通常は最も役立つ情報が提供されます。

開始操作が失敗した理由を示す AKS クラスター アクティビティ ログのサブ操作のサイド ペインのスクリーンショット。

クラスターの分析情報を表示する

クラスター分析情報を生成して、Azure portal の Diagnose と問題の解決 ブレードを使用してトラブルシューティングを行うこともできます。 この機能にアクセスするには、次の手順に従います。

  1. azure portal で、Kubernetes サービスを検索して選択します。

  2. AKS クラスターの名前を選択します。

  3. AKS クラスター ページのナビゲーション ウィンドウで、 Diagnose を選択し、問題を解決します

  4. Diagnose と問題の解決 ページで、クラスター分析情報 リンクを選択します。 クラスター分析情報ツールはクラスターを分析し、その結果の一覧を Cluster Insights ページの Observations and Solutions セクションで提供します。

  5. いずれかの結果を選択して、問題とその考えられる解決策に関する詳細情報を表示します。

Azure portal でリソースを表示する

Azure portal では、クラスターの作成時に作成されたリソースを表示できます。 通常、これらのリソースは、 MC_で始まるリソース グループ内にあります。 マネージド クラスター リソース グループには、 MC_MyResourceGroup_MyManagedCluster_<location-code> などの名前が付いている場合があります。 ただし、カスタムマネージド クラスター リソース グループを使用してクラスターを構築した場合は、名前が異なる場合があります。

リソース グループを見つけるには、Azure portal で リソース グループ を検索して選択し、クラスターが作成されたリソース グループを選択します。 リソース 一覧は、リソース グループの Overview ページに表示されます。

警告

MC_ リソース グループ内のリソースは変更しないことをお勧めします。 このアクションにより、AKS クラスターに望ましくない影響が生じる可能性があります。

仮想マシン スケール セットの状態を確認するには、リソース グループのリソース 一覧でスケール セット名を選択します。 Name aks-nodepool1-12345678-vmssType Virtual マシン スケール セットのような値を持つ場合があります。 スケール セットの状態はノード プールの Overview ページの上部に表示され、詳細は Essentials 見出しに表示されます。 デプロイが失敗した場合、表示される状態は Failed

すべてのリソースについて、詳細を確認して、デプロイが失敗した理由をより深く理解できます。 スケール セットの場合は、 Failed 状態テキストを選択して、エラーに関する詳細を表示できます。 詳細は、 StatusLevel、および Code 列を含む行にあります。 次の例は、列値の行を示しています。

例値
状態 プロビジョニングに失敗しました
Level エラー
コード ProvisioningState/failed/VMExtensionProvisioningError

行を選択すると、 Message フィールドが表示されます。 これには、そのエラーに関するさらに多くの情報が含まれています。 たとえば、例の行の Message フィールドは、次のテキストで始まります。

拡張機能 'vmssCSE' の処理中に VM からエラーが報告されました。 エラー メッセージ: "Enable failed: failed to execute command: command terminated with exit status=50 [stdout] [stderr] 0 0 0 --: Armed with this information, you can terminated with the VM in the scale set failed and generated exit status 50.

Kubectl コマンドを使用する

クラスターのエラーのトラブルシューティングに役立つ別のオプションとして、kubectl コマンドを入力して、クラスターにデプロイされたリソースの詳細を取得します。 kubectl を使用するには、最初に AKS クラスターにサインインします。

az aks get-credentials --resource-group MyResourceGroup --name MyManagedCluster

障害の種類と発生時刻によっては、クラスターにサインインして詳細を取得できない場合があります。 ただし、一般に、クラスターが作成され、Azure portal に表示される場合は、サインインして kubectl コマンドを実行できる必要があります。

クラスター ノードの表示 (kubectl get nodes)

ノードの状態を確認するための詳細を取得するには、 kubectl get nodes コマンドを入力してクラスター ノードを表示します。 この例では、クラスター内のノードは報告されません。

$ kubectl get nodes

No resources found

システム名前空間のポッドを表示する (kubectl get pods)

kube-system 名前空間でポッドを表示することも、問題のトラブルシューティングに適した方法です。 このメソッドを使用すると、Kubernetes システム ポッドの状態を表示できます。 この例では、 kubectl get pods コマンドを入力します。

$ kubectl get pods -n kube-system
NAME                                  READY   STATUS    RESTARTS   AGE
coredns-845757d86-7xjqb               0/1     Pending   0          78m
coredns-autoscaler-5f85dc856b-mxkrj   0/1     Pending   0          77m
konnectivity-agent-67f7f5554f-nsw2g   0/1     Pending   0          77m
konnectivity-agent-8686cb54fd-xlsgk   0/1     Pending   0          65m
metrics-server-6bc97b47f7-dfhbr       0/1     Pending   0          77m

ポッドの状態を記述する (kubectl describe ポッド)

ポッドの状態を記述することで、構成の詳細と、ポッドで発生したすべてのイベントを表示できます。 kubectl describe pod コマンドを実行します。

$ kubectl describe pod coredns-845757d86-7xjqb -n kube-system
Name:                 coredns-845757d86-7xjqb
Namespace:            kube-system
Priority:             2000001000
Priority Class Name:  system-node-critical
Node:                 <none>
Labels:               k8s-app=kube-dns
                      kubernetes.io/cluster-service=true
                      pod-template-hash=845757d86
                      version=v20
...
Events:
  Type     Reason            Age                 From               Message
  ----     ------            ----                ----               -------
  Warning  FailedScheduling  24m (x1 over 25m)   default-scheduler  no nodes available to schedule pods
  Warning  FailedScheduling  29m (x57 over 84m)  default-scheduler  no nodes available to schedule pods

コマンド出力では、使用可能なノードがないため、ポッドをノードにデプロイできないことがわかります。

お問い合わせはこちらから

質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。