このページの改善にご協力ください
このユーザーガイドに貢献するには、すべてのページの右側のペインにある「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コマンドに追加します。 -
ノードの自動修復でマネージド型ノードグループを使用する
eksctlClusterConfigの例については、GitHub の「44-node-repair.yaml」を参照してください。
Amazon EKS は、以下を通じてノードの自動修復動作をより詳細に制御します。
-
maxUnhealthyNodeThresholdCountおよびmaxUnhealthyNodeThresholdPercentage-
これらのフィールドでは、異常なノードの数または割合のしきい値を指定できます。このしきい値を超えると、ノードの自動修復アクションが停止します。これにより、ノードの自動修復の「影響範囲」をより細かく制御できます。
-
絶対数またはパーセンテージのいずれかを設定できますが、両方を設定することはできません。
-
-
maxParallelNodesRepairedCountおよびmaxParallelNodesRepairedPercentage-
これらのフィールドでは、同時にまたは並行して修復できるノードの最大数を、すべての異常なノードに対する数または割合として指定できます。これにより、ノード置換のペースをよりきめ細かく制御できます。
-
異常なノードしきい値と同様に、絶対数またはパーセンテージのいずれかを設定できますが、両方を設定することはできません。
-
-
nodeRepairConfigOverrides-
これは、特定の修復アクションの詳細なオーバーライドを設定できる複雑な構造です。これらのオーバーライドは、ノードが修復対象と見なされるまでの修復アクションと修復遅延時間を制御します。
-
この構造の特定のフィールドは次のとおりです。
-
nodeMonitoringCondition: ノードモニタリングエージェントによって報告された異常な状態。 -
nodeUnhealthyReason: ノードモニタリングエージェントがノードを異常と識別した理由。 -
minRepairWaitTimeMins: ノードが修復対象となるまでに、修復条件と異常理由が継続している必要がある最小時間 (分単位)。 -
repairAction: 上記の条件が満たされた場合に、修復システムが実行するアクション。
-
-
このフィールドを使用する場合は、構造内のすべてのフィールドを指定する必要があります。これらのオーバーライドのリストを指定することもできます。
-
nodeMonitoringConditionおよびnodeUnhealthyReasonは、システムのデフォルト動作から逸脱することを示すために設定する手動テキスト入力です。 -
minRepairWaitTimeMinsおよびrepairActionフィールドを使用すると、システムのデフォルト動作からの逸脱を指定できます。
-
ノードのヘルスの問題
次の表は、ノードモニタリングエージェントが検出できるノードのヘルス問題を示しています。次の 2 種類の問題があります。
AcceleratedHardware ノードのヘルス問題
次の表に記載されている、緊急度が「条件」である問題について、モニタリング条件は AcceleratedHardwareReady です。
自動修復が有効になっている場合、リストされている修復アクションは、問題が検出されてから 10 分後に開始されます。XID エラーの詳細については、「NVIDIA GPU のデプロイおよび管理ドキュメント」の「Xid エラー
| 名前 | 緊急度 | 説明 |
|---|---|---|
|
DCGMDiagnosticFailure |
条件 |
DCGM アクティブ診断テストスイートからのテストケースが失敗しました。 |
|
DCGMError |
条件 |
DCGM ホストプロセスへの接続を失ったか、確立できませんでした。 |
|
DCGMFieldError[Code] |
イベント |
DCGM は、フィールド識別子を介して GPU の劣化を検出しました。 |
|
DCGMHealthCode[Code] |
イベント |
DCGM ヘルスチェックが、致命的ではない方法で失敗しました。 |
|
DCGMHealthCode[Code] |
条件 |
DCGM ヘルスチェックが、致命的な方法で失敗しました。 |
|
NeuronDMAError |
条件 |
DMA エンジンで回復不可能なエラーが発生しました。 |
|
NeuronHBMUncorrectableError |
条件 |
HBM で修正不可能なエラーが発生し、誤った結果が生成されました。 |
|
NeuronNCUncorrectableError |
条件 |
Neuron Core の修正不可能なメモリエラーが検出されました。 |
|
NeuronSRAMUncorrectableError |
条件 |
オンチップ SRAM でパリティエラーが発生し、誤った結果が生成されました。 |
|
NvidiaDeviceCountMismatch |
イベント |
NVML で認識される GPU の数が、ファイルシステムの NVIDIA デバイス数と一致していません。 |
|
NvidiaDoubleBitError |
条件 |
GPU ドライバーによってダブルビットエラーが生成されました。 |
|
NvidiaNCCLError |
イベント |
NVIDIA Collective Communications ライブラリ ( |
|
NvidiaNVLinkError |
条件 |
NVLink エラーが GPU ドライバーによって報告されました。 |
|
NvidiaPCIeError |
イベント |
送信エラーから回復するために PCIe リプレイがトリガーされました。 |
|
NvidiaPageRetirement |
イベント |
GPU ドライバーがメモリページを廃止としてマークしました。これは、1 つのダブルビットエラーが起こった場合、または同じアドレスで 2 つのシングルビットエラーが起こった場合に発生する可能性があります。 |
|
NvidiaPowerError |
イベント |
GPU の電力使用率が許容しきい値を超えました。 |
|
NvidiaThermalError |
イベント |
GPU の熱ステータスが許容しきい値を超えました。 |
|
NvidiaXID[Code]Error |
条件 |
重大な GPU エラーが発生しました。 |
|
NvidiaXID[Code]Warning |
イベント |
重要ではない GPU エラーが発生しました。 |
ContainerRuntime ノードのヘルスの問題
次の表に記載されている、緊急度が「条件」である問題について、モニタリング条件は ContainerRuntimeReady です。
| 名前 | 緊急度 | 説明 |
|---|---|---|
|
ContainerRuntimeFailed |
イベント |
コンテナランタイムはコンテナの作成に失敗しました。繰り返し発生する場合は、報告された問題に関連している可能性があります。 |
|
DeprecatedContainerdConfiguration |
イベント |
廃止されたイメージマニフェストバージョン 2、スキーマ 1 を使用するコンテナイメージが、最近 |
|
KubeletFailed |
イベント |
kubelet が失敗状態になりました。 |
|
LivenessProbeFailures |
イベント |
ライブネスプローブの障害が検出されました。アプリケーションコードの問題や、繰り返し発生する場合はタイムアウト値が不十分である可能性を示しています。 |
|
PodStuckTerminating |
条件 |
ポッドが終了しているか、または長時間停止していました。これは、ポッドの状態の進行を妨げる CRI エラーが原因で発生する可能性があります。 |
|
ReadinessProbeFailures |
イベント |
レディネスプローブの障害が検出されました。アプリケーションコードの問題や、繰り返し発生する場合はタイムアウト値が不十分である可能性を示しています。 |
|
[Name]RepeatedRestart |
イベント |
systemd ユニットが頻繁に再起動しています。 |
|
ServiceFailedToStart |
イベント |
systemd ユニットの起動に失敗しました。 |
カーネルノードのヘルスの問題
次の表に記載されている、緊急度が「条件」である問題について、モニタリング条件は KernelReady です。
| 名前 | 緊急度 | 説明 |
|---|---|---|
|
AppBlocked |
イベント |
タスクが長時間スケジュールからブロックされており、通常は入力または出力がブロックされていることが原因で発生します。 |
|
AppCrash |
イベント |
ノード上のアプリケーションがクラッシュしました。 |
|
ApproachingKernelPidMax |
イベント |
プロセスの数が、現在の |
|
ApproachingMaxOpenFiles |
イベント |
開いているファイルの数は、現在のカーネル設定で可能な開いているファイルの最大数に近づいています。最大数に到達すると、新しいファイルを開くことができなくなります。 |
|
ConntrackExceededKernel |
イベント |
接続追跡がカーネルの最大数を超え、新しい接続を確立できなかったため、パケットロスが発生する可能性があります。 |
|
ExcessiveZombieProcesses |
イベント |
完全に再要求できないプロセスが大量に蓄積されています。これはアプリケーションの問題を示しており、システムプロセスの制限に達する可能性があります。 |
|
ForkFailedOutOfPIDs |
条件 |
フォークまたは実行の呼び出しが失敗したのは、システムがプロセス ID またはメモリ不足であるためです。これは、ゾンビプロセスまたは物理メモリの枯渇が原因である可能性があります。 |
|
KernelBug |
イベント |
CPU またはメモリの使用率が高いノードが原因でイベント処理が遅れることがありますが、カーネルのバグが Linux カーネル自体によって検出および報告されました。 |
|
LargeEnvironment |
イベント |
このプロセスの環境変数の数は予想よりも多く、 |
|
RapidCron |
イベント |
このノードでは、cron ジョブが 5 分間隔よりも速く実行されています。このため、ジョブが大量のリソースを消費すると、パフォーマンスに影響が出る可能性があります。 |
|
SoftLockup |
イベント |
CPU が一定時間停止しました。 |
ネットワークノードのヘルスの問題
次の表に記載されている、緊急度が「条件」である問題について、モニタリング条件は NetworkingReady です。
| 名前 | 緊急度 | 説明 |
|---|---|---|
|
BandwidthInExceeded |
イベント |
インバウンド集計帯域幅がインスタンスの最大値を超えたため、パケットはキューに入れられたか、ドロップされました。 |
|
BandwidthOutExceeded |
イベント |
アウトバウンド集計帯域幅がインスタンスの最大値を超えたため、パケットはキューに入れられたか、ドロップされました。 |
|
ConntrackExceeded |
イベント |
接続追跡がインスタンスの最大数を超え、新しい接続を確立できなかったため、パケットロスが発生する可能性があります。 |
|
IPAMDInconsistentState |
イベント |
ディスク上の IPAMD チェックポイントの状態が、コンテナランタイム内の IP を反映していません。 |
|
IPAMDNoIPs |
イベント |
IPAMD が IP アドレスから外れています。 |
|
IPAMDNotReady |
条件 |
IPAMD が API サーバーに接続できません。 |
|
IPAMDNotRunning |
条件 |
Amazon VPC CNI プロセスは実行中であることが確認されませんでした。 |
|
IPAMDRepeatedlyRestart |
イベント |
IPAMD サービスで複数の再起動が発生しました。 |
|
InterfaceNotRunning |
条件 |
このインターフェイスは実行されていないか、ネットワークの問題があります。 |
|
InterfaceNotUp |
条件 |
このインターフェイスは起動していないか、ネットワークの問題があります。 |
|
KubeProxyNotReady |
イベント |
Kube-proxy がリソースの監視または一覧表示に失敗しました。 |
|
LinkLocalExceeded |
イベント |
ローカルプロキシサービスへのトラフィックの PPS がネットワークインターフェイスの最大値を超えたため、パケットがドロップされました。 |
|
MACAddressPolicyMisconfigured |
イベント |
systemd-networkd のリンク設定で、 |
|
MissingDefaultRoutes |
イベント |
デフォルトのルートルールが見つかりません。 |
|
MissingIPRoutes |
イベント |
Pod IP のルートがありません。 |
|
MissingIPRules |
イベント |
Pod IP のルールがありません。 |
|
MissingLoopbackInterface |
条件 |
このインスタンスには、ループバックインターフェイスがないため、ローカル接続によってはサービスの不具合が発生します。 |
|
NetworkSysctl |
イベント |
このノードのネットワーク |
|
PPSExceeded |
イベント |
双方向 PPS がインスタンスの最大値を超えたため、パケットはキューに入れられたか、ドロップされました。 |
|
PortConflict |
イベント |
ポッドが hostPort を使用する場合、ホストの既にバインドされているポートを上書きするように |
|
UnexpectedRejectRule |
イベント |
|
ストレージノードのヘルスの問題
次の表に記載されている、緊急度が「条件」である問題について、モニタリング条件は StorageReady です。
| 名前 | 緊急度 | 説明 |
|---|---|---|
|
EBSInstanceIOPSExceeded |
イベント |
インスタンスの最大 IOPS を超えました。 |
|
EBSInstanceThroughputExceeded |
イベント |
インスタンスの最大スループットを超えました。 |
|
EBSVolumeIOPSExceeded |
イベント |
特定の EBS ボリュームに対する最大 IOPS を超えました。 |
|
EBSVolumeThroughputExceeded |
イベント |
特定の Amazon EBS ボリュームに対する最大スループットを超えました。 |
|
EtcHostsMountFailed |
イベント |
|
|
IODelays |
イベント |
入力または出力の遅延がプロセスで検出されました。過剰な場合は入力/出力プロビジョニングが不十分である可能性があります。 |
|
KubeletDiskUsageSlow |
イベント |
|
|
XFSSmallAverageClusterSize |
イベント |
XFS 平均クラスターサイズが小さいことは、空き領域が過度に断片化されていることを示しています。このため、inode や空き領域が使用可能であっても、ファイルを作成できない場合があります。 |