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 が表示されます。
代わりにエラーが発生した場合はどうしますか? その場合、 Start Managed Cluster 操作 Status フィールドに Failed が表示されます。 クラスター コンポーネントを作成する操作とは異なり、ここでは、失敗した操作エントリを展開して、サブ操作エントリを確認する必要があります。 一般的なサブ操作名は、'audit' ポリシー アクション'auditIfNotExists' Policy action. などのポリシー アクションです。一部のサブ操作は、成功したことを引き続き示します。
さらに調査するには、失敗したサブ操作のいずれかを選択します。 サブ操作に関する詳細情報を確認できるように、サイド ウィンドウが開きます。 Summary、JSON、Change 履歴などのフィールドの値のトラブルシューティングを行うことができます。 JSON フィールドには、エラーの出力テキストが JSON 形式で含まれており、通常は最も役立つ情報が提供されます。
クラスターの分析情報を表示する
クラスター分析情報を生成して、Azure portal の Diagnose と問題の解決 ブレードを使用してトラブルシューティングを行うこともできます。 この機能にアクセスするには、次の手順に従います。
AKS クラスターの名前を選択します。
AKS クラスター ページのナビゲーション ウィンドウで、 Diagnose を選択し、問題を解決します。
Diagnose と問題の解決 ページで、クラスター分析情報 リンクを選択します。 クラスター分析情報ツールはクラスターを分析し、その結果の一覧を Cluster Insights ページの Observations and Solutions セクションで提供します。
いずれかの結果を選択して、問題とその考えられる解決策に関する詳細情報を表示します。
Azure portal でリソースを表示する
Azure portal では、クラスターの作成時に作成されたリソースを表示できます。 通常、これらのリソースは、 MC_で始まるリソース グループ内にあります。 マネージド クラスター リソース グループには、 MC_MyResourceGroup_MyManagedCluster_<location-code> などの名前が付いている場合があります。 ただし、カスタムマネージド クラスター リソース グループを使用してクラスターを構築した場合は、名前が異なる場合があります。
リソース グループを見つけるには、Azure portal で リソース グループ を検索して選択し、クラスターが作成されたリソース グループを選択します。 リソース 一覧は、リソース グループの Overview ページに表示されます。
警告
MC_ リソース グループ内のリソースは変更しないことをお勧めします。 このアクションにより、AKS クラスターに望ましくない影響が生じる可能性があります。
仮想マシン スケール セットの状態を確認するには、リソース グループのリソース 一覧でスケール セット名を選択します。 Name aks-nodepool1-12345678-vmss と Type Virtual マシン スケール セットのような値を持つ場合があります。 スケール セットの状態はノード プールの Overview ページの上部に表示され、詳細は Essentials 見出しに表示されます。 デプロイが失敗した場合、表示される状態は Failed。
すべてのリソースについて、詳細を確認して、デプロイが失敗した理由をより深く理解できます。 スケール セットの場合は、 Failed 状態テキストを選択して、エラーに関する詳細を表示できます。 詳細は、 Status、 Level、および 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 フィードバック コミュニティに製品フィードバックを送信することもできます。