このページの改善にご協力ください
このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。
ノードの自動修復を有効にし、ノードのヘルス問題を調査する
ノードのヘルスとは、ワークロードを効果的に実行するためのノードの運用ステータスと機能を指します。正常なノードは、予想される接続を維持し、十分なリソースを持ち、中断することなくポッドを正常に実行できます。お使いのノードに関する詳細を取得する方法については、「ノードのヘルスステータスを表示する」および「kubectl と S3 を使用してマネージドノードのノードログを取得する」を参照してください。
ノードを正常に維持するために、Amazon EKS にはノードモニタリングエージェントとノード自動修復の機能があります。
重要
ノードモニタリングエージェントとノード自動修復を使用できるのは、Linux のみです。Windows では使用できません。
ノードモニタリングエージェント
ノードモニタリングエージェントはノードログを自動的に読み取り、特定のヘルス問題を検出します。ノードログを解析して障害を検出し、ワーカーノードに関するさまざまなステータス情報を表示します。ストレージやネットワーク形成の問題など、検出された問題のカテゴリごとに、ワーカーノードに専用の NodeCondition
が適用されます。検出されたヘルスの問題の説明は、オブザーバビリティダッシュボードで確認できます。詳細については、「ノードのヘルスの問題」を参照してください。
ノードモニタリングエージェントは、すべての Amazon EKS Auto Mode クラスターの機能として用意されています。他のクラスタータイプでは、モニタリングエージェントを Amazon EKS アドオンとして追加できます。詳細については、「Amazon EKS アドオンを作成する」を参照してください。
ノードの自動修復
ノードの自動修復は、ノードのヘルスを継続的にモニタリングし、検出された問題に自動的に対応して、可能な場合はノードを置き換えることのできる追加機能です。これにより、最小限の手動操作でクラスターの全体的な可用性が向上します。ヘルスチェックが失敗すると、ノードは自動的に遮断され、ノードに新しいポッドがスケジュールされません。
ノードの自動修復自体は、kubelet
および手動で削除されたノードオブジェクトの Ready
状態に対応できます。ノードモニタリングエージェントと組み合わせると、ノードの自動修復は、他の方法では検出されないより多くの状態に対応できます。これらの追加の状態には、KernelReady
、NetworkingReady
、および StorageReady
があります。
この自動ノード修復は、クラスターへの結合の失敗、応答しない kubelets、アクセラレーター (デバイス) エラーの増加など、断続的なノードの問題に自動的に対処します。信頼性の向上により、アプリケーションのダウンタイムが短縮され、クラスターのオペレーションが向上します。ノードの自動修復では、DiskPressure
、MemoryPressure
、PIDPressure
などの、報告された特定の問題を処理できません。Amazon EKS は AcceleratedHardwareReady
NodeConditions
に作用するまでに 10 分かかり、さらに他のすべての状態の場合は 30 分かかります。
また、マネージド型ノードグループは、2 つのシナリオで、安全上の理由からノードの修復を自動的に無効にします。以前から進行中の修復操作は、どちらの状態でも続行されます。
-
クラスターのゾーンシフトが Application Recovery Controller (ARC) を介してトリガーされた場合、それ以降のすべての修復オペレーションが停止します。
-
ノードグループに 5 つ以上のノードがあり、ノードグループ内のノードの 20% 以上が異常な状態である場合、修復オペレーションは停止します。
マネージド型ノードグループを作成または編集するときに、ノードの自動修復を有効にできます。
-
Amazon EKS コンソールを使用する場合は、マネージド型ノードグループの [ノード自動修復を有効にする] チェックボックスをオンにします。詳細については、「クラスターのマネージドノードグループを作成する」を参照してください。
-
AWS CLI を使用する場合は、
--node-repair-config enabled=true
をeks create nodegroup
またはeks update-nodegroup-config
コマンドに追加します。 -
ノードの自動修復でマネージド型ノードグループを使用する
eksctl
ClusterConfig
の例については、GitHub の「44-node-repair.yaml」を参照してください。
ノードのヘルスの問題
次の表は、ノードモニタリングエージェントが検出できるノードのヘルス問題を示しています。次の 2 種類の問題があります。
カーネルノードのヘルスの問題
名前 | 緊急度 | 説明 |
---|---|---|
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 |
条件 |
|
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 サーバーが |
PPSExceeded |
イベント |
双方向 PPS がインスタンスの最大値を超えたため、パケットはキューに入れられたか、ドロップされました。 |
UnexpectedRejectRule |
イベント |
iptables で予期しない |
Neuron ノードのヘルスの問題
名前 | 緊急度 | 説明 |
---|---|---|
NeuronDMAError |
条件 |
DMA エンジンで回復不可能なエラーが発生しました。 |
NeuronHBMUncorrectableError |
条件 |
HBM で修正不可能なエラーが発生し、誤った結果が生成されました。 |
NeuronNCUncorrectableError |
条件 |
Neuron Core の修正不可能なメモリエラーが検出されました。 |
NeuronSRAMUncorrectableError |
条件 |
オンチップ SRAM でパリティエラーが発生し、誤った結果が生成されました。 |
NVIDIA ノードのヘルスの問題
自動修復が有効になっている場合、リストされている修復アクションは、問題が検出されてから 10 分後に開始されます。XID エラーの詳細については、「NVIDIA GPU のデプロイおよび管理ドキュメント」の「Xid エラー
名前 | 緊急度 | 説明 | 修復アクション |
---|---|---|---|
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 オペレーション中にユーザーデータを |
IODelays |
イベント |
入力または出力の遅延がプロセスで検出されました。過剰な場合は入力/出力プロビジョニングが不十分である可能性があります。 |
KubeletDiskUsageSlow |
イベント |
Kubelet は、ファイルシステムにアクセスしようとしている時にディスクの使用量が遅いと報告しています。ディスクの入力/出力不足やファイルシステムの問題を示している可能性があります。 |