帮助改进此页面
要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。
在 Amazon EKS 上管理硬件设备
Amazon EKS 支持两种 Kubernetes 机制来管理 EKS 集群中的专用硬件设备:动态资源分配 (DRA) 和设备插件。这两种机制都使工作负载能够访问硬件加速器(如 NVIDIA GPU 和 AWS Trainium 芯片)以及高性能网络设备(如 Elastic Fabric Adapter(EFA))。对于 Kubernetes 1.34 及更高版本的新部署,建议使用 DRA 驱动程序,因为 DRA 提供了更丰富的设备选择、拓扑感知安排和设备共享能力,而这些是设备插件无法实现的。
有关这两个 Kubernetes 功能的通用信息,请参阅 Kubernetes 文档中的动态资源分配
动态资源分配与设备插件
Kubernetes 设备插件一直是向 Kubernetes 工作负载公开专用硬件的主要机制。设备插件将设备作为扩展资源(例如 nvidia.com/gpu 或 aws.amazon.com/neuroncore)进行发布,您可以在容器的资源请求和限制中请求这些资源。尽管设备插件得到广泛支持和使用,但仍存在以下限制:
-
设备以不透明整数计数的形式请求,无法基于属性进行筛选。
-
不支持容器之间或容器组(pod)之间的设备共享。
-
无法跨设备类型进行表达性的拓扑感知分配。
-
通常需要自定义调度器扩展才能实现智能放置。
动态资源分配(DRA)是 Kubernetes 的一项功能,在 Kubernetes 1.34 版本中正式发布,它解决了上述限制。借助 DRA,设备驱动程序通过 ResourceSlice 对象向 Kubernetes 调度器发布丰富的设备属性。您使用引用 DeviceClass 类别的 ResourceClaim 和 ResourceClaimTemplate 对象请求设备。
DRA 支持:
-
使用通用表达式语言(CEL)
表达式进行基于属性的设备选择。 -
拓扑感知分配,确保设备位于同一 PCIe 交换机或 NUMA 域内。
-
通过共享
ResourceClaim引用在多个容器或容器组(pod)之间共享设备。 -
基于约束的调度,可协调不同类型的设备。
适用于 Amazon EKS 的 DRA 驱动程序
以下 DRA 驱动程序通常用于在 Amazon EKS 集群中管理专用硬件设备。
- Neuron DRA 驱动程序
-
Neuron DRA 驱动程序管理 AWS Trainium 和 AWS Inferentia2 设备的分配,支持拓扑感知安排、连接设备子集分配以及逻辑 NeuronCore(LNC)配置,无需自定义调度器扩展。
- NVIDIA DRA 驱动程序
-
GPU NVIDIA DRA 驱动程序
支持 NVIDIA GPU 的灵活分配和动态重配置,包括在 EC2 Grace-Blackwell 实例上为多节点 NVLink(MNNVL)工作负载提供 ComputeDomain资源支持。有关在 EC2 Grace-Blackwell 实例上使用ComputeDomains的更多信息,请参阅 将 P6e-GB200 UltraServer 与 Amazon EKS 搭配使用。
Amazon EKS 设备插件
以下设备插件通常用于管理 Amazon EKS 集群中的专用硬件设备。
- EFA 设备插件
-
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 Auto Mode 配置的计算不兼容。您必须将 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 Auto Mode 或 Bottlerocket,请继续使用设备插件。