このページの改善にご協力ください
このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。
EKS ノードモニタリングエージェントのノードのヘルス問題を検出する
このトピックでは、EKS ノードモニタリングエージェントによって検出されたノードのヘルス問題、それらの問題がノード条件またはイベントとしてどのように表示されるか、ノードモニタリングエージェントを設定する方法について説明します。
EKS ノードモニタリングエージェントは、EKS 自動ノード修復の有無にかかわらず使用できます。EKS 自動ノード修復の詳細については、「EKS クラスター内のノードを自動的に修復する」を参照してください。
EKS ノードモニタリングエージェントのソースコードは、GitHub の aws/eks-node-monitoring-agent
ノードのヘルスの問題
次の表は、ノードモニタリングエージェントが検出できるノードのヘルス問題を示しています。次の 2 種類の問題があります。
AcceleratedHardware ノードのヘルス問題
次の表に記載されている、緊急度が「条件」である問題について、モニタリング条件は AcceleratedHardwareReady です。以下の表のイベントと条件は、NVIDIA および Neuron 関連のノードのヘルス問題に関するものです。
| 名前 | 緊急度 | 説明 | 修復アクション |
|---|---|---|---|
|
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 エラーが発生しました。 |
なし |
NVIDIA XID エラーコード
ノードモニタリングエージェントは、GPU カーネルログから NVIDIA XID エラーを検出します。XID エラーは 2 つのカテゴリに分類されます。
-
既知の XID コード – ノード条件 (
AcceleratedHardwareReady=False) を設定し、有効になっている場合に自動修復をトリガーする重大なエラー。理由コードの形式はNvidiaXID[Code]Errorです。EKS ノードモニタリングエージェントが検出する既知の XID コードは、修復アクションを必要とする NVIDIA XID コードの完全なリストを表していない場合があります。 -
不明な XID コード – Kubernetes イベントとしてのみログに記録されます。これらは自動修復をトリガーしません。理由コードの形式は
NvidiaXID[Code]Warningです。不明な XID エラーを調査するには、dmesg | grep -i nvrmでカーネルログを確認します。
XID エラーの詳細については、「NVIDIA GPU のデプロイおよび管理ドキュメント」の「Xid エラー
以下の表に、既知の XID コード、その意味、および有効になっている場合のデフォルトのノード修復アクションを示します。
| XID コード | 説明 | 修復アクション |
|---|---|---|
|
13 |
グラフィックエンジン例外 – GPU グラフィックエンジンエラーが発生しました。通常、ソフトウェアの問題やドライバーのバグが原因です。 |
リブート |
|
31 |
GPU メモリページの障害 – アプリケーションがマッピングされていない、またはアクセスできない GPU メモリにアクセスしようとしました。 |
リブート |
|
48 |
ダブルビット ECC エラー – GPU メモリで修正不可能なダブルビットエラーが発生しました。これはハードウェアの劣化の可能性を示しています。 |
リブート |
|
63 |
GPU メモリの再マッピングイベント – 検出されたエラーにより、GPU ドライバーが GPU メモリの一部を再マッピングしました。これは多くの場合、回復可能です。 |
リブート |
|
64 |
GPU メモリの再マッピングの失敗 – GPU が欠陥メモリを再マッピングできませんでした。これはハードウェアの問題を示しています。 |
リブート |
|
74 |
NVLink エラー – GPU 間の高速 NVLink 相互接続でエラーが発生しました。 |
置換 |
|
79 |
GPU がバスから切断された – GPU は PCIe 経由でアクセスできなくなりました。これは通常、ハードウェアの障害や電源の問題を示しています。 |
置換 |
|
94 |
限定的なメモリエラー – メモリエラーが発生しましたが、その影響は限定的で、他のアプリケーションには影響しませんでした。 |
リブート |
|
95 |
非限定的なメモリエラー – メモリエラーが発生し、他のアプリケーションやシステムメモリに影響を与えた可能性があります。 |
リブート |
|
119 |
GSP RPC タイムアウト – GPU システムプロセッサとの通信がタイムアウトしました。これは、ファームウェアの問題が原因である可能性があります。 |
置換 |
|
120 |
GSP エラー – GPU システムプロセッサでエラーが発生しました。 |
置換 |
|
121 |
C2C エラー – チップ間相互接続 (マルチダイ GPU で使用) でエラーが発生しました。 |
置換 |
|
140 |
ECC 未回復エラー – ECC エラーが検出されず、データが破損した可能性があります。 |
置換 |
GPU ヘルスに関連する現在のノード条件を表示するには、以下のコマンドを実行します。
kubectl get nodes -o custom-columns='NAME:.metadata.name,ACCELERATOR_READY:.status.conditions[?(@.type=="AcceleratedHardwareReady")].status,REASON:.status.conditions[?(@.type=="AcceleratedHardwareReady")].reason'
クラスターで XID 関連のイベントを表示するには、以下のいずれかのコマンドを実行します。
kubectl get events | grep -i "NvidiaXID"
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 |
イベント |
接続追跡がインスタンスの最大数を超え、新しい接続を確立できなかったため、パケットロスが発生する可能性があります。 |
なし |
|
EFAErrorMetric |
イベント |
EFA ドライバーメトリクスは、パフォーマンスが低下しているインターフェイスがあることを示しています。 |
なし |
|
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 や空き領域が使用可能であっても、ファイルを作成できない場合があります。 |
なし |
ノードモニタリングエージェントを設定する
EKS ノードモニタリングエージェントは DaemonSet としてデプロイされます。EKS アドオンとしてデプロイする場合、以下の設定値を使用してインストールをカスタマイズできます。デフォルト設定については、EKS ノードモニタリングエージェントの Helm チャート
| 設定オプション | 説明 |
|---|---|
|
|
モニタリングエージェントの CPU リソースリクエスト。 |
|
|
モニタリングエージェントのメモリリソースリクエスト。 |
|
|
モニタリングエージェントの CPU リソース制限。 |
|
|
モニタリングエージェントのメモリリソース制限。 |
|
|
テイントが適用されたノードでモニタリングエージェントをスケジュールするための許容範囲。 |
|
|
モニタリングエージェントに渡す追加のコマンドライン引数。 |
注記
EKS アドオンまたは Helm インストールを使用して、hostname-override と verbosity を monitoringAgent.additionalArgs として設定できます。現在、EKS アドオンまたは Helm インストールでは、追加の引数を使用してノードモニタリングエージェントの probe-address (8002) または metrics-address (8003) をカスタマイズすることはできません。
ノードモニタリングエージェントには、NVIDIA GPU をモニタリングするための NVIDIA DCGM (Data Center GPU Manager) サーバーコンポーネント (nv-hostengine) が含まれています。このコンポーネントは、エージェントの Helm チャートnodeAffinity で示されるように、NVIDIA GPU インスタンスタイプのノードでのみ実行されます。EKS ノードモニタリングエージェントで既存の NVIDIA DCGM インストールを使用することはできません。この機能が必要な場合は、EKS ロードマップ GitHub 問題 #2763
EKS ノードモニタリングエージェントを EKS アドオンとしてデプロイする場合、以下の設定値を使用して NVIDIA DCGM のインストールをカスタマイズできます。
| 設定オプション | 説明 |
|---|---|
|
|
DCGM エージェントの CPU リソースリクエスト。 |
|
|
DCGM エージェントのメモリリソースリクエスト。 |
|
|
DCGM エージェントの CPU リソース制限。 |
|
|
DCGM エージェントのメモリリソース制限。 |
|
|
テイントが適用されたノードで DCGM エージェントをスケジュールするための許容範囲。 |
以下の AWS CLI コマンドを使用して、EKS ノードモニタリングエージェントの EKS アドオンのバージョンとスキーマに関する有用な情報を取得できます。
Kubernetes バージョンの最新のエージェントアドオンバージョンを取得します。1.35 を Kubernetes バージョンに置き換えます。
aws eks describe-addon-versions \ --addon-name eks-node-monitoring-agent \ --kubernetes-version 1.35 \ --query='addons[].addonVersions[].addonVersion'
EKS アドオンでサポートされているエージェントアドオンスキーマを取得します。v1.5.1-eksbuild.1 をエージェントバージョンに置き換えます。
aws eks describe-addon-configuration \ --addon-name eks-node-monitoring-agent \ --addon-version v1.5.1-eksbuild.1