共享 RDMA(Macvlan/IPvlan)¶
本页介绍在 RoCE 场景下,通过 Macvlan/IPvlan 以共享模式为 Pod 提供 RDMA 能力的推荐做法。
适用范围¶
- 仅适用于 RoCE 网络(以太网)
- 适合对资源利用率要求高、对隔离要求适中的 AI/计算场景
- 可用于裸金属或虚拟化环境
前提条件¶
- 已完成 Spiderpool 安装(参考 安装 Spiderpool)
- RDMA 网卡已安装驱动(建议参考 安装 Nvidia OFED 驱动)
- RDMA 子系统处于 shared 模式
- 已规划好 Underlay 子网与网关
共享模式仅支持 RoCE,不支持 Infiniband。
架构示意¶
flowchart LR
subgraph K8s["Kubernetes / DCE"]
API[K8s API]
Spiderpool[Spiderpool IPAM]
Multus[Multus]
RdmaShared[RDMA Shared Device Plugin]
end
subgraph Node["RDMA 节点"]
Pod[AI Pod]
Macvlan[Macvlan/IPvlan CNI]
NIC[RDMA NIC - RoCE]
end
API --> Spiderpool
API --> RdmaShared
Pod --> Multus --> Macvlan --> NIC --> Fabric[RoCE Network]
Spiderpool --> Multus
Pod --> RdmaShared
配置步骤¶
0. 离线/Addon 准备(推荐)¶
离线环境建议优先准备 Spiderpool 的 Addon 离线包后再进行安装与升级。
1. 主机准备(shared 模式)¶
在 RDMA 节点上确认 RDMA 子系统处于 shared 模式:
2. 启用共享 RDMA 相关组件¶
在安装 Spiderpool 时建议开启以下选项:
- RdmaSharedDevicePlugin:用于暴露共享 RDMA 资源
- AutoInjectRdmaResource:为 AI 工作负载自动注入 RDMA 资源(可选)
详细参数可参考 RDMA 环境准备及安装。
关键参数建议:
| 参数 | 建议值 | 说明 |
|---|---|---|
| RdmaSharedDevicePlugin.install | true | 启用共享 RDMA 插件 |
| rdmaSharedDevicePlugin.deviceConfig.resourceName | hca_shared_devices | RDMA 资源名称 |
| rdmaSharedDevicePlugin.deviceConfig.vendors | 15b3 | RDMA 网卡 vendor |
| rdmaSharedDevicePlugin.deviceConfig.deviceIDs | 1017 | RDMA 网卡 deviceID |
3. 创建 Multus 配置¶
为 RDMA 网卡创建对应的 Multus 配置。示例与配置说明请参考 Multus CR 管理。
4. 创建 IP 池¶
根据业务网段创建 IPPool,参考 创建子网及 IP 池。
5. 创建工作负载并注入 RDMA 资源¶
为 AI 工作负载添加 RDMA 注解示例:
注解的值应与 Spiderpool 中 RDMA 资源分类保持一致。
验证¶
- 确认 Pod 已分配到期望的 Underlay IP
- 在 Pod 内检查 RDMA 设备是否可见(例如使用 rdma 工具)
- 检查节点上 RDMA 资源是否被正确上报
示例:
运维建议¶
注意事项¶
- 共享模式下多个 Pod 共享宿主机 RDMA 设备,隔离性较弱
- RoCE 场景建议提前完成无损网络与 MTU 配置
- 若需更强隔离与性能,建议使用 SR-IOV 方案