Container Service for Kubernetes (ACK) クラスターのGPU障害を解決するために、ACKはさまざまな観点からモニタリング、診断、アラート、および復旧メカニズムを提供します。 このトピックでは、GPU障害のトラブルシューティングと修正方法について説明します。
背景情報
ルーチンモニタリングとアラートの設定: ビジネス要件に基づいて、GPUメトリック (ACK GPUモニタリング2.0) とイベント (ACKノード問題検出器) に基づいてアラートルールを設定できます。 GPUで障害が発生すると、システムは最も早い機会にアラートをトリガーします。 これにより、GPU障害に対するシステムの応答性が向上します。
Container Intelligence Service (CIS) 支援診断および分析: GPUで障害が発生した場合、関連するGPUアラートまたはイベントは、GPUステータスおよび障害の詳細に関する限られた情報を提供する場合があります。 この場合、CISを使用して、障害のあるGPUが属するノードまたは障害のあるGPUを使用するポッドを診断できます。 CISは、故障に関する詳細な情報を提供する診断レポートを生成する。 詳細情報は、障害のタイプを特定し、障害を修正するための適切なソリューションを選択するのに役立ちます。
障害の分離と回復: 特定の障害の影響を軽減するために、ACKではノードの分離とGPUの分離を有効にできます。 障害が修正されたら、分離をキャンセルしてアプリケーションを通常どおり実行できます。
手順1: ルーチンのモニタリングとアラートの設定
Node Problem Detector (NPD) は、通常のGPU検査をサポートし、GPU障害の検出に役立ちます。 NPDがGPU障害を検出したときにアラートを受信する連絡先を指定できます。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
[アドオン] ページで、[ack-node-problem-detector] を検索し、表示されたら [インストール] をクリックします。
説明以前にコンポーネントをインストールしている場合は、バージョンが1.2.20以降であることを確認してください。 詳細については、「ack-node-problem-detector」をご参照ください。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
[アラート] ページで、[アラート連絡先] タブをクリックします。 次に、[作成] をクリックし、画面の指示に基づいて連絡先を設定します。
[アラートルール] タブで、[GPUモニタリングのアラートルールセット] を選択し、[ステータス] をクリックします。 次に、[連絡先の変更] をクリックし、作成した連絡先を選択します。
ステップ2: CISを使用して診断と分析
クラスター内のGPUで障害が発生すると、テキストメッセージ、電子メール、またはDingTalkメッセージでクラスター管理者に通知されます。 ACKコンソールにログオンし、CISを使用して障害を特定し、分析することができます。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
[診断] ページで、[ノード診断] をクリックします。 [ノード診断] ページの左上隅にある [診断] をクリックします。
[ノードの選択] パネルで、[ノード名] パラメーターを指定し、[知っていると同意する] を読んで選択し、[診断の作成] をクリックします。
診断が完了すると、すべての診断項目の結果が表示されます。 ノード診断機能でサポートされている診断項目の詳細については、「ノード診断」をご参照ください。
GPUで
Xidエラーが発生した場合、GPUXIDErrors項目に{"GPU-326dc0ce-XXXX-77b6-XXXX-9a2eeXXXX":["43"]}が表示されます。これは、GPU-xxxGPUでXid43エラーが発生したことを示します。 CISが提供する診断レポートのGPUエラーの詳細については、「NPDが検出したGPU障害のイベント」をご参照ください。
ステップ3: 障害のあるGPUを分離する
障害のあるGPUを手動で分離する
GPUで障害が検出されると、そのGPUを分離して、他のポッドがそのGPUにスケジュールされないようにすることができます。 詳細については、「GPUデバイスプラグイン関連の操作」をご参照ください。
障害のあるGPUのインデックスが1の場合、または障害のあるGPUのUUIDがGPU-xxx-xxx-xxxの場合、GPUが属するノードの /etc/nvidia-device-plugin/ ディレクトリにunhealthyDevices.jsonという名前のファイルを作成または変更する必要があります。 インデックスまたはUUIDをファイルに追加します。 例:
// Specify the index of the GPU.
{
"index": ["1"]
}
// Specify the UUID of the GPU.
{
"uuid": ["GPU-xxx-xxx-xxx"]
}変更を保存して終了します。 障害が修正されたら、関連するGPUアイテムをファイルから削除して、GPUの分離をキャンセルします。
障害のあるGPUを自動的に分離する
障害のあるGPUが属するノードにログインし、次の環境変数を削除して
/etc/kubernetes // manifests/nvidia-device-plugin.ymlを変更します。説明環境変数が存在しない場合、自動GPU分離が有効になります。
env: - name: DP_DISABLE_HEALTHCHECKS value: all環境変数を削除した後、次のコマンドを実行してデバイスプラグインを再起動します。
mv /etc/kubernetes/manifests/nvidia-device-plugin.yml /etc/kubernetes/ # Wait a few seconds for the system to delete the original pod. mv /etc/kubernetes/nvidia-device-plugin.yml /etc/kubernetes/manifests/
NPDによって検出されたGPU障害のイベント
イベント原因 | イベントコンテンツ | の説明 | 緩和 |
|
| GPUがノード上のバスから落ちる。 | ノードを再起動します。 問題が解決しない場合は、チケットを起票 し、テクニカルサポートチームにお問い合わせください。 |
|
| ノードのGPUでXidエラーが発生し、Xidメッセージが報告されます。 | ノードを再起動します。 問題が解決しない場合は、チケットを起票 し、テクニカルサポートチームにお問い合わせください。 |
|
| ノードで | ノードを再起動します。 問題が解決しない場合は、チケットを起票 し、テクニカルサポートチームにお問い合わせください。 |
|
| ノードで | ノードを再起動します。 問題が解決しない場合は、チケットを起票 し、テクニカルサポートチームにお問い合わせください。 |
|
| GPUの温度を確認します。 温度が摂氏89度を超えると、GPUが報告されます。 | このイベントは単なる警告です。 |