ノードの自動修復を有効にし、ノードのヘルス問題を調査する - アマゾン EKS

このページの改善にご協力ください

このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。

ノードの自動修復を有効にし、ノードのヘルス問題を調査する

ノードのヘルスとは、ワークロードを効果的に実行するためのノードの運用ステータスと機能を指します。正常なノードは、予想される接続を維持し、十分なリソースを持ち、中断することなくポッドを正常に実行できます。お使いのノードに関する詳細を取得する方法については、「ノードのヘルスステータスを表示する」および「kubectl と S3 を使用してマネージドノードのノードログを取得する」を参照してください。

ノードを正常に維持するために、Amazon EKS にはノードモニタリングエージェントノード自動修復の機能があります。

重要

ノードモニタリングエージェントノード自動修復を使用できるのは、Linux のみです。Windows では使用できません。

ノードモニタリングエージェント

ノードモニタリングエージェントはノードログを自動的に読み取り、特定のヘルス問題を検出します。ノードログを解析して障害を検出し、ワーカーノードに関するさまざまなステータス情報を表示します。ストレージやネットワーク形成の問題など、検出された問題のカテゴリごとに、ワーカーノードに専用の NodeCondition が適用されます。検出されたヘルスの問題の説明は、オブザーバビリティダッシュボードで確認できます。詳細については、「ノードのヘルスの問題」を参照してください。

ノードモニタリングエージェントは、すべての Amazon EKS Auto Mode クラスターの機能として用意されています。他のクラスタータイプでは、モニタリングエージェントを Amazon EKS アドオンとして追加できます。詳細については、「Amazon EKS アドオンを作成する」を参照してください。

ノードの自動修復

ノードの自動修復は、ノードのヘルスを継続的にモニタリングし、検出された問題に自動的に対応して、可能な場合はノードを置き換えることのできる追加機能です。これにより、最小限の手動操作でクラスターの全体的な可用性が向上します。ヘルスチェックが失敗すると、ノードは自動的に遮断され、ノードに新しいポッドがスケジュールされません。

ノードの自動修復自体は、kubelet および手動で削除されたノードオブジェクトの Ready 状態に対応できます。ノードモニタリングエージェントと組み合わせると、ノードの自動修復は、他の方法では検出されないより多くの状態に対応できます。これらの追加の状態には、KernelReadyNetworkingReady、および StorageReady があります。

この自動ノード修復は、クラスターへの結合の失敗、応答しない kubelets、アクセラレーター (デバイス) エラーの増加など、断続的なノードの問題に自動的に対処します。信頼性の向上により、アプリケーションのダウンタイムが短縮され、クラスターのオペレーションが向上します。ノードの自動修復では、DiskPressureMemoryPressurePIDPressure などの、報告された特定の問題を処理できません。Amazon EKS は AcceleratedHardwareReady NodeConditions に作用するまでに 10 分かかり、さらに他のすべての状態の場合は 30 分かかります。

また、マネージド型ノードグループは、2 つのシナリオで、安全上の理由からノードの修復を自動的に無効にします。以前から進行中の修復操作は、どちらの状態でも続行されます。

  • クラスターのゾーンシフトが Application Recovery Controller (ARC) を介してトリガーされた場合、それ以降のすべての修復オペレーションが停止します。

  • ノードグループに 5 つ以上のノードがあり、ノードグループ内のノードの 20% 以上が異常な状態である場合、修復オペレーションは停止します。

マネージド型ノードグループを作成または編集するときに、ノードの自動修復を有効にできます。

  • Amazon EKS コンソールを使用する場合は、マネージド型ノードグループの [ノード自動修復を有効にする] チェックボックスをオンにします。詳細については、「クラスターのマネージドノードグループを作成する」を参照してください。

  • AWS CLI を使用する場合は、--node-repair-config enabled=trueeks create nodegroup または eks update-nodegroup-config コマンドに追加します。

  • ノードの自動修復でマネージド型ノードグループを使用する eksctl ClusterConfig の例については、GitHub の「44-node-repair.yaml」を参照してください。

ノードのヘルスの問題

次の表は、ノードモニタリングエージェントが検出できるノードのヘルス問題を示しています。次の 2 種類の問題があります。

  • 症状 – インスタンスの置き換えや再起動などの修復アクションを必要とするターミナルの問題。自動修復が有効になっている場合、Amazon EKS はノードの置換または再起動として修復アクションを実行します。詳細については、「ノードの状態」を参照してください。

  • イベント – 一時的な問題または最適ではないノード設定。自動修復アクションは行われません。詳細については、「ノードイベント」を参照してください。

カーネルノードのヘルスの問題

名前 緊急度 説明

ForkFailedOutOfPID

条件

フォークまたは実行の呼び出しが失敗したのは、システムがプロセス ID またはメモリ不足であるためです。これは、ゾンビプロセスまたは物理メモリの枯渇が原因である可能性があります。

