AMD GPUプラグイン

AMD GPUプラグイン・クラスタ・アドオンを有効にすると、次のキー/値ペアを引数として渡すことができます。

AMD GPUワーカー・ノードで実行されているワークロードが予期せず中断されないようにするために、Oracleでアドオンを自動的に更新するように指定するのではなく、デプロイするAMD GPUプラグイン・アドオンのバージョンを選択することをお薦めします。

ほとんどのクラスタ・アドオンに共通の構成引数
キー(APIおよびCLI) キーの表示名(コンソール) 説明 必須/オプション デフォルト値 値の例
affinity affinity

アフィニティ・スケジューリング・ルールのグループ。

プレーン・テキストまたはBase64エンコードされたJSON形式。

未使用者:
  • NVIDIA GPUオペレータ
可能な等価:
  • ノード機能の検出、master.affinityの使用
  • NVIDIA Network Operator、operator.affinityを使用
  • CSIドライバSMB、contoller.affinityを使用
  • AMD GPUオペレータ、controllerManager.affinityを使用
オプション null null
nodeSelectors ノード・セレクター

ノード・セレクタおよびノード・ラベルを使用して、アドオン・ポッドが実行されるワーカー・ノードを制御できます。

ポッドをノードで実行するには、ポッドのノード・セレクタのキー/値がノードのラベルと同じである必要があります。

nodeSelectorsを、ポッドのノード・セレクタとワーカー・ノードのラベルの両方と一致するキー/値のペアに設定します。

プレーン・テキストまたはBase64エンコードされたJSON形式。

未使用者:
  • NVIDIA GPUオペレータ
  • CSIドライバ SMB
可能な等価:
  • ノード機能の検出、worker.nodeSelectorの使用
  • NVIDIA Network Operator、operator.nodeSelectorsを使用
  • AMD GPU演算子。selectorまたはcontrollerManager.nodeSelectorを使用します
オプション null {"foo":"bar", "foo2": "bar2"}

ポッドは、foo=barまたはfoo2=bar2ラベルを持つノードでのみ実行されます。

numOfReplicas numOfReplicas アドオン・デプロイメントのレプリカの数。
未使用者:
  • AMD GPUプラグイン
  • NVIDIA GPUオペレータ
  • NVIDIAネットワーク事業者
  • CSIドライバ SMB
可能な等価:
  • CoreDNS。nodesPerReplicaを使用します。
  • ノード機能の検出、master.replicaCountの使用
  • AMD GPUオペレータ、controllerManager.replicasを使用
必須 1

クラスタごとにアドオン・デプロイメントのレプリカを1つ作成します。

2

クラスタごとにアドオン・デプロイメントのレプリカを2つ作成します。

rollingUpdate rollingUpdate

maxSurgeおよびmaxUnavailableによるローリング更新の望ましい動作を制御します。

プレーン・テキストまたはBase64エンコードされたJSON形式。

未使用者:
  • ノード機能検出
  • NVIDIAネットワーク事業者
  • CSIドライバ SMB
可能な等価:
  • NVIDIA GPU Operator、daemonsets.rollingUpdate.maxUnavailableを使用
  • AMD GPU演算子。devicePluginmetricsExportertestRunner configManagerまたはdraDriverupgradePolicyを使用します。
オプション null null
tolerations 許容範囲

taintおよびtolerationsを使用して、アドオン・ポッドが実行されるワーカー・ノードを制御できます。

taintがあるノード上でポッドを実行するには、ポッドに対応する許容範囲が必要です。

tolerationsを、ポッドの許容範囲とワーカー・ノードのtaintの両方と一致するキー/値のペアに設定します。

プレーン・テキストまたはBase64エンコードされたJSON形式。

可能な等価:
  • ノード機能の検出。master.tolerationsまたはworker.tolerations、あるいはその両方を使用します。
  • NVIDIA GPU Operator、daemonsets.tolerationsを使用
  • NVIDIA Network Operator、operator.tolerationsを使用
  • CSIドライバSMB、controller.tolerationsを使用
  • AMD GPUオペレータ。 devicePluginmetricsExportertestRunnerconfigManagerdraDriverまたはcontrollerManagerで許容値を使用します。
オプション null [{"key":"tolerationKeyFoo", "value":"tolerationValBar", "effect":"noSchedule", "operator":"exists"}]

この許容値を持つポッドのみが、tolerationKeyFoo=tolerationValBar:noSchedule taintを持つワーカー・ノードで実行できます。

topologySpreadConstraints topologySpreadConstraints

指定されたトポロジ間で一致するポッドを分散する方法。

プレーン・テキストまたはBase64エンコードされたJSON形式。

未使用者:
  • ノード機能検出
  • NVIDIA GPUオペレータ
  • NVIDIAネットワーク事業者
  • CSIドライバ SMB
  • AMD GPU演算子
