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://video2.skills-academy.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 portalのエラーの詳細を表示するには、Azure アクティビティ ログを調べます。 Azure portalでアクティビティ ログの一覧を見つけるには、アクティビティ ログを検索します。 または、[ 通知 ] (ベル アイコン) を選択し、 アクティビティ ログで [その他のイベント] を選択します。
[アクティビティ ログ] ページのログの一覧には、[操作名] 列の値が [マネージド クラスターの開始] という名前の行エントリが含まれています。 列値 によって開始される 対応するイベントは、職場または学校アカウントの名前に設定されます。 操作が成功した場合は、[ 状態] 列の値に [Accepted]\(受け入れ済み\) と表示されます。
代わりにエラーが発生した場合はどうすればよいですか? その場合、[ マネージド クラスターの開始 ] 操作 の [状態] フィールドに [失敗] と表示されます。 クラスター コンポーネントを作成する操作とは異なり、ここでは、失敗した操作エントリを展開して、サブ操作エントリを確認する必要があります。 一般的なサブ操作名は、"監査" ポリシー アクションや 'auditIfNotExists' ポリシー アクションなどのポリシー アクションです。一部のサブ操作は、成功したことを示し続けます。
さらに調査するには、失敗したサブ操作のいずれかを選択します。 サイド ウィンドウが開き、サブ操作に関する詳細情報を確認できます。 [概要]、[JSON]、[変更履歴] などのフィールドの値のトラブルシューティングを行うことができます。 JSON フィールドには、エラーの出力テキストが JSON 形式で含まれており、通常、最も役立つ情報が提供されます。
クラスター分析情報を表示する
クラスター分析情報を生成して、Azure portalの [問題の診断と解決] ブレードを使用してトラブルシューティングを行うこともできます。 この機能にアクセスするには、次の手順に従います。
Azure portalで、Kubernetes サービスを検索して選択します。
AKS クラスターの名前を選択します。
AKS クラスター ページのナビゲーション ウィンドウで、[ 問題の診断と解決] を選択します。
[ 問題の診断と解決 ] ページで、[ クラスター分析情報 ] リンクを選択します。 クラスター分析情報ツールはクラスターを分析し、[Cluster Insights] ページの [監視とソリューション] セクションでその結果の一覧を提供します。
いずれかの結果を選択して、問題とその考えられる解決策に関する詳細情報を表示します。
Azure portalでリソースを表示する
Azure portalでは、クラスターの作成時に作成されたリソースを表示できます。 通常、これらのリソースは、MC_で始まるリソース グループ内 にあります。 マネージド クラスター リソース グループには、 MC_MyResourceGroup_MyManagedCluster_<location-code> などの名前が付く場合があります。 ただし、カスタムマネージド クラスター リソース グループを使用してクラスターを構築した場合、名前が異なる場合があります。
リソース グループを見つけるには、Azure portalで [リソース グループ] を検索して選択し、クラスターが作成されたリソース グループを選択します。 リソース リストは、リソース グループの [概要 ] ページに表示されます。
警告
MC_ リソース グループ内のリソースは変更しないことをお勧めします。 このアクションにより、AKS クラスターに望ましくない影響が生じる可能性があります。
仮想マシン スケール セットの状態を確認するには、リソース グループのリソース リスト内でスケール セット名を選択します。 aks-nodepool1-12345678-vmss に似た名前と、仮想マシン スケール セットの Type 値がある場合があります。 スケール セットの状態はノード プールの [概要] ページの上部に表示され、詳細は Essentials 見出しに表示されます。 デプロイが失敗した場合、表示される状態は [失敗] です。
すべてのリソースについて、詳細を確認して、デプロイが失敗した理由をよりよく理解できます。 スケール セットの場合は、[ 失敗した 状態] テキストを選択して、エラーの詳細を表示できます。 詳細は、 Status、 Level、 および Code 列を含む行にあります。 次の例は、列値の行を示しています。
Column | 値の例 |
---|---|
状態 | プロビジョニングに失敗しました |
レベル | Error |
コード | ProvisioningState/failed/VMExtensionProvisioningError |
行を選択すると、[ メッセージ ] フィールドが表示されます。 これには、そのエラーに関するさらに詳細な情報が含まれています。 たとえば、例の行の [メッセージ ] フィールドは、次のテキストで始まります。
拡張機能 'vmssCSE' を処理するときに、VM によってエラーが報告されました。 エラー メッセージ: "Enable failed: failed to execute command: exit status=50 [stdout] [stderr] [stderr] 0 0 0 --: この情報で終了したコマンドは、スケール セット内の VM が失敗し、終了状態 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 pod)
ポッドの状態を記述することで、構成の詳細と、ポッドで発生したすべてのイベントを表示できます。 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 フィードバック コミュニティに製品フィードバックを送信することもできます。