

 **協助改進此頁面** 

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

若要為本使用者指南貢獻內容，請點選每個頁面右側面板中的**在 GitHub 上編輯此頁面**連結。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 Amazon EKS 上管理硬體裝置
<a name="device-management"></a>

Amazon EKS 支援兩種 Kubernetes 機制來管理 EKS 叢集中的特殊硬體裝置：*動態資源分配 (DRA)* 和*裝置外掛程式*。這兩種機制都可讓工作負載存取 NVIDIA GPUs 和 AWS Trainium 晶片等硬體加速器，以及 Elastic Fabric Adapter (EFA) 等高效能網路裝置。

在 Karpenter、EKS 受管節點群組或自我管理節點中使用[靜態容量佈建](https://karpenter.sh/docs/concepts/nodepools/#static-nodepool)時，我們建議將 DRA 驅動程式用於 Kubernetes 1.34 版及更新版本的新部署。EKS Auto 模式目前不支援 DRA。DRA 提供更豐富的裝置選擇、拓撲感知排程，以及裝置外掛程式無法實現的裝置共用功能。

如需這兩個 Kubernetes 功能的一般資訊，請參閱[動態資源分配](https://kubernetes.io/docs/concepts/scheduling-eviction/dynamic-resource-allocation/)和[裝置外掛程式](https://kubernetes.io/docs/concepts/extend-kubernetes/compute-storage-net/device-plugins/)的 Kubernetes 文件。

## 動態資源分配與裝置外掛程式的比較
<a name="_dynamic_resource_allocation_vs_device_plugins"></a>

Kubernetes 裝置外掛程式是向 Kubernetes 工作負載公開專用硬體的主要機制。裝置外掛程式會將裝置公告為您在容器資源請求和限制中請求的延伸資源 （例如 `nvidia.com/gpu`或 `aws.amazon.com/neuroncore`)。雖然裝置外掛程式受到廣泛支援和使用，但它們具有限制：
+ 系統會將裝置請求為不透明整數計數，而沒有屬性型篩選。
+ 不支援容器或 Pod 之間的裝置共用。
+ 沒有跨裝置類型的表達式拓撲感知配置。
+ 智慧型置放通常需要自訂排程器延伸。

動態資源分配 (DRA) 是 Kubernetes 1.34 版中普遍提供的 Kubernetes 功能，可解決這些限制。透過 DRA，裝置驅動程式會透過 `ResourceSlice` 物件將豐富的裝置屬性發佈至 Kubernetes 排程器。您可以使用 `ResourceClaim`和參考`DeviceClass`類別的`ResourceClaimTemplate`物件來請求裝置。

DRA 啟用：
+ 使用[通用表達式語言 (CEL)](https://kubernetes.io/docs/reference/using-api/cel/) 表達式的屬性型裝置選擇。
+ 拓撲感知配置，可確保裝置位於相同的 PCIe 交換器或 NUMA 網域上。
+ 透過共用`ResourceClaim`參考在多個容器或 Pod 之間共用裝置。
+ 使用 MIG 或時間分割時動態分割和共用 NVIDIA GPUs 

## Amazon EKS 的 DRA 驅動程式
<a name="_dra_drivers_for_amazon_eks"></a>

下列 DRA 驅動程式通常用於管理 Amazon EKS 叢集中的特殊硬體裝置。

NVIDIA DRA 驅動程式  
GitHub 上[適用於 GPUs 的 NVIDIA DRA 驅動程式](https://github.com/kubernetes-sigs/dra-driver-nvidia-gpu)可靈活配置和動態設定 NVIDIA GPUs。[在 Amazon EKS 上使用 NVIDIA DRA 驅動程式或裝置外掛程式](device-management-nvidia-dra-device-plugin.md) 如需使用 NVIDIA DRA 驅動程式管理 GPUs 的相關資訊[搭配 Amazon EKS 使用 P6e-GB200 UltraServers](ml-eks-nvidia-ultraserver.md)，以及使用 EC2 Grace-Blackwell 執行個體`ComputeDomains`處理多節點 NVLink (MNNVL) 工作負載的相關資訊，請參閱 。

EFA DRA 驅動程式  
EFA DRA 驅動程式 ([GitHub 上的 DRANET](https://github.com/kubernetes-sigs/dranet)) 使用拓撲感知排程來管理 Elastic Fabric Adapter (EFA) 裝置配置，將 EFA 介面與其拓撲本機 GPUs 或 Neuron 裝置配對，並支援 Pod 之間的裝置共用。 GitHub 如需詳細資訊，請參閱[在 Amazon EKS 上管理 EFA 裝置](device-management-efa.md)。

Neuron DRA 驅動程式  
Neuron DRA 驅動程式使用拓撲感知排程、連線裝置子集配置和邏輯 NeuronCore (LNC) 組態來管理 AWS Trainium 和 AWS Inferentia2 裝置配置，而不需要自訂排程器延伸。如需詳細資訊，請參閱[在 Amazon EKS 上管理 Neuron 裝置](device-management-neuron.md)。

## Amazon EKS 的裝置外掛程式
<a name="_device_plugins_for_amazon_eks"></a>

下列裝置外掛程式通常用於管理 Amazon EKS 叢集中的特殊硬體裝置。

NVIDIA 裝置外掛程式  
GitHub 上的 [NVIDIA 裝置外掛程式](https://github.com/NVIDIA/k8s-device-plugin)會將 NVIDIA GPUs 公告為`nvidia.com/gpu`延伸資源，並追蹤 GPUs 的運作狀態。

EFA 裝置外掛程式  
EFA 裝置外掛程式會探索每個節點上所有可用的 EFA 裝置，並將 EFA 裝置公告為`vpc.amazonaws.com/efa`延伸資源。

Neuron 裝置外掛程式  
[Neuron 裝置外掛程式](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/containers/tutorials/k8s-setup.html)會將 Neuron 硬體公開為 `aws.amazon.com/neuroncore`和`aws.amazon.com/neuron`延伸資源。它會探索每個節點上可用的 Neuron 裝置、將它們公告為可配置的資源，並管理其生命週期。

## 考量事項
<a name="_considerations"></a>

在 Amazon EKS 上使用 DRA 驅動程式之前，請檢閱下列考量事項：
+ DRA 適用於 Amazon EKS 搭配 Kubernetes 1.33 版及更新版本，但建議用於 Kubernetes 1.34 版及更新版本，因為 GitHub 上存在上游 [Kubernetes 問題](https://github.com/kubernetes/kubernetes/issues/133920)。您的叢集控制平面和節點必須執行支援 DRA 的 Kubernetes 版本。
+ DRA 目前與 EKS Auto 模式不相容。
+ 使用動態佈建容量時，DRA 目前與 Karpenter 不相容。您必須使用 Karpenter 中的靜態容量佈建，或 EKS 受管節點群組或具有 DRA 驅動程式的自我管理節點。
+ 相同裝置類型的 DRA 驅動程式和裝置外掛程式**不得**同時在相同節點上執行。在安裝對應的 DRA 驅動程式之前，請先解除安裝裝置外掛程式，或將其部署在不同的節點上。在相同節點上執行相同裝置的 DRA 驅動程式和裝置外掛程式，可能會導致基礎硬體裝置的無提示過度訂閱。
+ DRA 使用與裝置外掛程式 (`ResourceClaim`、`DeviceClass`) `ResourceClaimTemplate`不同的 Kubernetes API 資源 (`resource.limits`、、)`resource.requests`。您可以使用 DRA 來管理裝置外掛程式延伸資源，而無需變更工作負載規格。如需 DRA 中擴充資源的詳細資訊，請參閱 [Kubernetes 網站上的 Kubernetes 文件](https://kubernetes.io/docs/concepts/scheduling-eviction/dynamic-resource-allocation/#extended-resource)。
+ 適用於 NVIDIA、EFA 和 Neuron 的 DRA 驅動程式與 EKS 最佳化 AL2023 AMIs 和 Bottlerocket AMIs。如果您使用 NVIDIA DRA 驅動程式搭配 Bottlerocket，請停用包含在 Bottlerocket NVIDIA 變體中的 NVIDIA 裝置外掛程式。
+ 所有 Kubernetes 版本都完全支援裝置外掛程式。

## DRA ResourceClaim 與 ResourceClaimTemplate
<a name="_dra_resourceclaim_vs_resourceclaimtemplate"></a>

使用 DRA 時，您可以透過 `ResourceClaim`或 `ResourceClaimTemplate` 物件請求裝置。這兩種資源類型具有不同的用途，並具有不同的生命週期行為。

ResourceClaim  
`ResourceClaim` 是您獨立於任何 Pod 建立的具名 Kubernetes 物件。您可以使用 `resourceClaimName` 欄位，在 Pod 規格中依名稱加以參考。`ResourceClaim` 具有下列特性：  
+ 在建立任何參考叢集的 Pod 之前，它必須存在於叢集中。如果宣告不存在，Pod 會保持待定狀態。
+ 它會持續存在，直到您明確刪除它為止，無論是否有任何 Pod 參考它。
+ 多個 Pod 可以參考相同的 `ResourceClaim`，以啟用裝置共用。所有參考相同宣告的 Pod 都會共用相同配置裝置的存取權，並排程到相同的節點。

  `ResourceClaim` 當您需要多個 Pod 來共用對相同裝置的存取權，或需要宣告在單一 Pod 的生命週期之後存在時，請使用 。

ResourceClaimTemplate  
`ResourceClaimTemplate` 定義 Kubernetes 用來為每個 Pod 自動產生唯一 `ResourceClaim`的範本。您可以使用 `resourceClaimTemplateName` 欄位在 Pod 規格中參考它。`ResourceClaimTemplate` 本身不繫結至任何 Pod，它是可重複使用的範本，可獨立保留。`ResourceClaimTemplate` 具有下列特性：  
+ Kubernetes 會`ResourceClaim`為每個參考範本的 Pod 建立新的 。每個 Pod 都會取得自己的個別裝置集。
+ 每個產生的 `ResourceClaim` 都會繫結至觸發其建立的 Pod 生命週期。刪除 Pod 時，`ResourceClaim`也會刪除產生的關聯 。`ResourceClaimTemplate` 本身不受影響，並繼續為未來的 Pod 產生新的宣告。

  當工作負載中的每個 Pod 需要具有類似組態的專屬裝置`ResourceClaimTemplate`時，請使用 。例如，`ResourceClaimTemplate`針對使用平行執行的任務中的 Pod，使用 ，其中每個 Pod 都需要自己的 GPU 或 EFA 裝置。

下表摘要說明 `ResourceClaim`和 之間的差異`ResourceClaimTemplate`。


| Behavior (行為) | ResourceClaim | ResourceClaimTemplate | 
| --- | --- | --- | 
| 建立 | 您在 Pod 參考它之前手動建立它 | Kubernetes 會根據 Pod 自動產生宣告 | 
| 生命週期 | 持續到您刪除為止 | 範本會持續存在，直到您刪除為止。產生的每個 `ResourceClaim` 都會繫結至觸發其建立的 Pod。 | 
| 在 Pod 之間共用裝置 | 支援。多個 Pod 可以參考相同的宣告。 | 不支援。每個 Pod 都會取得個別的宣告。 | 
| Pod 規格欄位 |  `resourceClaimName`  |  `resourceClaimTemplateName`  | 

如需使用`ResourceClaim`物件在 Pod 之間共用 EFA 裝置的範例，請參閱 [在多個 Pod 之間共用 EFA 裝置](device-management-efa.md#efa-dra-share)。如需搭配拓撲感知配置使用`ResourceClaimTemplate`物件的範例，請參閱 [拓撲感知 EFA 和 GPU/Neuron 裝置配置](device-management-efa.md#efa-dra-topology-aware)。

## 主題
<a name="_topics"></a>
+  [在 Amazon EKS 上管理 EFA 裝置](device-management-efa.md) 
+  [在 Amazon EKS 上管理 Neuron 裝置](device-management-neuron.md) 
+  [在 Amazon EKS 上管理 NVIDIA GPUs](device-management-nvidia.md) 
+  [在 Amazon EKS 上使用 NVIDIA DRA 驅動程式或裝置外掛程式](device-management-nvidia-dra-device-plugin.md) 
+  [在 Amazon EKS 上使用多執行個體 GPUs (MIG) 搭配 NVIDIA GPUs](device-management-nvidia-mig.md) 
+  [在 Amazon EKS 上使用時間分割搭配 NVIDIA GPUs](device-management-nvidia-time-slicing.md) 