Share via


クラスターまたはノードAzure Kubernetes Service失敗状態のトラブルシューティング

この記事では、失敗した状態になった Microsoft Azure Kubernetes Service (AKS) クラスターまたはノードのトラブルシューティング方法について説明します。

一般的な原因

失敗したクラスターまたはノード プールの一般的な原因を次に示します。

原因 リファレンス
カスタム スクリプト拡張機能 (CSE) 仮想マシン (VM) 拡張機能のプロビジョニング エラー CSE エラーによって発生したノードの準備ができていないエラーのトラブルシューティング
主要な Azure リソースが使用できない
ゾーン/リージョン容量がないための VM 割り当てエラー
コア クォータの超過による VM 割り当てエラー Quotaexceededed エラー
お客様が課した制限
ワークロードの問題

クラスター/ノードが失敗する一般的なエラーの基本的なトラブルシューティング

次の表は、クラスターまたはノードが失敗状態になる原因となる一般的なエラー、その説明、およびこれらのエラーを解決するための基本的なトラブルシューティング方法の概要を示しています。

エラー 説明 トラブルシューティング方法
OutboundConnFailVMExtensionError このエラーは、送信接続がないために VM 拡張機能のインストールまたは更新が失敗したことを示します。 VM または VM スケール セットのネットワーク セキュリティ グループ (NSG) 規則とファイアウォール設定を確認します。 VM または VM スケール セットが、および https://aka.ms/aks/containerinsightsのエンドポイントhttps://aka.ms/aks/agenthttps://aka.ms/aks/outboundhttps://aka.ms/aks/sshにアクセスできることを確認します。
ドレイン エラー このエラーは、アップグレード操作の前にノードがドレインに失敗したことを示します。 kubectl コマンド kubectl get pods --all-namespaces -o wide と を使用して、ノードのポッドの状態とイベントを kubectl describe pod <pod-name> -n <namespace>確認します。 終了または不明な状態でスタックしているポッド、またはイベントにエラーや警告があるポッドを探します。 ポッドを強制的に削除するか、ノード上の kubelet サービスを再起動する必要がある場合があります。
SubscriptionNotRegistered エラー このエラーは、AKS リソース プロバイダーを使用するためにサブスクリプションが登録されていないことを示します。 コマンドを使用してサブスクリプションを az provider register --namespace Microsoft.ContainerService 登録します。
RequestDisallowedByPolicy エラー このエラーは、サブスクリプションまたはリソース グループに適用されたポリシーによって操作がブロックされていることを示します。 ポリシーの詳細とポリシー割り当てのスコープを確認します。 操作を許可するには、ポリシーを変更または除外する必要がある場合があります。
QuotaExceeded エラー このエラーは、操作がリソースの種類またはリージョンのクォータ制限を超えていることを示します。 Azure portal、Azure CLI、またはAzure PowerShellを使用して、リソースの種類またはリージョンの現在のクォータ使用量とクォータ制限を確認します。 未使用のリソースを削除したり、クォータの引き上げを要求したりする必要がある場合があります。
PublicIPCountLimitReached エラー このエラーは、操作がサブスクリプションまたはリージョンに作成できるパブリック IP アドレスの最大数に達したことを示します。 Azure portal、Azure CLI、またはAzure PowerShellを使用して、サブスクリプションまたはリージョンの現在のパブリック IP アドレスの使用状況と制限を確認します。 未使用のパブリック IP アドレスの一部を削除するか、パブリック IP アドレスの制限の引き上げを要求する必要がある場合があります。
overconstrainedAllocationRequest エラー このエラーは、操作がリージョンに要求された VM サイズを割り当てに失敗したことを示します。 Azure portal、Azure CLI、またはAzure PowerShellを使用して、リージョン内の VM サイズの可用性を確認します。 別の VM サイズまたは別のリージョンを選択する必要がある場合があります。
ReadOnlyDisabledSubscription エラー このエラーは、サブスクリプションが現在無効になっており、読み取り専用に設定されていることを示します。 サブスクリプションのアクセス許可を確認し、調整します。これは、課金の問題、期限切れのクレジット、またはポリシー違反が原因でサブスクリプションが中断されている可能性があるためです。

