在 Amazon EKS 上管理硬件设备 - Amazon EKS

帮助改进此页面

要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 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/gpuaws.amazon.com/neuroncore)进行发布,您可以在容器的资源请求和限制中请求这些资源。尽管设备插件得到广泛支持和使用,但仍存在以下限制:

  • 设备以不透明整数计数的形式请求,无法基于属性进行筛选。

  • 不支持容器之间或容器组(pod)之间的设备共享。

  • 无法跨设备类型进行表达性的拓扑感知分配。

  • 通常需要自定义调度器扩展才能实现智能放置。

动态资源分配(DRA)是 Kubernetes 的一项功能,在 Kubernetes 1.34 版本中正式发布,它解决了上述限制。借助 DRA,设备驱动程序通过 ResourceSlice 对象向 Kubernetes 调度器发布丰富的设备属性。您使用引用 DeviceClass 类别的 ResourceClaimResourceClaimTemplate 对象请求设备。

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/neuroncoreaws.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 资源(ResourceClaimResourceClaimTemplateDeviceClass)与设备插件使用的资源(resource.limitsresource.requests)不同。从设备插件迁移到 DRA 需要更新您的工作负载规格。

  • 设备插件在所有 Kubernetes 版本中仍将获得全面支持。如果您的集群运行的 Kubernetes 版本低于 1.34,或者您使用了 Karpenter、EKS Auto Mode 或 Bottlerocket,请继续使用设备插件。

主题