AppBlocked

イベント

タスクが長時間スケジュールからブロックされており、通常は入力または出力がブロックされていることが原因で発生します。

AppCrash

イベント

ノード上のアプリケーションがクラッシュしました。

ApproachingKernelPidMax

イベント

プロセスの数が、現在の kernel.pid_max 設定で使用可能な PID の最大数に近づいています。最大数に到達すると、これ以上プロセスを起動することはできません。

ApproachingMaxOpenFiles

イベント

開いているファイルの数は、現在のカーネル設定で可能な開いているファイルの最大数に近づいています。最大数に到達すると、新しいファイルを開くことができなくなります。

ConntrackExceededKernel

イベント

接続追跡がカーネルの最大数を超え、新しい接続を確立できなかったため、パケットロスが発生する可能性があります。

ExcessiveZombieProcesses

イベント

完全に再要求できないプロセスが大量に蓄積されています。これはアプリケーションの問題を示しており、システムプロセスの制限に達する可能性があります。

KernelBug

イベント

CPU またはメモリの使用率が高いノードが原因でイベント処理が遅れることがありますが、カーネルのバグが Linux カーネル自体によって検出および報告されました。

LargeEnvironment

イベント

このプロセスの環境変数の数は予想よりも多く、enableServiceLinks が true に設定されている多くのサービスが原因で発生する可能性があります。このため、パフォーマンスの問題が発生する可能性があります。

RapidCron

イベント

このノードでは、cron ジョブが 5 分間隔よりも速く実行されています。このため、ジョブが大量のリソースを消費すると、パフォーマンスに影響が出る可能性があります。

SoftLockup

イベント

CPU が一定時間停止しました。

ネットワークノードのヘルスの問題

名前 緊急度 説明

InterfaceNotRunning

条件

このインターフェイスは実行されていないか、ネットワークの問題があります。

InterfaceNotUp

条件

このインターフェイスは起動していないか、ネットワークの問題があります。

IPAMDNotReady

条件

IPAMD が API サーバーに接続できません。

IPAMDNotRunning

条件

aws-k8s-agent プロセスは実行中であることが確認されませんでした。

MissingLoopbackInterface

条件

このインスタンスには、ループバックインターフェイスがないため、ローカル接続によってはサービスの不具合が発生します。

BandwidthInExceeded

イベント

インバウンド集計帯域幅がインスタンスの最大値を超えたため、パケットはキューに入れられたか、ドロップされました。

BandwidthOutExceeded

イベント

アウトバウンド集計帯域幅がインスタンスの最大値を超えたため、パケットはキューに入れられたか、ドロップされました。

ConntrackExceeded

イベント

接続追跡がインスタンスの最大数を超え、新しい接続を確立できなかったため、パケットロスが発生する可能性があります。

IPAMDNoIPs

イベント

IPAM-D が IP アドレスから外れています。

IPAMDRepeatedlyRestart

イベント

IPAMD サービスで複数の再起動が発生しました。

KubeProxyNotReady

イベント

Kube-proxy がリソースの監視または一覧表示に失敗しました。

LinkLocalExceeded

イベント

ローカルプロキシサービスへのトラフィックの PPS がネットワークインターフェイスの最大値を超えたため、パケットがドロップされました。

MissingDefaultRoutes

イベント

デフォルトのルートルールが見つかりません。

MissingIPRules、MissingIPRoutes

イベント

ルートテーブルに次のポッド IP のルートルールがありません。

NetworkSysctl

イベント

このノードのネットワーク sysctl 設定が正しくない可能性があります。

PortConflict

イベント

ポッドが hostPort を使用する場合、ホストの既にバインドされているポートを上書きするように iptables ルールを書き込みできるため、API サーバーが kubelet にアクセスできなくなる可能性があります。

PPSExceeded

イベント

双方向 PPS がインスタンスの最大値を超えたため、パケットはキューに入れられたか、ドロップされました。

UnexpectedRejectRule

イベント

iptables で予期しない REJECT または DROP ルールが検出されたため、予想されたトラフィックがブロックされる可能性があります。

Neuron ノードのヘルスの問題

名前 緊急度 説明

NeuronDMAError

条件

DMA エンジンで回復不可能なエラーが発生しました。

NeuronHBMUncorrectableError

条件

HBM で修正不可能なエラーが発生し、誤った結果が生成されました。

NeuronNCUncorrectableError

条件

Neuron Core の修正不可能なメモリエラーが検出されました。

NeuronSRAMUncorrectableError

条件

オンチップ SRAM でパリティエラーが発生し、誤った結果が生成されました。

NVIDIA ノードのヘルスの問題

自動修復が有効になっている場合、リストされている修復アクションは、問題が検出されてから 10 分後に開始されます。XID エラーの詳細については、「NVIDIA GPU のデプロイおよび管理ドキュメント」の「Xid エラー」を参照してください。個々の XID メッセージの詳細については、「NVIDIA GPU Deployment and Management Documentation」の「Understanding Xid Messages」を参照してください。

