Node Not Ready エラーの基本的なトラブルシューティング
この記事では、障害が発生した後に Microsoft Azure Kubernetes Service (AKS) クラスター ノードを復旧するためのトラブルシューティング手順について説明します。 この記事では、Node Not Ready エラーが発生したときに生成される最も一般的なエラー メッセージについて具体的に説明し、Windows ノードと Linux ノードの両方でノード修復機能を実行する方法について説明します。
開始する前に
Kubernetes クラスターのトラブルシューティングについては、 非公式ガイドを参照してください。 また、Kubernetes のトラブルシューティングに関する Microsoft エンジニアガイドを参照してください。 このガイドには、ポッド、ノード、クラスター、およびその他の機能をトラブルシューティングするためのコマンドが含まれています。
前提条件
- Azure CLI バージョン 2.31 以降のバージョン。 Azure CLI が既にインストールされている場合は、
az --version
を実行してバージョン番号を確認できます。
基本的なトラブルシューティング
AKS は、ワーカー ノードの正常性状態を継続的に監視し、ノードが異常になった場合自動的に修復します。 Azure 仮想マシン (VM) プラットフォーム 問題が発生する VM を維持します。 AKS と Azure VM が連携して、クラスターに対するサービスの中断を減らします。
ノードには、2 つの形式のハートビートがあります。
Node
オブジェクトの .status を更新します。kube-node-lease 名前空間内の Lease オブジェクト。 各
Node
には、関連付けられたLease
オブジェクトがあります。
Node
の .status の更新と比較すると、Lease
は軽量のリソースです。 ハートビートに Lease
オブジェクトを使用すると、大規模なクラスターでのこれらの更新のパフォーマンスへの影響が軽減されます。
kubeletは、Node
オブジェクトの.statusの作成と更新を行います。 また、Node
オブジェクトに関連するLease
オブジェクトの更新も行います。
- kubelet は、状態が変更された場合、または構成された間隔の更新がない場合に、ノード
.status
を更新します。 ノードに対する.status
更新の既定の間隔は 5 分です。これは、到達できないノードの 40 秒の既定のタイムアウトよりもはるかに長くなります。 - kubelet は、
Lease
オブジェクトを 10 秒ごとに作成して更新します (既定の更新間隔)。Lease
更新は、ノード.status
の更新とは別に行われます。Lease
更新が失敗した場合、kubelet は、200 ミリ秒から始まり、7 秒で上限となる指数バックオフを使用して再試行します。
NotReady
またはUnknown
の状態を持つノードでポッドをスケジュールすることはできません。 ポッドのスケジュールは、 Ready
状態のノードでのみ実行できます。
ノードが MemoryPressure
、 DiskPressure
、または PIDPressure
状態の場合は、ノードに追加のポッドをスケジュールするためにリソースを管理する必要があります。 ノードが NetworkUnavailable
モードの場合は、ノード上のネットワークを正しく構成する必要があります。
AKS は、エージェント ノードのライフサイクルと操作を管理します。 エージェント ノードに関連付けられている IaaS リソースの変更はサポートされていません。 たとえば、SSH 接続によるノードのカスタマイズ、パッケージの更新、ノード上のネットワーク構成の変更はサポートされていません。 詳細については、エージェント ノード AKS サポート カバレッジを参照してください。
次の条件が満たされていることを確認します。
クラスターが Succeeded (実行中) 状態です。 Azure ポータルでクラスターの状態を確認するにはKubernetes サービスを検索して選択し、AKS クラスターの名前を選択します。 次に、クラスターの Overview ページで、 Essentials を探して、 Statusを見つけます。 または、Azure CLI で az aks show コマンドを入力します。
ノード プールの プロビジョニング状態 Succeeded Power 状態 Running。 Azure portal でノード プールの状態を確認するには、AKS クラスターのページに戻り、 ノード プールを選択します。 または、Azure CLI で az aks nodepool show コマンドを入力します。
必要なエグレス ポートは、API サーバーの IP アドレスに到達できるように、ネットワーク セキュリティ グループ (NSG) とファイアウォールで開かれています。 詳細については、「 AKS クラスターの送信ネットワーク規則と FQDN の要求を参照してください。
ノードは、
Stopped
またはDeallocated
ではなく、Running
状態になります。クラスターで、 AKS でサポートされているバージョンの Kubernetes が実行されています。
詳細
ノードの Not Ready
状態のトラブルシューティングを行うには、「正常なノードの変更を未準備状態に トラブルシューティングするを参照してください。
サードパーティのお問い合わせ窓口に関する免責事項
サードパーティのお問い合わせ窓口に関する情報は、ユーザーの便宜のために提供されているものであり、 この連絡先情報は、予告なしに変更される可能性があります。 マイクロソフトは、掲載されている情報に対して、いかなる責任も負わないものとします。