管理 Amazon EKS 上的 EFA 设备 - Amazon EKS

帮助改进此页面

要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。

管理 Amazon EKS 上的 EFA 设备

Elastic Fabric Adapter (EFA) 是一种用于 Amazon EC2 实例的网络设备,可为机器学习训练和高性能计算(HPC)工作负载实现高性能的节点间通信。Amazon EKS 支持 EFA 设备插件,用于管理 EKS 集群中的 EFA 设备。

创建带有 EFA 接口的 EKS 节点

当您创建带有 EFA 接口的 EKS 节点时,EFA 接口会在实例引导期间完成连接。如果您需要自定义每设备的 EFA 配置,或为启用 EFA 的 EC2 实例使用置放群组,建议使用 EKS 托管节点组或 EKS 自管理节点组。您可以使用启动模板传递每个网络接口的配置。

当使用 EKS Auto Mode 或 Karpenter 进行动态配置时,为请求 vpc.amazonaws.com/efa 的容器组(pod)创建的实例,其所有接口均配置为接口类型 EFA。EKS Auto Mode 和 Karpenter 中的静态容量配置目前不支持每台设备的 EFA 配置。EKS Auto Mode 和 Karpenter 目前不支持置放群组。

当使用 eksctl 并以 efaEnabled 设置配置 EKS 节点时,所有接口都要配置接口类型 EFA,系统会创建一个特定于 EFA 的安全组,并在集群上安装 EFA 设备插件。如果您在使用 eksctl 时需要自定义每设备的 EFA 配置,建议使用 eksctl 对启动模板的支持。

将 EKS 优化的 AMI 与 EFA 配合使用

EKS 优化的 AL2023 加速型 AMI(NVIDIA 和 Neuron)和所有 Bottlerocket AMI 都包含使用 EFA 所需的主机级组件。EKS AL2023 和 Bottlerocket AMI 不包含 EFA 设备插件,在使用 EFA 部署工作负载之前,您必须单独在集群上安装该设备插件。

安装 EFA Kubernetes 设备插件

EFA 设备插件将 EFA 设备作为 vpc.amazonaws.com/efa 扩展资源进行发布。您需要在容器的资源请求和限制中请求 EFA 设备。有关使用训练工作负载设置 EFA 的完整说明,请参阅使用 Elastic Fabric Adapter 在 Amazon EKS 上运行机器学习训练

EFA 设备插件会自动分配在物理 EC2 实例上与 Neuron 加速器和 NVIDIA GPU 在拓扑上相近的 EFA 设备。

先决条件

  • 一个 Amazon EKS 集群。

  • 具有启用 EFA 的 Amazon EC2 实例类型的节点。有关支持的实例类型的列表,请参阅《Amazon EC2 用户指南》中的支持的实例类型

  • 为 EFA 安装主机级组件的节点。如果使用 EKS AL2023 加速型 AMI 或 EKS Bottlerocket AMI,则已包含这些组件。

  • 在命令行环境中安装 Helm,有关更多信息,请参阅安装 Helm 说明

  • kubectl 配置为与您的集群通信,更多信息,请参阅 安装或更新 kubectl

过程

  1. 添加 Helm 图表存储库。

    helm repo add eks https://aws.github.io/eks-charts
  2. 更新本地 Helm 存储库。

    helm repo update
  3. 安装 EFA 设备插件。

    helm install efa eks/aws-efa-k8s-device-plugin -n kube-system
  4. 验证 EFA 设备插件 DaemonSet 正在运行。

    kubectl get daemonset -n kube-system aws-efa-k8s-device-plugin-daemonset
    NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE aws-efa-k8s-device-plugin-daemonset 2 2 2 2 2 <none> 60s
  5. 验证节点是否具有可分配的 EFA 资源。

    kubectl get nodes "-o=custom-columns=NAME:.metadata.name,EFA:.status.allocatable.vpc\.amazonaws\.com/efa"
    NAME EFA ip-192-168-11-225.us-west-2.compute.internal 4 ip-192-168-24-96.us-west-2.compute.internal 4

在容器组(pod)中请求 EFA 设备

要使用设备插件请求 EFA 设备,请在容器的资源请求或限制中指定 vpc.amazonaws.com/efa 资源。

apiVersion: v1 kind: Pod metadata: name: efa-workload spec: containers: - name: app ... resources: limits: vpc.amazonaws.com/efa: 4 hugepages-2Mi: ... requests: vpc.amazonaws.com/efa: 4 hugepages-2Mi: ...