AI トレーニング中に GPU ノードでエラーが発生すると、タスクが停止したり異常終了したりする場合があり、タスク効率に影響を与えます。Alibaba Cloud Container Service for Kubernetes (ACS) は、GPU-HPN ノード向けのエラー監視機能を提供します。ノードが異常状態になると、ACS は当該ノードにマークを付与し、Kubernetes のイベントおよび条件(condition)を通じて問題を報告します。本トピックでは、GPU-HPN ノードのエラーに関するメトリック、データ取得方法、および回復手順について説明します。
ノードエラー処理の流れ
ACS は GPU-HPN ノードに対して継続的にヘルスチェックを実行します。ノードがエラーを検出した場合、ACS の自己修復(セルフヒーリング)機構を用いて、以下の手順に従って異常ノードを修復してください。
ACS は、イベントおよびノードの条件(condition)を通じてエラーの原因を報告します。また、新規 Pod が当該ノードにスケジュールされないよう、ノードに Taint を付与します。
異常ノードのドレイン
エラー通知を受信した後は、速やかに異常ノード上の Pod を退避(evict)する必要があります。acs-instance-helper を使用して、Pod の自動退避を実行できます。詳細については、「ハードウェア例外が発生したインスタンスの自動回転の設定」をご参照ください。
異常ノードの修復
異常ノードのドレインが完了すると、ACS は自動的に修復プロセスを開始します。
ノードの自己修復
ACS によるノード修復後、ノード上に設定されていた Taint や条件(condition)は自動的に正常状態に復元されます。その後、新規 Pod を当該ノードにスケジュールできるようになります。
エラー通知
エラーを迅速に処理するため、kube-eventer を使用してアラート条件を設定することを推奨します。詳細については、「kube-eventer」をご参照ください。
GPU-HPN ノードでエラーが発生した場合、ACS は Node オブジェクトの条件(condition)および対応する Pod のイベントを用いて、エラー情報を提供します。
ノード
フィルタリングおよび表示のため、ノードに異常ラベル(anomaly label)が付与されます。
metadata: labels: alibabacloud.com/node-anomaly: "true"alibabacloud.com/node-anomalyという名前の Taint がノードに付与されます。デフォルトでは、新規に送信された Pod は当該ノードにスケジュールされません。spec: taints: - effect: NoSchedule key: alibabacloud.com/node-anomaly timeAdded: "2024-10-16T06:09:27Z"詳細なエラー情報は、タイプが `NodeAnomaly` の条件(condition)として、ノードの
conditionsフィールドに記録されます。status: conditions: - lastHeartbeatTime: "2024-10-16T06:09:31Z" lastTransitionTime: "2024-10-16T06:09:31Z" message: The node has encountered an anomaly. reason: NodeBroken status: "True" type: NodeAnomalyconditionsの各フィールドの説明は、以下のとおりです。フィールド
説明
更新タイミング
type`NodeAnomaly`:ノードの異常を示します。
静的フィールドであり、ノードのライフサイクル中で変更されません。
statusエラーの有無を示します。
True:エラーが発生しています。False:エラーは発生していません。
ノードのエラー状態が変化したときに更新されます。
reasonエラーの種類です。以下のいずれかの値になります。
NodeBroken:GPU-HPN ノード全体が故障しています。GPUCardBroken:GPU カードレベルの障害が発生しています。NodeMaintenance:GPU-HPN ノードがシステムアップグレードまたは運用・保守(O&M)中です。
ノードのエラー状態が変化したときに更新されます。
messageエラーに関する詳細情報を記録します。
ノードのエラー状態が変化したときに更新されます。
lastTransitionTimeエラー状態が最後に変化した時刻です。
ノードのエラー状態が変化したときに更新されます。
lastHeartbeatTime定期的に更新されるハートビート時刻です。
ノードのエラー状態が変化したとき、または前回の更新から 5 分以上経過したときに更新されます。
詳細な自己修復情報は、タイプが `FaultHealing` の条件(condition)として、ノードの
conditionsフィールドに記録されます。この条件(condition)は、自己修復プロセスの進行に応じて更新されます。status: conditions: - lastHeartbeatTime: "2025-03-24T11:14:48Z" lastTransitionTime: "2025-03-24T11:14:48Z" message: node fault healing success reason: Success status: "False" type: FaultHealing以下に、
conditionsの各フィールドの説明を示します。フィールド
説明
type`FaultHealing`:ノードが自己修復プロセス中であることを示します。
statusノードが現在自己修復中であるかどうかを示します。
True:自己修復が進行中です。False:自己修復が完了しました。
reasonノードの自己修復ステータスです。
`Success`、`Finished`:自己修復が完了しました。
`InProgress`:自己修復が進行中です。
`Failed`:自己修復に失敗しました。
message自己修復の進捗状況に関する詳細情報を記録します。
lastTransitionTime自己修復の進捗状況が変化したときに更新されます。
lastHeartbeatTime自己修復の進捗状況が変化したときに更新されます。
Pod イベント
異常ノード上で実行中の Pod に対して、Warning イベントが生成されます。
エラー情報を受信した後は、速やかに異常ノード上の Pod を退避してください。すべての Pod の退避が完了すると、ACS は自動的にノードの修復および自己修復プロセスを開始します。acs-instance-helper を使用して、Pod の自動退避を実行できます。詳細については、「ハードウェア例外が発生したインスタンスの自動回転の設定」をご参照ください。
reason: NodeBroken
type: Warning
message: 'The pod is proposed to be evicted at 2024-10-16 07:21:54 +0000 UTC, reason: xxx'以下の表に、イベントの各フィールドの説明を示します。
フィールド | 説明 |
| 静的フィールドで、値は `Warning` です。 |
| エラーの種類です。以下のいずれかの値になります。
|
| 自己修復の進捗状況に関する詳細情報を記録します。 |