You need to enable JavaScript to run this app.
文档中心
容器服务

容器服务

复制全文
下载 pdf
高性能计算 RDMA
在集群中使用 RDMA 资源(InfiniBand)
复制全文
下载 pdf
在集群中使用 RDMA 资源(InfiniBand)
容器服务支持通过组件使用 RDMA 资源,以消除传统网络通信带给计算任务的瓶颈。本文为您介绍 VKE 集群如何使用 InfiniBand 高性能计算集群中的 RDMA 资源。​
说明​
【公测】:VKE 集群中使用 RDMA 资源功能目前处于公测阶段。​
背景信息​
RDMA 概述​
  • RDMA (Remote Direct Memory Access,远程直接内存访问)是一种高性能网络协议,能够减少 CPU 占用,减少内存带宽瓶颈,提高带宽利用率。主要具有以下优势:​
  • Zero Copy:应用程序可以在不涉及网络软件堆栈的情况下执行数据传输,数据能够被直接发送到缓冲区或者直接从缓冲区接收,而不需要被复制到网络层。​
  • Kernel Bypass:RDMA 提供一个专有的 Verbs interface,应用程序可以直接从用户空间执行数据传输,不需要在内核态与用户态之间执行上下文切换。​
  • CPU Offload:应用程序可以访问远程主机内存,不消耗远程主机中的任何 CPU。远程内存机器将在没有远程进程(或 CPU)的任何干预情况下被读取,远程 CPU 中的缓存不会被所访问的内存内容填充。​
  • 高性能计算集群(High Performance Compute Cluster,HPC 集群)是一种用于处理大规模计算任务的集群计算环境,通常由大量计算节点组成,节点间通过 RDMA 高速网络互联,用于处理大规模计算任务的集群计算环境,支持 RoCE 和 InfiniBand 两种网络模式。​
  • 高性能计算集群可以提供强大的计算能力、大内存、高速存储和高速网络,以满足对计算密集型、数据密集型或两者结合的工作负载的需求。在高性能计算集群中,计算任务会被分配到各个计算节点上进行并行处理,可以充分利用多个节点的计算能力,加快计算速度,提高效率。更多详细说明参见:高性能计算集群概述。​
RDMA 插件模式​
InfiniBand 网络模式下,RDMA 插件目前支持以下几种模式。不同模式的介绍和使用限制,如下表所示。​
​
RDMA 插件模式​
模式说明​
使用限制​
ib-shared(共享)​
将 RDMA 物理网卡进行虚拟化切割,创建成 1 张共享虚拟网卡,提供给容器集群中的 Pod 使用。​
每张 RDMA 物理网卡仅允许创建 1 张共享虚拟网卡。​
ib-shared-multi(1:N 共享)​
将 RDMA 物理网卡进行虚拟化切切割,按需创建成多张共享虚拟网卡,提供给容器集群中的 Pod 使用。​
不建议与 GPU 一起使用。​
​
说明​
如果您的 Pod 需要使用 HostNetwork,推荐基于开源组件使用 RDMA 资源。详情请参见 开源文档。​
使用说明​
下文主要介绍容器服务测试并验证通过的实践内容,为了获得符合预期的结果,同时符合容器服务的 使用限制,请按照本文方案(或在本文推荐的资源上)操作。如需替换方案,您可以联系对应的客户经理咨询。​
使用限制​
  • Pod 不能同时使用 mGPU 与 RDMA 设备插件。​
  • RDMA 设备仅支持在 VPC-CNI 网络模型的集群中使用,且 vpc-cni 组件需升级至 v1.7.1 及以上版本。​
  • 集群 Kubernetes 版本要求如下。如集群版本过低,请先升级版本。详情请参见 升级集群。​
  • 使用 InfiniBand 高性能计算集群中的 RDMA 资源时,不支持 RDMA 插件上报容器 RDMA 指标,不支持 RDMA 拓扑感知调度。​
  • 若 RDMA 环境运行过程中发生 NCCL 网络错误相关报错,可参考 FAQ 解决。​
操作步骤​
步骤一:创建高性能计算集群​
  1. 单击 创建高性能计算集群,参考以下说明配置参数。​
  • ​​​
  • ​
    配置项​
    说明​
    地域及可用区​
    不同地域间内网完全隔离。建议选择距离您业务更近的地域,可以降低网络延时,提高访问速度。可用区是指同一地域中电力、网络隔离的物理区域。​
    本场景要求节点子网、计算规格、高性能计算集群属于同一可用区。例如:可用区 C。​
    名称​
    自定义高性能计算集群的名称。​
    集群属性​
    高性能计算集群的属性,不同属性集群的使用场景和使用限制不同。本场景选择 InfiniBand。​
    • RoCE(RDMA over Converged Ethernet)是基于以太网的远程直接内存访问的网络协议,具有高性能和高性价比等特点,用于高性能计算集群内实例间的数据互联。​
    • InfiniBand 是一种专为远程直接内存访问的网络通信协议,具有高吞吐、低延迟等特点,用于高性能计算集群内实例间的数据互联。您需要选择与实例匹配的集群属性。​
    说明​
    • InfiniBand 属性的高性能计算集群目前仅支持添加高性能计算 GPU 型实例中的 ecs.hpcpni3.45xlarge;RoCE 属性的高性能计算集群支持添加除 ecs.hpcpni3.45xlarge 以外的高性能计算 GPU 型实例。​
    • InfiniBand 集群只能添加、扩容配置 InfiniBand 网路的实例;RoCE 集群只支持添加、扩容配置 RoCE 网络的实例。​
    描述​
    高性能计算集群相关描述或备注信息,根据实际情况填写。​
    ​