クラスター/ノードが失敗する原因となるその他の考えられる問題の基本的なトラブルシューティング

この表では、クラスターまたはノードが障害状態になる可能性があるその他の問題、その説明、およびこれらの問題を解決するための解決策について説明します。

問題 説明 解決方法
サブネットのサイズが小さすぎます サブネットに必要なノード数に対応できる十分な領域がないため、この操作ではクラスターを作成または更新できません。 ノード プールを削除し、Azure portal、Azure CLI、またはAzure PowerShellを使用して、サブネット サイズが大きい新しいプールを作成します。
仮想ネットワークがブロックされている ファイアウォールまたはカスタム ドメイン ネーム システム (DNS) 設定によってノードからの送信接続がブロックされるため、この操作はクラスター API サーバーまたは Kubernetes コントロール プレーンと通信できません。 ファイアウォールでノードのトラフィックを許可し、Azure portal、Azure CLI、またはAzure PowerShellを使用して Azure に DNS 解決を設定します。
PDB の問題 PDB が 1 つ以上のポッドの削除を停止したため、操作でクラスターを更新できません。 PDB は、特定の期間中に自発的に終了できるポッドの数を制限するリソースです。 PDB を一時的に削除し、クラスターを調整してから、kubectl コマンド ライン ツールを使用して PDB をもう一度追加します。
インフラストラクチャの問題 Azure のリソースを管理する Azure Resource Manager (ARM) サービスに関する内部的な問題のため、この操作でクラスターを更新できません。 Azure CLI または Azure PowerShellを使用して、ノード プールごとにエージェント プールの調整を行い、マネージド クラスターの調整を行います。
API サーバーエラー 停止またはバグのため、操作がクラスター API サーバーまたは Kubernetes コントロール プレーンに到達できません。 AKS サポート チームに報告し、関連するログと診断情報を提供します。 ログと診断情報は、Azure portal、Azure CLI、またはAzure PowerShellを使用して取得できます。

注:

  • 前の表で説明した操作は、顧客側からトリガーされた更新 (PUT) 操作を参照します。
  • Kubernetes には、コントローラー内にコンポーネントがあります。 これにより、クラスターの状態や、Kubelet のコンテナーの実行やクラウド プロバイダーのロード バランサーなどの外部状態など、実際の状態が保証されます。 これは、オブジェクトで指定された目的の状態に合わせて調整されます。 この配置プロセスは、コントローラーの重要な機能です。 AKS の場合、このコンポーネントにより、AKS クラスターの状態が目的の構成と一致します。 手動でトリガーするには、 を実行 az resource update --ids <AKS cluster id>します。 を実行 az aks show -n <cluster name> -g <cluster resource group> -o json --query idすると、AKS クラスター ID を取得できます。 実際の状態と目的の状態に違いがある場合は、これらの不一致を修正するために必要なアクションを実行します。

プロビジョニング状態チェック

クラスターの状態をチェックするには、[プロビジョニング状態チェック] を選択します。 次に、クラスターとエージェント プールのプロビジョニング状態が表示されます。

[プロビジョニング状態チェック] オプションを示すスクリーンショット。

シナリオ 1: クラスターが失敗した状態である

この問題を解決するには、エラーの原因となる操作を取得し、エラーを把握します。 クラスターが失敗する可能性がある 2 つの一般的な操作エラーを次に示します。

  • クラスターの作成に失敗しました
  • クラスターのアップグレードに失敗しました

最近作成またはアップグレードされたクラスターが失敗した状態の場合は、次の方法を使用してエラーのトラブルシューティングを行います。

Azure portalを使用して失敗したクラスターのアクティビティ ログを表示する

