Pod在CCE中使用RDMA网络
更新时间:2026-04-10
概述
本文介绍如何在 CCE 托管集群中配置和使用 RDMA(Remote Direct Memory Access,远程直接内存访问)技术,实现高性能容器网络通信。RDMA 技术可显著降低网络延迟并提升吞吐量,适用于高性能计算、AI 训练、分布式存储等对网络性能要求严苛的场景。
RDMA介绍
RDMA(Remote Direct Memory Access,远程直接内存访问)是一种高性能网络通信技术,旨在解决传统网络传输中服务器端数据处理的延迟问题。RDMA允许数据直接从一台计算机的内存传输到另一台计算机,无需双方操作系统的介入。这种机制实现了高吞吐量、低延迟的网络通信,尤其适合在大规模并行计算机集群中使用。
RDMA通过网络将数据直接传入目标计算机的存储区,实现从一个系统到远程系统存储器的快速数据移动。整个传输过程不对操作系统造成任何影响,因此几乎不消耗计算机的处理能力,继而减少外部存储器复制和上下文切换的开销,节省内存带宽和CPU周期,以提升应用系统性能。
前提条件
- 已准备一个满足 RDMA 运行要求的 CCE 托管集群,例如 Kubernetes
v1.18+、VPC网络模式。1. 在集群中,添加具备RDMA能力的节点。 - 已在本地终端安装
kubectl,并完成目标集群的访问上下文配置。## 操作步骤
-
安装
CCE RDMA Device Plugin组件。导航路径:容器引擎 CCE->集群列表->目标集群->运维与管理->组件管理->云原生 AI
- 在 【云原生 AI】 页签中,找到 【CCE RDMA Device Plugin】。
- 单击 【安装】,完成组件安装。
- 确认RDMA Device Plugin已正常运行,且在每个有RDMA的节点都已启动。
Plain Text
1kubectl get ds rdma-device-plugin -n kube-system
预期输出
Plain Text
1NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
2rdma-device-plugin 1 1 1 1 1 <none> XXh
- 检查节点是否拥有资源
rdma/hca。
Plain Text
1kubectl get node XXX.XX.XX.XX -oyaml
预期输出
Plain Text
1allocatable:
2 cce.baidubce.com/eni: "0"
3 cce.baidubce.com/ip: "12"
4 cce.baidubce.com/rdmaeni: "0"
5 cce.baidubce.com/rdmaip: "12"
6 cpu: 125600m
7 ephemeral-storage: "392876111337"
8 hugepages-1Gi: "0"
9 hugepages-2Mi: "0"
10 memory: 1002409Mi
11 nvidia.com/gpu: "8"
12 pods: "128"
13 rdma/hca: 1k
14 capacity:
15 cce.baidubce.com/eni: "0"
16 cce.baidubce.com/ip: "12"
17 cce.baidubce.com/rdmaeni: "0"
18 cce.baidubce.com/rdmaip: "12"
19 cpu: "128"
20 ephemeral-storage: 412546320Ki
21 hugepages-1Gi: "0"
22 hugepages-2Mi: "0"
23 memory: 1029911Mi
24 nvidia.com/gpu: "8"
25 pods: "128"
26 rdma/hca: 1k
-
使用以下
YAML内容为Pod申请RDMA资源。rdma/hca的申请量设置为1即可。关键配置如下:
参数 必填 说明 metadata.name是 Deployment名称,请根据业务实际填写。image是 容器镜像,请根据业务实际选择支持 RDMA的镜像。resources.limits.rdma/hca是 为容器申请 RDMA资源,申请量设置为1即可。securityContext.capabilities.add是 为容器增加 IPC_LOCK能力。YAML1apiVersion: apps/v1 2kind: Deployment 3metadata: 4 name: <deployment名称> 5 labels: 6 app: <app标识> 7spec: 8 replicas: 1 9 selector: 10 matchLabels: 11 app: <app标识> 12 template: 13 metadata: 14 labels: 15 app: <app标识> 16 spec: 17 containers: 18 - name: <container名称> 19 imagePullPolicy: Always 20 image: registry.baidubce.com/cce-plugin-pro/mlnx_ofed_linux-5.3-1.0.0.1-centos7.9:latest 21 command: ["/bin/sh", "-c", "while true; do echo hello; sleep 1; done"] 22 resources: 23 limits: 24 rdma/hca: 1 25 securityContext: 26 capabilities: 27 add: 28 - IPC_LOCK
评价此篇文章
