クラスターまたはノード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/agent https://aka.ms/aks/outbound https://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 CLI、またはAzure PowerShellを使用して表示できます。
アクティビティ ログには、エラーに関連付けられているエラー コードとメッセージが表示されます。 特定のエラーの詳細については、「 クラスター/ノードが失敗する原因となっている一般的なエラーの基本的なトラブルシューティング 」セクションを参照してください。
AKS の問題の診断と解決機能を使用して 、一般的な問題のトラブルシューティングと解決を行います。
注:
この機能は、Azure portalと Azure CLI でのみ使用できます。
Azure portalを使用して失敗したクラスターのアクティビティ ログを表示する
Azure portalから失敗したクラスターのアクティビティ ログを表示するには、次の手順に従います。
Azure portalで、[リソース グループ] ページに移動し、クラスターを含むリソース グループを選択します。
[ 概要 ] ページで、リソースの一覧からクラスター名を選択します。
クラスター ページで、左側のメニューから [アクティビティ ログ ] を選択します。
[ アクティビティ ログ ] ページでは、[ 状態]、[ Timespan]、[ イベントによって開始されたイベント]、および [ イベント] カテゴリでイベントをフィルター処理できます。 たとえば、[状態] ドロップダウン リストから [失敗] を選択すると、失敗したイベントのみが表示されます。
イベントの詳細をチェックするには、一覧からイベント名を選択します。 新しいウィンドウが開き、イベントの概要、プロパティ、および JSON データが表示されます。 JSON データをファイルとしてダウンロードすることもできます。
イベントに関連付けられているエラー コードとメッセージをチェックするには、イベントの概要の [状態] セクションまで下にスクロールします。 エラー情報は、プロパティと JSON データ セクションでも確認できます。
Azure CLI を使用して失敗したクラスターのアクティビティ ログを表示する
Azure CLI を使用して、失敗したクラスターのアクティビティ ログを表示する場合は、次の手順に従います。
マシンに Azure CLI をインストールし、Azure アカウントでログインします。
コマンドを使用してサブスクリプション内のリソース グループを
az group list
一覧表示し、クラスターを含むリソース グループの名前を見つけます。パラメーターを指定して コマンドを使用して
az resource list
リソース グループ内のリソースを--resource-group
一覧表示し、クラスターの名前を見つけます。コマンドと パラメーターを使用して、クラスターの
az monitor activity-log list
アクティビティ ログを--resource-group
--resource
一覧表示します。 、および パラメーターを--status
--caller
--start-time
--end-time
使用して、--filter
さまざまな条件でイベントをフィルター処理することもできます。 たとえば、 を使用--status Failed
して、失敗したイベントのみを表示できます。、、および パラメーターを指定したコマンドを
az monitor activity-log show
使用して、特定のイベントの--resource-group
--resource
詳細を--event-id
表示します。 イベント ID は、前のコマンドの出力から確認できます。 出力には、イベントの概要、プロパティ、JSON データが含まれます。 パラメーターを--output
使用して出力形式を変更することもできます。イベントに関連付けられているエラー コードとメッセージを表示するには、コマンド出力で フィールドを探
statusMessage
します。 エラー情報は、プロパティと 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 が適切に割り当てまたは構成されないその他の要因が原因である可能性があります。
この問題をトラブルシューティングするには、次の手順に従います。
- コマンドを使用してノード プールの状態を
az aks nodepool show
確認します。 プロビジョニング状態が の場合はFailed
、エラー メッセージとコードが出力に表示されます。 - または
az vm availability-set show
コマンドを使用して、VM スケール セットまたは可用性セットの状態をaz vmss show
確認します。 プロビジョニング状態が の場合はFailed
、エラー メッセージとコードが出力に表示されます。 - または
az vm list
コマンドを使用して、ノード プール内の個々の VM の状態をaz vmss list-instances
確認します。 いずれかの VM がまたはUnhealthy
状態のFailed
場合は、エラー メッセージとコードが出力に表示されます。 - VM スケール セットまたは可用性セットのアクティビティ ログと診断設定を確認して、エラーの原因を示すイベントまたはアラートがあるかどうかを確認します。 Azure portal、Azure CLI、または Azure Monitor API を使用して、アクティビティ ログと診断設定にアクセスできます。
- ノード プールがデプロイされているリージョンとサブスクリプションのクォータと容量を確認します。 コマンドまたはAzure portalを使用
az vm list-usage
して、クォータと容量をチェックできます。 クォータまたは容量の制限に達した場合は、未使用のリソースの増加または削除を要求できます。 - ノード プールのポリシーとロールの割り当てを確認します。 および
az role
コマンドまたはAzure portalを使用az policy
して、ポリシー定義、割り当て、コンプライアンス、および除外をチェックできます。 コマンドまたはAzure portalを使用してaz role assignment
、ノード プールのロールの割り当てとアクセス許可をチェックすることもできます。 - ノード プールのリソース ロックを確認します。 コマンドまたはAzure portalを
az lock
使用して、ロック レベル、スコープ、およびノートをチェックできます。 必要に応じて、ロックを削除または更新することもできます。
その他のログ記録と診断ツール
上記のトラブルシューティング方法で問題が解決しない場合は、次のログと診断ツールを使用して、詳細情報を収集し、根本原因を特定できます。
コンテナーの Azure Monitor:
このサービスは、AKS クラスターとノードからメトリックとログを収集および分析します。 コンテナー用の Azure Monitor では、クラスターとノードの正常性、パフォーマンス、可用性を監視できます。 これを使用して、コンテナー ログ、kubelet ログ、ノード ブート診断ログを表示することもできます。
-
このツールは、ノードとポッドのログ、ネットワーク情報、クラスター構成を AKS クラスターから収集し、Azure ストレージ アカウントにアップロードします。 このツールは、DNS 解決、ネットワーク接続、ノードの状態など、クラスターの一般的な問題のトラブルシューティングに役立ちます。 また、これを使用して、収集されたログが添付されたサポート要求を生成することもできます。
AKS 診断
このツールは、AKS クラスターとノードに対して一連のチェックを実行し、一般的な問題に関する推奨事項と修復手順を提供します。 このツールは、クラスターの作成、アップグレード、スケーリング、ネットワーク、ストレージ、セキュリティに関連する問題のトラブルシューティングに役立ちます。 これを使用して、診断結果が添付されたサポート要求を生成することもできます。
お問い合わせはこちらから
質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示