オプション null null
このクラスタ・アドオンに固有の構成引数
キー(APIおよびCLI) キーの表示名(コンソール) 説明 必須/オプション デフォルト値 値の例
amd-gpu-device-plugin.ContainerResources amd-gpu-device-pluginコンテナリソース

アドオン・コンテナがリクエストするリソース数量を指定し、アドオン・コンテナが超過できないリソース使用量制限を設定できます。

プレーン・テキストまたはBase64エンコードされたJSON形式。

オプション null {"limits": {"cpu": "500m", "memory": "200Mi" }, "requests": {"cpu": "100m", "memory": "100Mi"}}

100ミリコアのCPUと100メガバイトのメモリーをリクエストするアドオン・コンテナを作成します。アドオンコンテナを500ミリコアのCPUと200メビバイトのメモリーに制限します。

pulse ヘルス・チェックの有効化

プラグインがデバイス・ヘルス・ステータスでkubeletを更新する時間間隔(秒)。

ヘルス・チェックを無効にするには、0に設定します。

オプション 0
大規模なクラスタに関する考慮事項

次の表に、大規模クラスタでこのクラスタ・アドオンを構成する際の考慮事項を示します。

引数名 ロールWRTノード数 説明 クラスタ・サイズが増加するにつれて リスク 推奨事項
amd-gpu-device-plugin.ContainerResources あり

AMD GPUプラグイン・コンテナのCPUおよびメモリー・リクエストおよび制限を定義します。

プラグインは、すべてのGPUノードで実行されます。

合計リソース使用率は、GPUノードの数と直線的に増加します。

次のアクティビティが増加します。

  • GPUヘルス・モニタリング
  • kubeletへのデバイス状態レポート
  • コンテナ・ランタイムとの相互作用

リソースのサイズが小さい場合:

  • プラグインがノード上で不安定になる可能性があります。
  • GPUが amd.com/gpu リソースとして正しく公開されない場合があります。
  • GPUをリクエストしているポッドは、 Pending 状態のままになる場合があります。
  • リソースがスケジューラに誤って報告される場合があります。

次の要因に基づいて、各ノードに割り当てられるメモリーおよびCPUを増やします。

  • ノード上のGPUの数
  • ワークロードの強度

kubeletログ、およびプラグインのCPUとメモリーの使用状況を監視します。

nodeSelectors/affinity あり

ラベルを使用して、プラグインが実行されるノードを制御します。

プラグインがAMD GPUノードでのみ実行されるようにします。

CPUのみのノードで不要なスケジューリングを防止します。

セレクタが指定されていない場合、プラグインはすべてのノードで実行され、リソースを浪費します。

間違ったセレクタが指定されている場合、プラグインはGPUノードで実行されず、GPUはKubernetesに表示されません。

ノードの1~2%に影響する構成ミスが少ない場合でも、構成が正しくないノードが何百個も存在し、GPUの可用性に一貫性がなくなり、スケジュールの失敗が予測できません。

厳密なノードラベル付けを使用します。

tolerations あり

汚染されたGPUノードでプラグインを実行できるかどうかを制御します。

正しく構成されていない場合、AMD GPU Plugin DaemonSetがtaintsを使用してGPUノードでスケジュールに失敗し、GPUリソースが検出されず、GPUがワークロードのスケジューリングに使用できなくなります。

許容値が正しく構成されていない場合、プラグインはGPUノードで実行できず、GPUは使用できなくなります。

許容範囲がGPUノードに適用されるテイントと一致していることを確認します。

pulse あり

プラグインがGPUヘルス情報をkubeletに報告する頻度を制御します。

レポート頻度が高いほど、GPUのヘルス可視性は向上しますが、kubeletおよびAPIトラフィックは増加します。

レポート頻度が低いほど、オーバーヘッドは減少しますが、障害検出は遅延します。

更新の頻度が高すぎる場合、各ノードのCPUオーバーヘッドおよびkubeletの負荷が増加します。

更新の頻度が低すぎたり無効になったりすると、GPUの健全性情報が古くなり、スケジューラはワークロードを異常なGPUに割り当てる可能性があります。

健全性の可視性とオーバーヘッドのバランスをとる中程度の間隔を使用します。

過度に攻撃的な投票は避けましょう。

rollingUpdate なし

更新動作を制御します。

大規模なクラスタでは、多数のノードが同時に更新され、アップグレード中のGPUの可用性に影響する場合があります。

  • GPUワークロードが中断される場合があります。
  • GPUが一時的に使用できなくなる可能性があります。

制御されたローリング更新を使用して、広範囲にわたる中断を回避します。

numOfReplicas なし

この引数は、AMD GPUプラグインでは使用されません。

該当なし 該当なし 該当なし