EKS クラスター内のノードを自動的に修復する - Amazon EKS

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

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

EKS クラスター内のノードを自動的に修復する

このトピックでは、EKS 自動ノード修復の動作と、要件を満たすように設定する方法について詳しく説明します。EKS 自動ノード修復は EKS Auto Mode でデフォルトで有効になっており、EKS マネージド型ノードグループと Karpenter で使用できます。

デフォルトの EKS 自動ノード修復アクションは、以下の表にまとめられており、EKS Auto Mode、EKS マネージド型ノードグループ、Karpenter の動作に適用されます。EKS Auto Mode または Karpenter を使用する場合、すべての AcceleratedHardwareReady 修復アクションは Replace であり、EKS マネージド型ノードグループのみが修復アクションとして Reboot をサポートします。

EKS ノードモニタリングエージェントによって検出されたノードのヘルス問題とその対応するノード修復アクションの詳細なリストについては、「EKS ノードモニタリングエージェントのノードのヘルス問題を検出する」を参照してください。

ノードの状態 説明 修復までの時間 修復アクション

AcceleratedHardwareReady

AcceleratedHardwareReady は、ノードの高速ハードウェア (GPU、Neuron) が正しく機能しているかどうかを示します。

10m

置換または再起動

ContainerRuntimeReady

ContainerRuntimeReady は、コンテナランタイム (containerd など) が正しく機能し、コンテナを実行できるかどうかを示します。

30m

置換

DiskPressure

DiskPressure は、ノードにディスクプレッシャー (ディスク容量が少ない、または I/O が高い) が発生していることを示す標準の Kubernetes 条件です。

該当なし

なし

KernelReady

KernelReady は、重大なエラー、パニック、またはリソースの枯渇が発生することなく、カーネルが正しく機能しているかどうかを示します。

30m

置換

MemoryPressure

MemoryPressure は、ノードにメモリプレッシャー (使用可能なメモリが少ない) が発生していることを示す標準の Kubernetes 条件です。

該当なし

なし

NetworkingReady

NetworkingReady は、ノードのネットワークスタック (インターフェイス、ルーティング、接続) が正しく機能しているかどうかを示します。

30m

置換

StorageReady

StorageReady は、ノードのストレージサブシステム (ディスク、ファイルシステム、I/O) が正しく機能しているかどうかを示します。

30m

置換

Ready

Ready は、ノードが正常でポッドを受け入れる準備ができていることを示す標準の Kubernetes 条件です。

30m

置換

EKS 自動ノード修復アクションは、以下のシナリオではデフォルトで無効になっています。進行中のノード修復アクションは、各シナリオで続行されます。これらのデフォルト設定を上書きする方法については、「自動ノード修復を設定する」を参照してください。

EKS マネージド型ノードグループ

  • ノードグループに 5 つを超えるノードがあり、そのうち 20% を超えるノードに異常があります。

  • クラスターのゾーンシフトは、Application Recovery Controller (ARC) を介してトリガーされます。

EKS Auto Mode と Karpenter

  • NodePool 内のノードのうち、20% を超えるノードに異常があります。

  • スタンドアロン NodeClaims の場合、クラスター内のノードの 20% に異常があります。

自動ノード修復を設定する

EKS Auto Mode を使用する場合、自動ノード修復を設定することはできません。自動ノード修復は常に Karpenter と同じデフォルト設定で有効になります。

Karpenter

Karpenter で自動ノード修復を使用するには、機能ゲート NodeRepair=true を有効にします。機能ゲートは、Karpenter デプロイの --feature-gates CLI オプションまたは FEATURE_GATES 環境変数を使用して有効にできます。詳細については、Karpenter のドキュメントを参照してください。

マネージドノードグループ

新しい EKS マネージド型ノードグループを作成するとき、または既存の EKS マネージド型ノードグループを更新することで、自動ノード修復を有効にできます。

EKS マネージド型ノードグループを使用する場合、以下の設定でノード自動修復の動作を制御できます。

ノード自動修復がいつアクションを停止するかを制御するには、ノードグループ内の異常のあるノードの数に基づいてしきい値を設定します。絶対数またはパーセンテージのいずれかを設定します。両方を設定することはできません。

設定 説明

maxUnhealthyNodeThresholdCount

ノード自動修復が停止する異常ノードの絶対数。これを使用して、修復の範囲を制限します。

maxUnhealthyNodeThresholdPercentage

ノード自動修復が停止する異常ノードの割合 (0~100)。

同時に修復するノードの数を制御するには、修復並列処理を設定できます。異常のあるノードしきい値と同様に、絶対数またはパーセンテージのいずれかを設定します。両方を設定することはできません。

設定 説明

maxParallelNodesRepairedCount

同時に修復するノードの最大数。

maxParallelNodesRepairedPercentage

同時に修復する異常ノードの最大パーセンテージ (0~100)。

nodeRepairConfigOverrides では、特定の条件に合わせて修復動作をカスタマイズできます。これは、さまざまな問題タイプに対して異なる修復アクションまたは待機時間が必要な場合に使用します。

上書きにはそれぞれ、以下のすべてのフィールドが必要です。

フィールド 説明

nodeMonitoringCondition

ノードモニタリングエージェントによって報告されたノードの状態タイプ。例えば、AcceleratedHardwareReadyNetworkingReadyStorageReadyKernelReady などです。

nodeUnhealthyReason

異常状態の特定の理由コード。例: NvidiaXID31ErrorIPAMDNotRunning

minRepairWaitTimeMins

ノードが修復対象となるまでに、その状態が継続している必要がある最小時間 (分単位)。これは、一時的な問題のためにノードを修復しないようにする場合に使用します。

repairAction

条件が満たされたときに実行するアクション。有効な値: Replace (ノードを終了して置き換える)、Reboot (ノードを再起動する)、または NoAction (修復アクションなし)。

以下の AWS CLI の例では、カスタム修復設定を使用してノードグループを作成します。

aws eks create-nodegroup \ --cluster-name my-cluster \ --nodegroup-name my-nodegroup \ --node-role arn:aws:iam::111122223333:role/NodeRole \ --subnets subnet-0123456789abcdef0 \ --node-repair-config '{ "enabled": true, "maxUnhealthyNodeThresholdPercentage": 10, "maxParallelNodesRepairedCount": 3, "nodeRepairConfigOverrides": [ { "nodeMonitoringCondition": "AcceleratedHardwareReady", "nodeUnhealthyReason": "NvidiaXID64Error", "minRepairWaitTimeMins": 5, "repairAction": "Replace" }, { "nodeMonitoringCondition": "AcceleratedHardwareReady", "nodeUnhealthyReason": "NvidiaXID31Error", "minRepairWaitTimeMins": 15, "repairAction": "NoAction" } ] }'

この設定では、以下のことが行われます。

  • ノード自動修復を有効にする

  • 10% を超えるノードに異常がある場合に修復アクションを停止する

  • 一度に最大 3 つのノードを修復する

  • XID 64 エラー (GPU メモリの再マッピングの失敗) を上書きして、5 分後にノードを置き換える。デフォルトでは 10 分後に再起動します。

  • XID 31 エラー (GPU メモリページの障害) を上書きして、アクションを実行しない。デフォルトでは 10 分後に再起動します。