步骤二:创建集群并准备资源​
说明​
本步骤仅针对使用 RDMA 资源的关键配置进行详细介绍,包括:创建节点池、添加节点标签、配置 Kubelet 自定义参数、安装 RDMA 组件。创建集群的操作步骤和详细配置参见:创建集群。​
  1. 登录 容器服务控制台,在左侧导航栏选择 集群,进入集群管理页面。​
  1. 单击 创建集群,跳转到集群创建页面的 集群配置 步骤,完成后单击 下一步:节点池配置。​
  • ​​​
  • 集群配置步骤的关键配置项如下,其他参数按需配置即可。​
  • ​
    配置项​
    说明​
    容器网络模型​
    配置集群的容器网络(CNI)方案,本场景必须选择 VPC-CNI。​
    ​
  1. 在节点池配置步骤,新建节点池并完成节点标签、Kubelet 自定义参数等关键配置,完成后单击 下一步:组件配置。​
  • ​​​
  • 节点池配置步骤的关键配置项如下,其他参数按需配置即可。​
  • ​
    配置项​
    说明​
    节点池​
    为确保集群可以正常使用,本场景选择 立即创建。​
    ECS 节点来源​
    节点的来源,本场景选择 创建节点。​
    可用区​
    可用区是同一地域下电力、网络隔离的物理区域,可用区之间内网互通,不同可用区之间物理隔离。不同地域支持的可用区不同,详情请参见 地域和可用区。​
    本场景必须指定一个可用区,以保证节点子网、计算规格、高性能计算集群属于同一可用区。例如:可用区 C。​
    节点子网​
    在指定可用区内选择可用子网,为节点提供网络支撑。​
    计算规格​
    计算规格用于定义节点 CPU、内存、GPU、RDMA 等参数,本场景需要选择具备 RDMA 设备的计算规格,例如:高性能计算 GPU 型。​
    高性能计算集群​
    一种用于处理大规模计算任务的集群计算环境,通常由大量的计算节点组成,这些节点通过 RDMA 高速网络互联,并协同工作以处理复杂的计算任务。​
    本场景选择步骤一中创建的 InfiniBand 属性的高性能计算集群。​
    节点标签(Labels)​
    对应 Kubernetes 中的 Label,能够为节点定义不同的属性,方便批量筛选等需求,可为节点池中的节点批量添加相同标签。​
    本场景通过手动添加vke.node.rdma.mode: {value} 标签方式,为节点或节点池配置 RDMA 使用模式,支持:ib-shared(共享)、ib-shared-multi(1:N 共享)。​
    注意​
    • 除 ecs.hpcg1ve.21xlarge 和华北 ecs.hpcpni2.28xlarge 机型外,均推荐使用 ib-shared 模式,且优先推荐使用 ib-shared。​
    • 您可以通过开启或关闭节点池的 节点标签及污点自动更新 功能,控制是否同步标签到节点池中的存量节点中。关闭该功能时,可能导致集群无法使用节点池中的存量 RDMA 节点资源,请谨慎配置。​
    Kubelet 自定义参数​
    针对时延敏感性较高的业务,提供 Kubelet 自定义参数,用于配置 NUMA 亲和策略,可将为 Container (或 Pod) 分配的资源对齐到一个 (或多个) NUMA 上,从而提高业务的性能。​
    本场景要求添加自定义参数topologyManagerPolicy: best-effort,确保 GPU 和 RDMA 分配在同一个 NUMA 下。​
    ​
  1. 在组件配置步骤,安装 rdma-device-plugin 组件,其他组件按需配置即可。完成后单击 下一步:确认配置。​
  1. 确认新建集群信息和计费准确无误后,阅读 《容器服务专用服务条款》 并勾选同意,单击页面 确定 ,开始创建集群。​
步骤三:使用 RDMA 资源​
  1. 使用 kubectl 连接集群,具体操作参见 连接集群。​
  1. 通过 Yaml 使用 RDMA 资源,以创建 Pod 为例,Yaml 示例如下:​
  • ​
    apiVersion: v1​
    kind: Pod​
    metadata:​
    name: rdma-test​
    spec:​
    containers:​
    - name: rdma-test​
    image: busybox​
    command:​
    - /bin/sh​
    - -c​
    - sleep 10000​
    resources:​
    limits:​
    vke.volcengine.com/infiniband-rdma: 1​
    securityContext:​
    capabilities:​
    add:​
    - IPC_LOCK​
    volumeMounts:​
    - mountPath: /dev/shm ​
    name: cache-volume​
    - name: nvidia-topology # 非裸金属机型需要挂载该目录,NCCL 会从 virtualTopology.xml 中获取真实拓扑。​
    mountPath: /var/run/nvidia-topologyd​
    readOnly: true​
    volumes:​
    - emptyDir:​
    medium: Memory​
    name: cache-volume​
    - name: nvidia-topology ​
    hostPath:​
    path: /var/run/nvidia-topologyd​
    type: DirectoryOrCreate​
    ​
最近更新时间:2026.03.12 12:04:09
这个页面对您有帮助吗?
有用
有用
无用
无用