Azure portalから失敗したクラスターのアクティビティ ログを表示するには、次の手順に従います。

  1. Azure portalで、[リソース グループ] ページに移動し、クラスターを含むリソース グループを選択します。

  2. [ 概要 ] ページで、リソースの一覧からクラスター名を選択します。

  3. クラスター ページで、左側のメニューから [アクティビティ ログ ] を選択します。

  4. [ アクティビティ ログ ] ページでは、[ 状態]、[ Timespan]、[ イベントによって開始されたイベント]、および [ イベント] カテゴリでイベントをフィルター処理できます。 たとえば、[状態] ドロップダウン リストから [失敗] を選択すると、失敗したイベントのみが表示されます。

    [アクティビティ ログ] ページでイベントをフィルター処理する方法を示すスクリーンショット。

  5. イベントの詳細をチェックするには、一覧からイベント名を選択します。 新しいウィンドウが開き、イベントの概要、プロパティ、および JSON データが表示されます。 JSON データをファイルとしてダウンロードすることもできます。

  6. イベントに関連付けられているエラー コードとメッセージをチェックするには、イベントの概要の [状態] セクションまで下にスクロールします。 エラー情報は、プロパティと JSON データ セクションでも確認できます。

Azure CLI を使用して失敗したクラスターのアクティビティ ログを表示する

Azure CLI を使用して、失敗したクラスターのアクティビティ ログを表示する場合は、次の手順に従います。

  1. マシンに Azure CLI をインストールし、Azure アカウントでログインします。

  2. コマンドを使用してサブスクリプション内のリソース グループを az group list 一覧表示し、クラスターを含むリソース グループの名前を見つけます。

  3. パラメーターを指定して コマンドを使用して az resource list リソース グループ内のリソースを --resource-group 一覧表示し、クラスターの名前を見つけます。

  4. コマンドと パラメーターを使用して、クラスターのaz monitor activity-log listアクティビティ ログを--resource-group--resource一覧表示します。 、および パラメーターを--status--caller--start-time--end-time使用して、--filterさまざまな条件でイベントをフィルター処理することもできます。 たとえば、 を使用 --status Failed して、失敗したイベントのみを表示できます。

  5. 、、および パラメーターを指定したコマンドをaz monitor activity-log show使用して、特定のイベントの--resource-group--resource詳細を--event-id表示します。 イベント ID は、前のコマンドの出力から確認できます。 出力には、イベントの概要、プロパティ、JSON データが含まれます。 パラメーターを --output 使用して出力形式を変更することもできます。

  6. イベントに関連付けられているエラー コードとメッセージを表示するには、コマンド出力で フィールドを探 statusMessage します。 エラー情報は、プロパティと JSON データ セクションでも確認できます。

    JSON データを示すスクリーンショット。

障害が発生したクラスターの AKS の問題の診断と解決機能を使用する

Azure portalで、AKS クラスター リソースに移動し、左側のメニューから [問題の診断と解決] を選択します。 診断チェックを実行し、推奨されるソリューションを取得するために選択できるカテゴリとシナリオの一覧が表示されます。

Azure CLI で、 パラメーターと --resource-group パラメーターを指定して コマンドをaz aks collect--name使用して、クラスター ノードから診断データを収集します。 および --sas-token パラメーターを--storage-account使用して、データをアップロードする Azure Storage アカウントを指定することもできます。 出力には、[ 問題の診断と解決 ] ブレードへのリンクが含まれており、結果と推奨されるアクションを表示できます。

[ 問題の診断と解決 ] ブレードで、カテゴリとして [クラスターの問題 ] を選択できます。 問題が検出された場合は、解決できる解決策の一覧が表示されます。

[問題の診断と解決] ポータルで考えられる解決策を示すスクリーンショット。

シナリオ 2: ノードが失敗状態である

まれに、Azure Disk デタッチ操作が部分的に失敗し、ノード VM が失敗状態になる場合があります。