名前 緊急度 説明 修復アクション

NvidiaDoubleBitError

条件

GPU ドライバーによってダブルビットエラーが生成されました。

置換

NvidiaNVLinkError

条件

NVLink エラーが GPU ドライバーによって報告されました。

置換

NvidiaXID13Error

条件

グラフィックエンジンの例外があります。

再起動

NvidiaXID31Error

条件

ハードウェアの問題が疑われます。

再起動

NvidiaXID48Error

条件

ドライバーによってダブルビット ECC エラーが報告されます。

再起動

NvidiaXID63Error

条件

ページリタイアまたは行の再マッピングがあります。

再起動

NvidiaXID64Error

条件

ページの廃止またはノードの再マッピングの実行に失敗しました。

再起動

NvidiaXID74Error

条件

GPU から別の GPU または NVLink 経由の NVSwitch への接続に問題があります。これは、リンク自体のハードウェア障害を示しているか、リンクのリモートエンドにあるデバイスに問題があることを示している可能性があります。

置換

NvidiaXID79Error

条件

GPU ドライバーが PCI Express 接続を介して GPU にアクセスしようとしましたが、GPU にアクセスできないことがわかりました。

置換

NvidiaXID94Error

条件

ECC メモリエラーがあります。

再起動

NvidiaXID95Error

条件

ECC メモリエラーがあります。

再起動

NvidiaXID119Error

条件

GSP は、ドライバーの他のビットからの RPC リクエストに応答しなくなりました。

置換

NvidiaXID120Error

条件

GSP は時間内に応答しましたが、エラーが発生しています。

置換

NvidiaXID121Error

条件

C2C はチップ相互接続です。これにより、CPU、アクセラレーターなどの間でメモリを共有できます。

置換

NvidiaXID140Error

条件

GPU ドライバーは、GPU メモリで修正不可能なエラーを観測した可能性があります。これは、動的ページをオフライン表示にしたり、行を再マッピングするためにページをマークする GPU ドライバーの機能を中断するような方法で行われました。

置換

NvidiaPageRetirement

イベント

GPU ドライバーがメモリページを廃止としてマークしました。これは、1 つのダブルビットエラーが起こった場合、または同じアドレスで 2 つのシングルビットエラーが起こった場合に発生する可能性があります。

なし

NvidiaXID[Code]Warning

イベント

このリストで定義されている以外の XID が発生すると、このイベントが発生します。

なし

DCGMError

条件

Data Center GPU Manager (DCGM) ホストプロセスへの接続を失ったか、確立できませんでした。

なし

DCGMDiagnosticError

条件

DCGM アクティブ診断の実行中に問題が発生しました。

なし

DCGMDiagnosticFailure

条件

DCGM アクティブ診断テストスイートからのテストケースが失敗しました。

なし

ランタイムノードのヘルスの問題

名前 緊急度 説明

PodStuckTerminating

条件

ポッドが終了しているか、または長時間停止していました。これは、ポッドの状態の進行を妨げる CRI エラーが原因で発生する可能性があります。

%sRepeatedRestart

イベント

ノード上の任意の systemd サービスを再起動します (先頭文字を大文字指定したユニット名を使用してフォーマット)。

ContainerRuntimeFailed

イベント

コンテナランタイムはコンテナの作成に失敗しました。繰り返し発生する場合は、報告された問題に関連している可能性があります。

KubeletFailed

イベント

kubelet が失敗状態になりました。

LivenessProbeFailures

イベント

ライブネスプローブの障害が検出されました。アプリケーションコードの問題や、繰り返し発生する場合はタイムアウト値が不十分である可能性を示しています。

ReadinessProbeFailures

イベント

レディネスプローブの障害が検出されました。アプリケーションコードの問題や、繰り返し発生する場合はタイムアウト値が不十分である可能性を示しています。

ServiceFailedToStart

イベント

systemd ユニットの起動に失敗しました。

ストレージノードのヘルスの問題

名前 緊急度 説明

XFSSmallAverageClusterSize

条件

XFS Average Cluster サイズが小さいため、空き領域が過剰に断片化され、inode や空き領域が使用可能であってもファイルの作成が妨げられる可能性があります。

EtcHostsMountFailed

イベント

kubelet-container オペレーション中にユーザーデータを /var/lib/kubelet/pods に再マウントしたため、kubelet が生成した /etc/hosts のマウントに失敗しました。

IODelays

イベント

入力または出力の遅延がプロセスで検出されました。過剰な場合は入力/出力プロビジョニングが不十分である可能性があります。

KubeletDiskUsageSlow

イベント

Kubelet は、ファイルシステムにアクセスしようとしている時にディスクの使用量が遅いと報告しています。ディスクの入力/出力不足やファイルシステムの問題を示している可能性があります。