このページの改善にご協力ください
このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。
Amazon EKS でハードウェアデバイスを管理する
Amazon EKS は、EKS クラスターで特殊なハードウェアデバイスを管理できるように、動的リソース割り当て (DRA) とデバイスプラグインという 2 つの Kubernetes メカニズムをサポートしています。どちらも、ワークロードが NVIDIA GPU や AWS Trainium チップなどのハードウェアアクセラレーターや、Elastic Fabric Adapter (EFA) などのハイパフォーマンスネットワークデバイスにアクセスできるようにするメカニズムです。DRA は豊富なデバイス選択、トポロジー認識スケジューリング、デバイス共有といったデバイスプラグインにはない機能を備えているため、Kubernetes バージョン 1.34 以降を新たにデプロイする場合には DRA ドライバーを使用することをお勧めします。
この 2 つの Kubernetes 機能に関する全般的な情報については、動的リソース割り当て
動的リソース割り当てとデバイスプラグインの比較
Kubernetes デバイスプラグインは、これまで特殊なハードウェアを Kubernetes ワークロードに公開する際に第一に使用されてきたメカニズムです。ユーザーからのコンテナリソースのリクエストや制限を受けて、デバイスを拡張リソース (nvidia.com/gpu や aws.amazon.com/neuroncore など) としてアドバタイズします。広くサポートされ、使用されていますが、次のような制限があります。
-
デバイスは、属性ベースのフィルタリングがない不透明な整数カウントとしてリクエストされます。
-
コンテナまたはポッド間でデバイスを共有する機能はサポートされていません。
-
トポロジー認識割り当てをデバイスタイプ全体で表現力豊かに行う機能はありません。
-
インテリジェントに配置するには、多くの場合、カスタムスケジューラ拡張機能が必要です。
動的リソース割り当て (DRA) は、これらの制限に対処するために Kubernetes バージョン 1.34 で一般公開された Kubernetes 機能です。DRA により、デバイスドライバーは ResourceSlice オブジェクトを介して豊富なデバイス属性を Kubernetes スケジューラに発行します。デバイスをリクエストするには、DeviceClass カテゴリを参照する ResourceClaim オブジェクトおよび ResourceClaimTemplate オブジェクトを使用します。
DRA では次のことが可能になります。
-
Common Expression Language (CEL)
式を使用して属性ベースでデバイスを選択する。 -
トポロジ認識割り当てにより、複数のデバイスが同じ PCIe スイッチまたは NUMA ドメインに共存できるようになる。
-
ResourceClaimリファレンスを共有することで、複数のコンテナやポッド間でデバイスを共有する。 -
さまざまなデバイスタイプに合わせて制約ベースでスケジュールする。
Amazon EKS 向け DRA ドライバー
次の DRA ドライバーは、Amazon EKS クラスターで特殊なハードウェアデバイスを管理する場合によく使用されます。
- Neuron DRA ドライバー
-
Neuron DRA ドライバーは、トポロジー認識スケジューリング、コネクテッドデバイスサブセット割り当て、Logical NeuronCore (LNC) 設定により、AWS Trainium と AWS Inferentia2 のデバイス割り当てを管理します。カスタムスケジューラ拡張機能は必要ありません。
- NVIDIA DRA ドライバー
-
GPU 用 NVIDIA DRA ドライバー
を使用すると、NVIDIA GPU の柔軟な割り当てや動的な再設定が可能になります。例えば、EC2 Grace-Blackwell インスタンスでマルチノード NVLink (MNNVL) ワークロード用に ComputeDomainリソースをサポートしています。EC2 Grace-Blackwell インスタンスでのComputeDomainsの詳しい使用方法については、「Amazon EKS で P6e-GB200 UltraServer を使用する」を参照してください。
Amazon EKS 用のデバイスプラグイン
次のデバイスプラグインは、Amazon EKS クラスターで特殊なハードウェアデバイスを管理する場合によく使用されます。
- EFA デバイスプラグイン
-
EFA デバイスプラグインは、各ノードで使用可能な EFA デバイスをすべて検出して、
vpc.amazonaws.com/efa拡張リソースとしてアドバタイズします。 - Neuron デバイスプラグイン
-
Neuron デバイスプラグイン
は、Neuron ハードウェアを aws.amazon.com/neuroncoreおよびaws.amazon.com/neuron拡張リソースとして公開します。各ノードで使用可能な Neuron デバイスを検出して、割り当て可能なリソースとしてアドバタイズし、そのライフサイクルを管理します。 - NVIDIA デバイスプラグイン
-
NVIDIA デバイスプラグイン
は、NVIDIA GPU を nvidia.com/gpu拡張リソースとしてアドバタイズし、GPU の正常性を追跡します。
考慮事項
Amazon EKS で DRA ドライバーを使用する前に、以下の考慮事項を検討してください。
-
DRA は Kubernetes バージョン 1.33 以降の Amazon EKS で使用できますが、アップストリーム Kubernetes の問題
があるため、Kubernetes バージョン 1.34 以降をお勧めします。クラスターコントロールプレーンとノードが、DRA をサポートする Kubernetes バージョンを実行している必要があります。 -
DRA は、現時点では Karpenter または EKS 自動モードでプロビジョニングされたコンピューティングと互換性がありません。DRA ドライバーでは、EKS マネージドノードグループまたはセルフマネージドノードを使用する必要があります。
-
同じノードで同じデバイスタイプの DRA ドライバーとデバイスプラグインを同時に実行することはできません。対応する DRA ドライバーをインストールする前に、デバイスプラグインをアンインストールするか、別のノードにデプロイします。DRA ドライバーとデバイスプラグインの互換性に関する最新の情報については、アップストリーム Kubernetes KEP-5004
を参照してください。 -
DRA で使用される Kubernetes API リソース (
ResourceClaim、ResourceClaimTemplate、DeviceClass) は、デバイスプラグインのもの (resource.limits、resource.requests) とは異なります。デバイスプラグインから DRA に移行する場合は、ワークロード仕様を更新する必要があります。 -
デバイスプラグインは、すべての Kubernetes バージョンで引き続き完全にサポートされます。クラスターで実行されている Kubernetes のバージョンが 1.34 より前である場合や、Karpenter または EKS 自動モードを使用する場合や、Bottlerocket を使用する場合は、引き続きデバイスプラグインを使用してください。