この問題を解決するには、次のいずれかの方法を使用して VM の状態を手動で更新します。

  • 可用性セットに基づくクラスターの場合は、次の az vm update コマンドを実行します。

    az vm update --resource-group <resource-group-name> --name <vm-name>
    
  • VM スケール セットに基づくクラスターの場合は、次の az vmss update-instances コマンドを 実行します。

    az vmss update-instances --resource-group <resource-group-name> --name <scale-set-name> --instance-id <vm-or-scale-set-id>
    

シナリオ 3: ノード プールが失敗状態である

この問題は、ノード プールをバックアップする VM スケール セットまたは可用性セットで、プロビジョニング、スケーリング、または更新中にエラーが発生した場合に発生する可能性があります。 この問題は、容量不足、クォータ制限、ネットワークの問題、ポリシー違反、リソース ロック、または VM が適切に割り当てまたは構成されないその他の要因が原因である可能性があります。

この問題をトラブルシューティングするには、次の手順に従います。

  1. コマンドを使用してノード プールの状態を az aks nodepool show 確認します。 プロビジョニング状態が の場合は Failed、エラー メッセージとコードが出力に表示されます。
  2. または az vm availability-set show コマンドを使用して、VM スケール セットまたは可用性セットの状態をaz vmss show確認します。 プロビジョニング状態が の場合は Failed、エラー メッセージとコードが出力に表示されます。
  3. または az vm list コマンドを使用して、ノード プール内の個々の VM の状態をaz vmss list-instances確認します。 いずれかの VM がまたは Unhealthy 状態のFailed場合は、エラー メッセージとコードが出力に表示されます。
  4. VM スケール セットまたは可用性セットのアクティビティ ログと診断設定を確認して、エラーの原因を示すイベントまたはアラートがあるかどうかを確認します。 Azure portal、Azure CLI、または Azure Monitor API を使用して、アクティビティ ログと診断設定にアクセスできます。
  5. ノード プールがデプロイされているリージョンとサブスクリプションのクォータと容量を確認します。 コマンドまたはAzure portalを使用az vm list-usageして、クォータと容量をチェックできます。 クォータまたは容量の制限に達した場合は、未使用のリソースの増加または削除を要求できます。
  6. ノード プールのポリシーとロールの割り当てを確認します。 および az role コマンドまたはAzure portalを使用az policyして、ポリシー定義、割り当て、コンプライアンス、および除外をチェックできます。 コマンドまたはAzure portalを使用してaz role assignment、ノード プールのロールの割り当てとアクセス許可をチェックすることもできます。
  7. ノード プールのリソース ロックを確認します。 コマンドまたはAzure portalをaz lock使用して、ロック レベル、スコープ、およびノートをチェックできます。 必要に応じて、ロックを削除または更新することもできます。

その他のログ記録と診断ツール

上記のトラブルシューティング方法で問題が解決しない場合は、次のログと診断ツールを使用して、詳細情報を収集し、根本原因を特定できます。

  • コンテナーの Azure Monitor:

    このサービスは、AKS クラスターとノードからメトリックとログを収集および分析します。 コンテナー用の Azure Monitor では、クラスターとノードの正常性、パフォーマンス、可用性を監視できます。 これを使用して、コンテナー ログ、kubelet ログ、ノード ブート診断ログを表示することもできます。

  • AKS Periscope

    このツールは、ノードとポッドのログ、ネットワーク情報、クラスター構成を AKS クラスターから収集し、Azure ストレージ アカウントにアップロードします。 このツールは、DNS 解決、ネットワーク接続、ノードの状態など、クラスターの一般的な問題のトラブルシューティングに役立ちます。 また、これを使用して、収集されたログが添付されたサポート要求を生成することもできます。

  • AKS 診断

    このツールは、AKS クラスターとノードに対して一連のチェックを実行し、一般的な問題に関する推奨事項と修復手順を提供します。 このツールは、クラスターの作成、アップグレード、スケーリング、ネットワーク、ストレージ、セキュリティに関連する問題のトラブルシューティングに役立ちます。 これを使用して、診断結果が添付されたサポート要求を生成することもできます。

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

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