From abafe610afb126a3b0dc3c35dff22dd1de0df64d Mon Sep 17 00:00:00 2001 From: Cyclinder Kuo Date: Thu, 28 Aug 2025 17:08:16 +0800 Subject: [PATCH] network: add ai-cluster_with_sriov.md --- .../docs/network/images/ai-different-zone.png | Bin 0 -> 131334 bytes .../install/ai_cluster_with_sriov.md | 992 ++++++++++++++++++ 2 files changed, 992 insertions(+) create mode 100644 docs/zh/docs/network/images/ai-different-zone.png create mode 100644 docs/zh/docs/network/modules/spiderpool/install/ai_cluster_with_sriov.md diff --git a/docs/zh/docs/network/images/ai-different-zone.png b/docs/zh/docs/network/images/ai-different-zone.png new file mode 100644 index 0000000000000000000000000000000000000000..d632c150ed3f70a3f8fb1616ac57133e8b0b8832 GIT binary patch literal 131334 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
<7iLGSV# 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 Pa-{1KPiKZx==r|^LR#W+ literal 0 HcmV?d00001 diff --git a/docs/zh/docs/network/modules/spiderpool/install/ai_cluster_with_sriov.md b/docs/zh/docs/network/modules/spiderpool/install/ai_cluster_with_sriov.md new file mode 100644 index 0000000000..2e1abc1923 --- /dev/null +++ b/docs/zh/docs/network/modules/spiderpool/install/ai_cluster_with_sriov.md @@ -0,0 +1,992 @@ +# AI Cluster With SR-IOV + +**简体中文** | [**English**](./get-started-sriov.md) + +## 介绍 + +本节介绍在建设 AI 集群场景下,如何基于 SR-IOV 技术给容器提供 RDMA 通信能力,它适用在 RoCE 和 Infiniband 网络场景下。 + +Spiderpool 使用了 [sriov-network-operator](https://github.com/k8snetworkplumbingwg/sriov-network-operator) 为容器提供了基于 SR-IOV 接口的 RDMA 设备: + +- Linux 的 RDMA 子系统,可两种在共享模式或独占模式下: + + 1. 共享模式,容器中会看到 PF 接口的所有 VF 设备的 RDMA 设备,但只有分配给本容器的 VF 才具备从 0 开始的 GID Index。 + + 2. 独占模式,容器中只会看到分配给自身 VF 的 RDMA 设备,不会看见 PF 和 其它 VF 的 RDMA 设备。 + +- 在不同的网络场景下,使用了不同的 CNI + + 1. Infiniband 网络场景下,使用 [IB-SRIOV CNI](https://github.com/k8snetworkplumbingwg/ib-sriov-cni) 给 POD 提供 SR-IOV 网卡。 + + 2. RoCE 网络场景下, 使用了 [SR-IOV CNI](https://github.com/k8snetworkplumbingwg/sriov-cni) 来暴露宿主机上的 RDMA 网卡给 Pod 使用,暴露 RDMA 资源。可额外使用 [RDMA CNI](https://github.com/k8snetworkplumbingwg/rdma-cni) 来完成 RDMA 设备隔离。 + +注意: + +- 基于 SR-IOV 技术给容器提供 RDMA 通信能力只适用于裸金属环境,不适用于虚拟机环境。 + +## 对比 Macvlan CNI 的 RDMA 方案 + +| 比较维度 | Macvlan 共享 RDMA 方案 | SR-IOV CNI 隔离 RDMA 方案 | +| ------------| ------------------------------------- | --------------------------------- | +| 网络隔离 | 所有容器共享 RDMA 设备,隔离性较差 | 容器独享 RDMA 设备,隔离性较好 | +| 性能 | 性能较高 | 硬件直通,性能最优 | +| 资源利用率 | 资源利用率较高 | 较低,受硬件支持的 VFs 数量限制 | +| 配置复杂度 | 配置相对简单 | 配置较为复杂,需要硬件支持和配置 | +| 兼容性 | 兼容性较好,适用于大多数环境 | 依赖硬件支持,兼容性较差 | +| 适用场景 | 适用于大多数场景,包括裸金属,虚拟机等 | 只适用于裸金属,不适用于虚拟机场景 | +| 成本 | 成本较低,因为不需要额外的硬件支持 | 成本较高,需要支持 SR-IOV 的硬件设备 | +| 支持 RDMA 协议 | 支持 Roce 协议,不支持 Infiniband 协议 | 支持 Roce 和 Infiniband 协议 | + +## 方案一 + +本文将以如下典型的 AI 集群拓扑为例,介绍如何搭建 Spiderpool + +![AI Cluster](../../../images/ai-cluster.png) +图1 AI 集群拓扑 + +集群的网络规划如下: + +1. 在节点的 eth0 网卡上运行 calico CNI,来承载 kubernetes 流量。AI workload 将会被分配一个 calico 的缺省网卡,进行控制面通信。 + +2. 节点上使用具备 RDMA 功能的 Mellanox ConnectX5 网卡来承载 AI 计算的 RDMA 流量,网卡接入到 rail optimized 网络中。AI workload 将会被额外分配所有 RDMA 网卡的 SR-IOV 虚拟化接口,确保 GPU 的高速网络通信。 + +## 方案二 + +方案一适用于 AI 集群中所有节点的相同轨道网卡使用相同子网的场景。此种场景下,整个 AI 集群需要多个子网,比如如果节点拥有 8 个轨道的网卡,那么需要 8 个独立的子网。 在一些大规模 AI 集群中由于 IP 地址资源的限制,并不能提供这么多的子网。只能将有限的子网拆分给不同节点的不同轨道网卡使用,所以在此场景下,不同节点的相同轨道网卡往往被分配到不同的子网中。 + +假设我们拥有一个 16 位掩码的地址 IP 网段,每个节点每个轨道的网卡可有 32 个地址,则掩码为 27 位。在每个节点拥有 8 个轨道网卡,我们最多可支持 256 个节点(每个节点 8 个轨道网卡,每个轨道网卡 32 个地址)。 + +比如节点 node1 的 1 号轨道网卡可能使用 172.16.1.0/27 子网,而节点 node2 的 1 号轨道网卡可能使用 172.16.1.32/27 子网。 + +![Large Scale RDMA Zone](../../../images/ai-different-zone.png) + +如图 1 所示,集群的网络规划如下: + +1. 每个节点拥有 8 个 RDMA 轨道网卡,每个轨道网卡可分配 32 个 IP 地址,掩码为 27 位, 每个节点的 8 个轨道网卡使用不同的子网 +2. 每个节点的 nic0 网卡运行 calico CNI,来承载 kubernetes 流量。AI workload 将会被分配一个 calico 的缺省网卡,进行控制面通信。 +3. 节点上使用具备 RDMA 功能的 Mellanox ConnectX5 网卡来承载 AI 计算的 RDMA 流量,网卡接入到 rail optimized 网络中。AI workload 将会被额外分配所有 RDMA 网卡的 SR-IOV 虚拟化接口,确保 GPU 的高速网络通信。注意:第一个 RDMA 网卡用于承接 RDMA 控制面通信,其他网卡用于承载 AI 计算的 RDMA 流量。 + +## 安装要求 + +- 参考 [Spiderpool安装要求](./system-requirements-zh_CN.md) + +- 主机上准备好 Helm 二进制 + +- 安装好 Kubernetes 集群,kubelet 工作在图 1 中的主机 eth0 网卡上 + +- 在 Infiniband 网络场景下,确保 OpenSM 子网管理器工作正常 + +- 安装 Calico 作为集群的缺省 CNI,使用主机的 eth0 网卡作为 calico 的流量转发网卡。 + 如果未安装,可参考 [官方文档](https://docs.tigera.io/calico/latest/getting-started/kubernetes/) 或参考以下命令安装: + + ```shell + $ kubectl apply -f https://github.com/projectcalico/calico/blob/master/manifests/calico.yaml + $ kubectl wait --for=condition=ready -l k8s-app=calico-node pod -n kube-system + # set calico to work on host eth0 + $ kubectl set env daemonset -n kube-system calico-node IP_AUTODETECTION_METHOD=kubernetes-internal-ip + # set calico to work on host eth0 + $ kubectl set env daemonset -n kube-system calico-node IP6_AUTODETECTION_METHOD=kubernetes-internal-ip + ``` + +- 对于方案二,如果集群使用 Docker 作为容器运行时,需要为 spiderpool-agent 配置 `hostPID: true`,这样 Spiderpool-agent 能够获取到 Pod 的网络命名空间,使 Pod 能够基于主机网卡的网段分配对应的 IP 地址。 + +```shell +kubectl patch daemonset spiderpool-agent -n spiderpool -p '{"spec":{"template":{"spec":{"hostPID":true}}}}' +``` + +## 主机准备 + +1. 安装 RDMA 网卡驱动,然后重启主机(这样才能看到网卡) + + 对于 Mellanox 网卡,可下载 [NVIDIA OFED 官方驱动](https://network.nvidia.com/products/infiniband-drivers/linux/mlnx_ofed/) 进行主机安装,执行如下安装命令 + + ```shell + mount /root/MLNX_OFED_LINUX-24.01-0.3.3.1-ubuntu22.04-x86_64.iso /mnt + /mnt/mlnxofedinstall --all + ``` + + 对于 Mellanox 网卡,也可基于容器化安装,实现对集群主机上所有 Mellanox 网卡批量安装驱动,运行如下命令,注意的是,该运行过程中需要访问因特网获取一些安装包。当所有的 ofed pod 进入 ready 状态,表示主机上已经完成了 OFED driver 安装 + + ```shell + $ helm repo add spiderchart https://spidernet-io.github.io/charts + $ helm repo update + $ helm search repo ofed + + # pelase replace the following values with your actual environment + # for china user, it could set `--set image.registry=nvcr.m.daocloud.io` to use a domestic registry + $ helm install ofed-driver spiderchart/ofed-driver -n kube-system \ + --set image.OSName="ubuntu" \ + --set image.OSVer="22.04" \ + --set image.Arch="amd64" + ``` + + > 若希望 RDMA 系统工作在独占模式下,必须至少满足以下条件之一: (1) 基于 5.3.0 或更新版本的 Linux 内核,系统中加载的 RDMA 模块,rdma 核心包提供了在系统启动时自动加载相关模块的方法 (2) 需要 Mellanox OFED 4.7 版或更新版本。在这种情况下,不需要使用基于 5.3.0 或更新版本的内核。 + +2. 对于 SRIOV 场景,请设置主机上的 RDMA 子系统为 exclusive 模式,使得容器能够独立使用 RDMA 设备过程,避免与其他容器共享 + + ```shell + # Check the current operating mode (the Linux RDMA subsystem operates in shared mode by default): + $ rdma system + netns shared copy-on-fork on + + # Persist the exclusive mode to remain effective after a reboot + $ echo "options ib_core netns_mode=0" >> /etc/modprobe.d/ib_core.conf + + # Switch the current operating mode to exclusive mode. If the setting fails, please reboot the host + $ rdma system set netns exclusive + + # Verify the successful switch to exclusive mode + $ rdma system + netns exclusive copy-on-fork on + ``` + +3. 设置网卡的 RDMA 工作模式( Infiniband or ethernet ) + + 3.1 确认网卡支持的工作模式:本示例环境中,宿主机上接入了 mellanox ConnectX 5 VPI 网卡,查询 RDMA 设备,确认网卡驱动安装完成 + + ```shell + $ rdma link + link mlx5_0/1 state ACTIVE physical_state LINK_UP netdev ens6f0np0 + link mlx5_1/1 state ACTIVE physical_state LINK_UP netdev ens6f1np1 + ....... + ``` + + 确认网卡的工作模式,如下输出表示网卡工作在 Ethernet 模式下,可实现 RoCE 通信 + + ```shell + $ ibstat mlx5_0 | grep "Link layer" + Link layer: Ethernet + ``` + + 如下输出表示网卡工作在 Infiniband 模式下,可实现 Infiniband 通信 + + ```shell + $ ibstat mlx5_0 | grep "Link layer" + Link layer: InfiniBand + ``` + + 如果网卡没有工作在预期的模式下,请输入如下命令,确认网卡支持配置 LINK_TYPE 参数,如果没有该参数,请更换支持的网卡型号 + + ```shell + $ mst start + + # check the card's PCIE + $ lspci -nn | grep Mellanox + 86:00.0 Infiniband controller [0207]: Mellanox Technologies MT27800 Family [ConnectX-5] [15b3:1017] + 86:00.1 Infiniband controller [0207]: Mellanox Technologies MT27800 Family [ConnectX-5] [15b3:1017] + ....... + + # check whether the network card supports parameters LINK_TYPE + $ mlxconfig -d 86:00.0 q | grep LINK_TYPE + LINK_TYPE_P1 IB(1) + ``` + + 3.2 批量设置网卡的工作模式:获取 [批量设置脚本](https://github.com/spidernet-io/spiderpool/blob/main/tools/scripts/setNicRdmaMode.sh),按照如下设置后,请重启主机 + + ```shell + $ chmod +x ./setNicRdmaMode.sh + + # 批量查询所有 rdma 网卡工作在 ib 或者 eth 模式下 + $ ./setNicRdmaMode.sh q + + # 把所有 rdma 网卡切换到 eth 模式下 + $ RDMA_MODE="roce" ./setNicRdmaMode.sh + + # 把所有 rdma 网卡切换到 ib 模式下 + $ RDMA_MODE="infiniband" ./setNicRdmaMode.sh + ``` + +4. 为所有的 RDMA 网卡,设置 ip 地址、MTU 和 策略路由等 + + > RDMA 场景下,通常交换机和主机网卡都会工作在较大的 MTU 参数下,以提高性能 + > + > 因为 linux 主机默认只有一个缺省路由,在多网卡场景下,需要为不同网卡设置策略默认路由,以确保 hostnetwork 模式下的任务能正常运行 All-to-All 等通信 + > + > 对于方案二:主机侧需要配置一条 RDMA 子网路由,以确保 RDMA 控制面流量能够正常传输 + + 获取 [ubuntu 网卡配置脚本](https://github.com/spidernet-io/spiderpool/blob/main/tools/scripts/setNicAddr.sh),执行如下参考命令 + + ```shell + $ chmod +x ./setNicAddr.sh + + # 对于方案一,设置网卡 + $ INTERFACE="eno3np2" IPV4_IP="172.16.0.10/24" IPV4_GATEWAY="172.16.0.1" \ + MTU="4200" ENABLE_POLICY_ROUTE="true" ./setNicAddr.sh + + # 对于方案二,必须选择一张网卡(一般为节点的 1 号轨道的 RDMA 网卡)作为 RDMA 子网路由的网卡,需要设置 ENABLE_RDMA_DEFAULT_ROUTE="true" RDMA_SUBNET="172.16.0.0/16",对于其它网卡不需要配置 RDMA 子网路由 + # ENABLE_RDMA_DEFAULT_ROUTE="true" 表示该网卡将作为 RDMA 子网路由的网卡 + # RDMA_SUBNET="172.16.0.0/16" 表示 RDMA 网络的子网 + $ INTERFACE="eno3np2" ENABLE_RDMA_DEFAULT_ROUTE="true" RDMA_SUBNET="172.16.0.0/16" IPV4_GATEWAY="172.16.0.1" ./setNicAddr.sh + + # 以 eno3np2 为例,查看网卡 ip 和 mtu 是否预期设置 + $ ip a s eno3np2 + 4: eno3np2: mtu 4200 qdisc mq state UP group default qlen 1000 + link/ether 38:68:dd:59:44:4a brd ff:ff:ff:ff:ff:ff + altname enp8s0f2np2 + inet 172.16.0.10/24 brd 172.16.0.255 scope global eno3np2 + valid_lft forever preferred_lft forever + inet6 fe80::3a68:ddff:fe59:444a/64 scope link proto kernel_ll + valid_lft forever preferred_lft forever + + # 检查当前网卡是否正确设置策略路由: 确保从该网卡发出的流量需要从各自的策略路由表项转发: + $ ip rule + 0: from all lookup local + 32763: from 172.16.0.10 lookup 152 proto static + 32766: from all lookup main + 32767: from all lookup default + + $ ip rou show table 152 + default via 172.16.0.1 dev eno3np2 proto static + + # 对于方案二,当设置 ENABLE_RDMA_DEFAULT_ROUTE="true" RDMA_SUBNET="172.16.0.0/16",需要确保 RDMA 子网路由是否配置成功,并从当前网卡转发: + $ ip r + ... + 172.16.0.0/16 via 172.16.0.1 dev eno3np2 + ... + +5. 配置主机 RDMA 无损网络 + + 在高性能网络场景下,RDMA 网络对于丢包非常敏感,一旦发生丢包重传,性能会急剧下降。因此要使得 RDMA 网络性能不受影响,丢包率必须保证在 1e-05(十万分之一)以下,最好为零丢包。对于 Roce 网络,可通过 PFC + ECN 机制来保障网络传输过程不丢包。 + + 可参考 [配置 RDMA 无损网络](../../roce-qos-zh_CN.md) + + > 配置无损网络要求必须在 RDMA Roce 网络环境下,不能是 Infiniband + > 配置无损网络必须要求交换机支持 PFC + ECN 机制,并且配置与主机侧对齐,否则不能工作 + +6. 开启 [GPUDirect RMDA](https://docs.nvidia.com/cuda/gpudirect-rdma/) 功能 + + 在安装或使用 [gpu-operator](https://github.com/NVIDIA/gpu-operator) 过程中 + + a. 开启 helm 安装选项: `--set driver.rdma.enabled=true --set driver.rdma.useHostMofed=true`,gpu-operator 会安装 [nvidia-peermem](https://network.nvidia.com/products/GPUDirect-RDMA/) 内核模块,启用 GPUDirect RMDA 功能,加速 GPU 和 RDMA 网卡之间的转发性能。可在主机上输入如下命令,确认安装成功的内核模块 + + ```shell + $ lsmod | grep nvidia_peermem + nvidia_peermem 16384 0 + ``` + + b. 开启 helm 安装选项: `--set gdrcopy.enabled=true`,gpu-operator 会安装 [gdrcopy](https://developer.nvidia.com/gdrcopy) 内核模块,加速 GPU 显存 和 CPU 内存 之间的转发性能。可在主机上输入如下命令,确认安装成功的内核模块 + + ```shell + $ lsmod | grep gdrdrv + gdrdrv 24576 0 + ``` + +## 安装 Spiderpool + +1. 使用 helm 安装 Spiderpool,并启用 SR-IOV 组件 + + ```shell + helm repo add spiderpool https://spidernet-io.github.io/spiderpool + helm repo update spiderpool + kubectl create namespace spiderpool + helm install spiderpool spiderpool/spiderpool -n spiderpool --set sriov.install=true + ``` + + > - 如果您是中国用户,可以指定参数 `--set global.imageRegistryOverride=ghcr.m.daocloud.io` 来使用国内的镜像源。 + > - 设置 `--set spiderpoolAgent.prometheus.enabled --set spiderpoolAgent.prometheus.enabledRdmaMetric=true` 和 `--set grafanaDashboard.install=true` 命令行参数可以开启 RDMA metrics exporter 和 Grafana dashboard,更多可以查看 [RDMA metrics](../../rdma-metrics.md). + + 完成后,安装的组件如下 + + ```shell + $ kubectl get pod -n spiderpool + operator-webhook-sgkxp 1/1 Running 0 1m + spiderpool-agent-9sllh 1/1 Running 0 1m + spiderpool-agent-h92bv 1/1 Running 0 1m + spiderpool-controller-7df784cdb7-bsfwv 1/1 Running 0 1m + spiderpool-sriov-operator-65b59cd75d-89wtg 1/1 Running 0 1m + spiderpool-init 0/1 Completed 0 1m + sriov-network-config-daemon-8h576 1/1 Running 0 1m + sriov-network-config-daemon-n629x 1/1 Running 0 1m + ``` + +2. 配置 SR-IOV operator, 在每个主机上创建出 VF 设备 + + 使用如下命令,查询主机上网卡设备的 PCIE 信息。确认如下输出的设备号 [15b3:1017] 出现在 [sriov-network-operator 支持网卡型号范围](https://github.com/k8snetworkplumbingwg/sriov-network-operator/blob/master/deployment/sriov-network-operator-chart/templates/configmap.yaml) + + ```shell + $ lspci -nn | grep Mellanox + 86:00.0 Infiniband controller [0207]: Mellanox Technologies MT27800 Family [ConnectX-5] [15b3:1017] + 86:00.1 Infiniband controller [0207]: Mellanox Technologies MT27800 Family [ConnectX-5] [15b3:1017] + .... + ``` + + SRIOV VF 数量决定了一个网卡能同时为多少个 POD 提供网卡,不同型号的网卡的有不同的最大 VF 数量上限,Mellanox 的 ConnectX 网卡常见型号的最大 VF 上限是 127 。 + 如下示例,设置每个节点上的 GPU1 和 GPU2 的网卡,每个网卡配置出 12 个 VF 设备。请参考如下,为主机上每个亲和 GPU 的网卡配置 SriovNetworkNodePolicy,这样,将有 8 个 SRIOV resource 以供使用。 + + 以下用 eno3np2 为例: + + ```shell + # 对于 ethernet 网络,设置 LINK_TYPE=eth, 对于 Infiniband 网络,设置 LINK_TYPE=ib + $ LINK_TYPE=eth NIC_NAME=eno3np2 VF_NUM=12 + $ cat < + +3. 对于方案一,创建 CNI 配置和对应的 ippool 资源 + + 由于方案一,所有节点的相同轨道网卡使用相同的子网,因此,只需要为每个节点的相同轨道网卡创建一个 IP 池即可: + + (1) 对于 Infiniband 网络,请为所有的 GPU 亲和的 SR-IOV 网卡配置 [IB-SRIOV CNI](https://github.com/k8snetworkplumbingwg/ib-sriov-cni) 配置,并创建对应的 IP 地址池 。 如下例子,配置了 GPU1 亲和的网卡和 IP 地址池 + + ```shell + $ cat < 注意命名规则:建议 IP 池名称使用 `-rail-` 的格式,其中 `` 为网卡名称,`rail` 为轨道名称, `` 为节点名称, 这样 Spiderpool 可以自动根据节点和网卡名称识别并匹配 IP 池。 + + ```yaml + apiVersion: spiderpool.spidernet.io/v2beta1 + kind: SpiderIPPool + metadata: + name: eno3np1-rail1-node1 + spec: + ipVersion: ipv4 + subnet: 172.16.1.0/27 + gateway: 172.16.1.1 + ips: + - 172.16.1.2-172.16.1.32 + routes: + - to: 172.16.0.0/16 + via: 172.16.1.1 + ``` + + > routes 用于配置 RDMA 子网路由, 用于 Pod 访问 RDMA 子网的控制面通信。 + + 依次为所有节点的每一轨的 RDMA 网卡创建 IP 池,,如节点 1 的其它 7 个轨道的 IP 池: + + ```shell + # Rail1 轨道的多个子网 IP 池 + cat < **注意**:为了简化示例,这里只展示了节点1 Rail1-Rail8 的配置。在实际环境中,需要为所有节点的每个 RDMA 网卡创建 IP 池。 + + - 创建支持子网自动匹配的 SpiderMultusConfig,以 eno3np1 网卡为例: + + ```shell + cat < resourceName 需要匹配 sriovNodePolicy 中对应的 resourceName。 + > + > ippools.ipv4 使用了通配符 `eno3np1-rail1*`,分配 IP 时 Spiderpool 会从所有以 `eno3np1-rail1` 开头的 IP 池中筛选。 这里会得到所有节点的 1 号轨道网卡的 IP 池。 + > + > matchMasterSubnet 设置为 true,当 Spiderpool 为 Pod 分配 IP 时,会判断已筛选子网池中是否存在匹配到当前 Pod 网卡对应的 Master 网卡的子网,如果存在则分配 IP,否则分配失败。 + + 依次创建其它轨道的 SpiderMultusConfig,为 eno3np2 网卡为例: + + ```shell + # Rail2 轨道的自动子网匹配配置 + cat < 注:支持自动为应用注入 RDMA 网络资源,参考 [基于 Webhook 自动为应用注入 RDMA 网络资源](#基于-webhook-自动注入-rdma-网络资源) + + ```shell + $ helm repo add spiderchart https://spidernet-io.github.io/charts + $ helm repo update + $ helm search repo rdma-tools + + # run daemonset on worker1 and worker2 + $ cat < values.yaml + # for china user , it could add these to use a domestic registry + #image: + # registry: ghcr.m.daocloud.io + + # just run daemonset in nodes 'worker1' and 'worker2' + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/hostname + operator: In + values: + - worker1 + - worker2 + + # sriov interfaces + extraAnnotations: + k8s.v1.cni.cncf.io/networks: |- + [{"name":"gpu1-sriov","namespace":"spiderpool"}, + {"name":"gpu2-sriov","namespace":"spiderpool"}, + {"name":"gpu3-sriov","namespace":"spiderpool"}, + {"name":"gpu4-sriov","namespace":"spiderpool"}, + {"name":"gpu5-sriov","namespace":"spiderpool"}, + {"name":"gpu6-sriov","namespace":"spiderpool"}, + {"name":"gpu7-sriov","namespace":"spiderpool"}, + {"name":"gpu8-sriov","namespace":"spiderpool"}] + + # sriov resource + resources: + limits: + spidernet.io/gpu1sriov: 1 + spidernet.io/gpu2sriov: 1 + spidernet.io/gpu3sriov: 1 + spidernet.io/gpu4sriov: 1 + spidernet.io/gpu5sriov: 1 + spidernet.io/gpu6sriov: 1 + spidernet.io/gpu7sriov: 1 + spidernet.io/gpu8sriov: 1 + #nvidia.com/gpu: 1 + EOF + + $ helm install rdma-tools spiderchart/rdma-tools -f ./values.yaml + + ``` + + 在容器的网络命名空间创建过程中,Spiderpool 会对 sriov 接口上的网关进行连通性测试,如果如上应用的所有 POD 都启动成功,说明了每个节点上的 VF 设备的连通性成功,可进行正常的 RDMA 通信。 + + + +2. 查看容器的网络命名空间状态 + + 可进入任一一个 POD 的网络命名空间中,确认具备 9 个网卡, 对于方案二场景下,需要额外检查 Pod net1-net8 的 IP 地址是否属于该节点的 eno3np1-eno3np8 的 IP 地址范围,并且检查 main 路由表中是否具备 RDMA 子网路由: + + ```shell + root@rdma-tools-4v8t8:/# ip r show table main + ... + 172.16.0.0/16 via 172.16.1.1 dev net1 + ... + ``` + + ```shell + $ kubectl exec -it rdma-tools-4v8t8 bash + kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead. + root@rdma-tools-4v8t8:/# ip a + 1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 + link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 + inet 127.0.0.1/8 scope host lo + valid_lft forever preferred_lft forever + inet6 ::1/128 scope host + valid_lft forever preferred_lft forever + 2: tunl0@NONE: mtu 1480 qdisc noop state DOWN group default qlen 1000 + link/ipip 0.0.0.0 brd 0.0.0.0 + 3: eth0@if356: mtu 1480 qdisc noqueue state UP group default qlen 1000 + link/ether ca:39:52:fc:61:cd brd ff:ff:ff:ff:ff:ff link-netnsid 0 + inet 10.233.119.164/32 scope global eth0 + valid_lft forever preferred_lft forever + inet6 fe80::c839:52ff:fefc:61cd/64 scope link + valid_lft forever preferred_lft forever + 269: net1: mtu 1500 qdisc mq state UP group default qlen 1000 + link/ether 3a:97:49:35:79:95 brd ff:ff:ff:ff:ff:ff + inet 172.16.11.10/24 brd 10.1.19.255 scope global net1 + valid_lft forever preferred_lft forever + inet6 fe80::3897:49ff:fe35:7995/64 scope link + valid_lft forever preferred_lft forever + 239: net2: mtu 1500 qdisc mq state UP group default qlen 1000 + link/ether 1e:b6:13:0e:2a:d5 brd ff:ff:ff:ff:ff:ff + inet 172.16.12.10/24 brd 10.1.19.255 scope global net1 + valid_lft forever preferred_lft forever + inet6 fe80::1cb6:13ff:fe0e:2ad5/64 scope link + valid_lft forever preferred_lft forever + ..... + ``` + + 查看路由配置,Spiderpool 会自动为每个网卡调谐策略路由,确保每个网卡上收到的外部请求都会从该网卡上返回回复流量 + + ```shell + root@rdma-tools-4v8t8:/# ip rule + 0: from all lookup local + 32762: from 172.16.11.10 lookup 107 + 32763: from 172.16.12.10 lookup 106 + 32764: from 172.16.13.10 lookup 105 + 32765: from 172.16.14.10 lookup 104 + 32765: from 172.16.15.10 lookup 103 + 32765: from 172.16.16.10 lookup 102 + 32765: from 172.16.17.10 lookup 101 + 32765: from 172.16.18.10 lookup 100 + 32766: from all lookup main + 32767: from all lookup default + + root@rdma-tools-4v8t8:/# ip route show table 100 + default via 172.16.11.254 dev net1 + ``` + + main 路由中,确保了 calico 网络流量、ClusterIP 流量、本地宿主机通信等流量都会从 calico 网卡转发 + + ```shell + root@rdma-tools-4v8t8:/# ip r show table main + default via 169.254.1.1 dev eth0 + 172.16.11.0/24 dev net1 proto kernel scope link src 172.16.11.10 + 172.16.12.0/24 dev net2 proto kernel scope link src 172.16.12.10 + 172.16.13.0/24 dev net3 proto kernel scope link src 172.16.13.10 + 172.16.14.0/24 dev net4 proto kernel scope link src 172.16.14.10 + 172.16.15.0/24 dev net5 proto kernel scope link src 172.16.15.10 + 172.16.16.0/24 dev net6 proto kernel scope link src 172.16.16.10 + 172.16.17.0/24 dev net7 proto kernel scope link src 172.16.17.10 + 172.16.18.0/24 dev net8 proto kernel scope link src 172.16.18.10 + 10.233.0.0/18 via 10.1.20.4 dev eth0 src 10.233.119.164 + 10.233.64.0/18 via 10.1.20.4 dev eth0 src 10.233.119.164 + 10.233.119.128 dev eth0 scope link src 10.233.119.164 + 169.254.0.0/16 via 10.1.20.4 dev eth0 src 10.233.119.164 + 169.254.1.1 dev eth0 scope link + ``` + + 确认具备 8 个 RDMA 设备 + + ```shell + root@rdma-tools-4v8t8:/# rdma link + link mlx5_27/1 state ACTIVE physical_state LINK_UP netdev net2 + link mlx5_54/1 state ACTIVE physical_state LINK_UP netdev net1 + link mlx5_67/1 state ACTIVE physical_state LINK_UP netdev net4 + link mlx5_98/1 state ACTIVE physical_state LINK_UP netdev net3 + ..... + ``` + +3. 在跨节点的 Pod 之间,确认 RDMA 收发数据正常 + + 开启一个终端,进入一个 Pod 启动服务 + + ```shell + # see 8 RDMA devices assigned to the Pod + $ rdma link + + # Start an RDMA service + $ ib_read_lat + ``` + + 开启一个终端,进入另一个 Pod 访问服务: + + ```shell + # You should be able to see all RDMA network cards on the host + $ rdma link + + # Successfully access the RDMA service of the other Pod + $ ib_read_lat 172.91.0.115 + ``` + + 观察 RDMA 流量统计可通过进入到容器执行 `rdma statistic` 或参考 [RDMA监控](../../rdma-metrics-zh_CN.md). + +## (可选)Infiniband 网络下对接 UFM + +对于使用了 Infiniband 网络的集群,如果网络中有 [UFM 管理平台](https://www.nvidia.com/en-us/networking/infiniband/ufm/),可使用 [ib-kubernetes](https://github.com/Mellanox/ib-kubernetes) 插件,它以 daemonset 形式运行,监控所有使用 SRIOV 网卡的容器,把 VF 设备的 Pkey 和 GUID 上报给 UFM 。 + +1. 在 UFM 主机上创建通信所需要的证书: + + ```shell + # replace to right address + $ UFM_ADDRESS=172.16.10.10 + $ openssl req -x509 -newkey rsa:4096 -keyout ufm.key -out ufm.crt -days 365 -subj '/CN=${UFM_ADDRESS}' + + # Copy the certificate files to the UFM certificate directory: + $ cp ufm.key /etc/pki/tls/private/ufmlocalhost.key + $ cp ufm.crt /etc/pki/tls/certs/ufmlocalhost.crt + + # For containerized UFM deployment, restart the container service + $ docker restart ufm + + # For host-based UFM deployment, restart the UFM service + $ systemctl restart ufmd + ``` + +2. 在 kubernetes 集群上,创建 ib-kubernetes 所需的通信证书。把 UFM 主机上生成的 ufm.crt 文件传输至 kubernetes 节点上,并使用如下命令创建证书 + + ```shell + # replace to right user + $ UFM_USERNAME=admin + + # replace to right password + $ UFM_PASSWORD=12345 + + # replace to right address + $ UFM_ADDRESS="172.16.10.10" + $ kubectl create secret generic ib-kubernetes-ufm-secret --namespace="kube-system" \ + --from-literal=UFM_USER="${UFM_USERNAME}" \ + --from-literal=UFM_PASSWORD="${UFM_PASSWORD}" \ + --from-literal=UFM_ADDRESS="${UFM_ADDRESS}" \ + --from-file=UFM_CERTIFICATE=ufm.crt + ``` + +3. 在 kubernetes 集群上安装 ib-kubernetes + + ```shell + git clone https://github.com/Mellanox/ib-kubernetes.git && cd ib-kubernetes + $ kubectl create -f deployment/ib-kubernetes-configmap.yaml + kubectl create -f deployment/ib-kubernetes.yaml + ``` + +4. 在 Infiniband 网络下,创建 Spiderpool 的 SpiderMultusConfig 时,可配置 pkey,使用该配置创建的 POD 将生效 pkey 配置,且被 ib-kubernetes 同步给 UFM + + ```shell + $ cat < Note: Each node in an Infiniband Kubernetes deployment may be associated with up to 128 PKeys due to kernel limitation + +## 基于 Webhook 自动注入 RDMA 网络资源 + +在上述步骤中,我们展示了如何使用 SR-IOV 技术在 RoCE 和 Infiniband 网络环境中为容器提供 RDMA 通信能力。然而,当配置多网卡的 AI 应用时,过程会变得复杂。为简化这个过程,Spiderpool 通过 annotations(`cni.spidernet.io/rdma-resource-inject` 或 `cni.spidernet.io/network-resource-inject`) 支持对一组网卡配置进行分类。用户只需要为应用添加与网卡配置相同的注解,Spiderpool 就会通过 webhook 自动为应用注入所有具有相同注解的对应网卡和网络资源。`cni.spidernet.io/rdma-resource-inject` 只适用于 AI 场景,自动注入 RDMA 网卡及 RDMA Resources;`cni.spidernet.io/network-resource-inject` 不但可以用于 AI 场景,也支持 Underlay 场景。在未来我们希望都统一使用 `cni.spidernet.io/network-resource-inject` 支持这两种场景。 + + > 该功能仅支持 [ macvlan, ipvlan, sriov, ib-sriov, ipoib ] 这几种 cniType 的网卡配置。 + +1. 当前 Spiderpool 的 webhook 自动注入 RDMA 网络资源,默认是关闭的,需要手动开启。 + + ```shell + ~# helm upgrade --install spiderpool spiderpool/spiderpool --namespace spiderpool --create-namespace --reuse-values --set spiderpoolController.podResourceInject.enabled=true + ``` + + > 启用 webhook 自动注入网络资源功能后,您可以通过更新 configMap: spiderpool-config 中的 podResourceInject 字段更新配置。 + > + > 通过 `podResourceInject.namespacesExclude` 指定不进行 RDMA 网络资源注入的命名空间 + > + > 通过 `podResourceInject.namespacesInclude` 指定需要进行 RDMA 网络资源注入的命名空间,如果 `podResourceInject.namespacesExclude` 和 `podResourceInject.namespacesInclude` 都没有指定,则默认对所有命名空间进行 RDMA 网络资源注入。 + > + > 当前,完成配置变更后,您需要重启 spiderpool-controller 来使配置生效。 + +2. 在创建 AI 算力网络的所有 SpiderMultusConfig 实例时,添加 key 为 "cni.spidernet.io/rdma-resource-inject" 或 "cni.spidernet.io/network-resource-inject" 的 annotation,value 可自定义任何值 + + ```yaml + apiVersion: spiderpool.spidernet.io/v2beta1 + kind: SpiderIPPool + metadata: + name: gpu1-net11 + spec: + gateway: 172.16.11.254 + subnet: 172.16.11.0/16 + ips: + - 172.16.11.1-172.16.11.200 + --- + apiVersion: spiderpool.spidernet.io/v2beta1 + kind: SpiderMultusConfig + metadata: + name: gpu1-sriov + namespace: spiderpool + annotations: + cni.spidernet.io/rdma-resource-inject: rdma-network + spec: + cniType: sriov + sriov: + resourceName: spidernet.io/gpu1sriov + enableRdma: true + ippools: + ipv4: ["gpu1-net11"] + ``` + +3. 创建 AI 应用时,为应用也添加相同注解: + + ```yaml + ... + spec: + template: + metadata: + annotations: + cni.spidernet.io/rdma-resource-inject: rdma-network + ``` + + > 注意:使用 webhook 自动注入网络资源功能时,不能为应用添加其他网络配置注解(如 `k8s.v1.cni.cncf.io/networks` 和 `ipam.spidernet.io ippools`等),否则会影响资源自动注入功能。 + +4. 当 Pod 被创建后,可观测到 Pod 被自动注入了网卡 annotation 和 RDMA 资源 + + ```yaml + ... + spec: + template: + metadata: + annotations: + k8s.v1.cni.cncf.io/networks: |- + [{"name":"gpu1-sriov","namespace":"spiderpool"}, + {"name":"gpu2-sriov","namespace":"spiderpool"}, + {"name":"gpu3-sriov","namespace":"spiderpool"}, + {"name":"gpu4-sriov","namespace":"spiderpool"}, + {"name":"gpu5-sriov","namespace":"spiderpool"}, + {"name":"gpu6-sriov","namespace":"spiderpool"}, + {"name":"gpu7-sriov","namespace":"spiderpool"}, + {"name":"gpu8-sriov","namespace":"spiderpool"}] + .... + resources: + limits: + spidernet.io/gpu1rdma: 1 + spidernet.io/gpu2rdma: 1 + spidernet.io/gpu3rdma: 1 + spidernet.io/gpu4rdma: 1 + spidernet.io/gpu5rdma: 1 + spidernet.io/gpu6rdma: 1 + spidernet.io/gpu7rdma: 1 + spidernet.io/gpu8rdma: 1 + ``` + +## 自定义 VF 的 MTU + + 默认情况下,SR-IOV VF 的 MTU 不会继承其 PF 的值影响,因此在一些特殊通信场景下,用户需要为 Pod 自定义 MTU 大小以满足不同数据报文通信需求。您可以参考以下方式自定义配置 Pod 的 MTU 大小(以 Ethernet 为例): + + ```yaml + apiVersion: spiderpool.spidernet.io/v2beta1 + kind: SpiderMultusConfig + metadata: + name: gpu1-sriov + namespace: spiderpool + spec: + cniType: sriov + sriov: + resourceName: spidernet.io/gpu1sriov + enableRdma: true + mtu: 8000 + ippools: + ipv4: ["gpu1-net11"] + ``` + + 注意:MTU 的取值范围不应该大于 sriov PF 的 MTU 值。