From 5c9cbeb2da769aede658d7177f6acbe9c7257fde Mon Sep 17 00:00:00 2001 From: windsonsea Date: Wed, 25 Sep 2024 11:17:50 +0800 Subject: [PATCH] [docs] Fix indentations in ai/get-started-macvlan Signed-off-by: windsonsea --- .../install/ai/get-started-macvlan-zh_CN.md | 82 +++++++++---------- docs/usage/install/ai/get-started-macvlan.md | 81 +++++++++--------- 2 files changed, 82 insertions(+), 81 deletions(-) diff --git a/docs/usage/install/ai/get-started-macvlan-zh_CN.md b/docs/usage/install/ai/get-started-macvlan-zh_CN.md index 3428a2a636..fe29ebae6e 100644 --- a/docs/usage/install/ai/get-started-macvlan-zh_CN.md +++ b/docs/usage/install/ai/get-started-macvlan-zh_CN.md @@ -6,7 +6,7 @@ 本节介绍在建设 AI 集群场景下,如何基于 Macvlan 技术给容器提供 RDMA 通信能力,适用在 RoCE 网络场景下。 -基于 [RDMA shared device plugin](https://github.com/Mellanox/k8s-rdma-shared-dev-plugin), 给容器插入 Macvlan 接口,能够把 master 接口的 RDMA 设备共享给容器使用,因此: +基于 [RDMA shared device plugin](https://github.com/Mellanox/k8s-rdma-shared-dev-plugin),给容器插入 Macvlan 接口,能够把 master 接口的 RDMA 设备共享给容器使用,因此: - RDMA system 需要工作在 shared 模式下,所有的容器共享使用宿主机上的 master 网卡的 RDMA 设备。它的特点是,每个新启动的容器中,其 RDMA 设备的可用 GID index 总是在递增变换的,不是固定值。 @@ -14,10 +14,11 @@ ## 方案 -本文将以如下典型的 AI 集群拓扑为例,介绍如何搭建 Spiderpool +本文将以如下典型的 AI 集群拓扑为例,介绍如何搭建 Spiderpool。 ![AI Cluster](../../../images/ai-cluster.png) -图1 AI 集群拓扑 + +图 1. AI 集群拓扑 集群的网络规划如下: @@ -34,7 +35,7 @@ - 安装好 Kubernetes 集群,kubelet 工作在图 1 中的主机 eth0 网卡上 - 安装 Calico 作为集群的缺省 CNI,使用主机的 eth0 网卡作为 calico 的流量转发网卡。 - 如果未安装,可参考 [官方文档](https://docs.tigera.io/calico/latest/getting-started/kubernetes/) 或参考以下命令安装: + 如果未安装,可参考[官方文档](https://docs.tigera.io/calico/latest/getting-started/kubernetes/)或参考以下命令安装: ```shell $ kubectl apply -f https://github.com/projectcalico/calico/blob/master/manifests/calico.yaml @@ -49,14 +50,14 @@ 1. 安装 RDMA 网卡驱动 - 对于 Mellanox 网卡,可下载 [NVIDIA OFED 官方驱动](https://network.nvidia.com/products/infiniband-drivers/linux/mlnx_ofed/) 进行主机安装,执行如下安装命令 + 对于 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 安装 + 对于 Mellanox 网卡,也可基于容器化安装驱动,实现对集群主机上所有 Mellanox 网卡批量安装驱动,运行如下命令,注意的是,该运行过程中需要访问因特网获取一些安装包。当所有的 ofed pod 进入 ready 状态,表示主机上已经完成了 OFED driver 安装。 ```shell $ helm repo add spiderchart https://spidernet-io.github.io/charts @@ -73,7 +74,7 @@ 2. 确认网卡支持 Ethernet 工作模式 - 本示例环境中,宿主机上接入了 mellanox ConnectX 5 VPI 网卡,查询 RDMA 设备,确认网卡驱动安装完成 + 本示例环境中,宿主机上接入了 mellanox ConnectX 5 VPI 网卡,查询 RDMA 设备,确认网卡驱动安装完成 ``` $ rdma link @@ -82,21 +83,21 @@ ....... ``` - 确认网卡的工作模式,如下输出表示网卡工作在 Ethernet 模式下,可实现 RoCE 通信 + 确认网卡的工作模式,如下输出表示网卡工作在 Ethernet 模式下,可实现 RoCE 通信 ``` $ ibstat mlx5_0 | grep "Link layer" Link layer: Ethernet ``` - 如下输出表示网卡工作在 Infiniband 模式下,可实现 Infiniband 通信 + 如下输出表示网卡工作在 Infiniband 模式下,可实现 Infiniband 通信 ``` $ ibstat mlx5_0 | grep "Link layer" Link layer: InfiniBand ``` - 如果网卡没有工作在预期的模式下,请输入如下命令,确认网卡支持配置 LINK_TYPE 参数,如果没有该参数,请更换支持的网卡型号 + 如果网卡没有工作在预期的模式下,请输入如下命令,确认网卡支持配置 LINK_TYPE 参数,如果没有该参数,请更换支持的网卡型号 ``` $ mst start @@ -114,21 +115,21 @@ 3. 开启 [GPUDirect RMDA](https://docs.nvidia.com/cuda/gpudirect-rdma/) 功能 - 在安装或使用 [gpu-operator](https://github.com/NVIDIA/gpu-operator) 过程中 + 在安装或使用 [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 网卡之间的转发性能。可在主机上输入如下命令,确认安装成功的内核模块 + 1. 开启 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 网卡之间的转发性能。可在主机上输入如下命令,确认安装成功的内核模块 - ``` - $ lsmod | grep nvidia_peermem - nvidia_peermem 16384 0 - ``` + ``` + $ lsmod | grep nvidia_peermem + nvidia_peermem 16384 0 + ``` - b. 开启 helm 安装选项: `--set gdrcopy.enabled=true`,gpu-operator 会安装 [gdrcopy](https://developer.nvidia.com/gdrcopy) 内核模块,加速 GPU 显存 和 CPU 内存 之间的转发性能。可在主机上输入如下命令,确认安装成功的内核模块 + 2. 开启 helm 安装选项: `--set gdrcopy.enabled=true`,gpu-operator 会安装 [gdrcopy](https://developer.nvidia.com/gdrcopy) 内核模块,加速 GPU 显存 和 CPU 内存 之间的转发性能。可在主机上输入如下命令,确认安装成功的内核模块 - ``` - $ lsmod | grep gdrdrv - gdrdrv 24576 0 - ``` + ``` + $ lsmod | grep gdrdrv + gdrdrv 24576 0 + ``` 4. 确认主机上的 RDMA 子系统为 shared 模式,这是 macvlan 场景下提供 RDMA 设备给容器的要求。 @@ -142,7 +143,7 @@ 1. 使用 helm 安装 Spiderpool,并启用 SR-IOV 组件 - ``` + ```shell $ helm repo add spiderpool https://spidernet-io.github.io/spiderpool $ helm repo update spiderpool $ kubectl create namespace spiderpool @@ -153,7 +154,7 @@ 完成后,安装的组件如下 - ``` + ```shell $ kubectl get pod -n spiderpool spiderpool-agent-9sllh 1/1 Running 0 1m spiderpool-agent-h92bv 1/1 Running 0 1m @@ -165,9 +166,9 @@ 2. 配置 k8s-rdma-shared-dev-plugin, 识别出每个主机上的 RDMA 共享设备资源 - 修改如下 configmap,创建出 8 种 RDMA 共享设备,它们分别亲和每一个 GPU 设备。configmap 的详细配置可参考 [官方文档](https://github.com/Mellanox/k8s-rdma-shared-dev-plugin?tab=readme-ov-file#rdma-shared-device-plugin-configurations) + 修改如下 configmap,创建出 8 种 RDMA 共享设备,它们分别亲和每一个 GPU 设备。configmap 的详细配置可参考[官方文档](https://github.com/Mellanox/k8s-rdma-shared-dev-plugin?tab=readme-ov-file#rdma-shared-device-plugin-configurations)。 - ``` + ```shell $ kubectl edit configmap -n spiderpool spiderpool-rdma-shared-device-plugi .... config.json: | @@ -190,9 +191,9 @@ ] ``` - 完成如上配置后,可查看 node 的可用资源,确认每个节点都正确识别并上报了 8 种 RDMA 设备资源 + 完成如上配置后,可查看 node 的可用资源,确认每个节点都正确识别并上报了 8 种 RDMA 设备资源。 - ``` + ```shell $ kubectl get no -o json | jq -r '[.items[] | {name:.metadata.name, allocable:.status.allocatable}]' [ { @@ -213,9 +214,9 @@ 3. 创建 CNI 配置和对应的 ippool 资源 - 对于 Ethernet 网络,请为所有的 GPU 亲和的 macvlan 网卡配置,并创建对应的 IP 地址池 。 如下例子,配置了 GPU1 亲和的网卡和 IP 地址池 + 对于 Ethernet 网络,请为所有的 GPU 亲和的 macvlan 网卡配置,并创建对应的 IP 地址池。如下例子,配置了 GPU1 亲和的网卡和 IP 地址池。 - ``` + ```shell $ cat < If you are a user in China, you can specify the helm option `--set global.imageRegistryOverride=ghcr.m.daocloud.io` to use a domestic image source. + > If you are a user in China, you can specify the helm option `--set global.imageRegistryOverride=ghcr.m.daocloud.io` to use a domestic image source. - After completion, the installed components are as follows: + After completion, the installed components are as follows: ``` $ kubectl get pod -n spiderpool @@ -166,9 +167,9 @@ The network planning for the cluster is as follows: 2. Configure k8s-rdma-shared-dev-plugin - Modify the following ConfigMap to create eight types of RDMA shared devices, each associated with a specific GPU device. For detailed configuration of the ConfigMap, refer to [the official documentation](https://github.com/Mellanox/k8s-rdma-shared-dev-plugin?tab=readme-ov-file#rdma-shared-device-plugin-configurations). + Modify the following ConfigMap to create eight types of RDMA shared devices, each associated with a specific GPU device. For detailed configuration of the ConfigMap, refer to [the official documentation](https://github.com/Mellanox/k8s-rdma-shared-dev-plugin?tab=readme-ov-file#rdma-shared-device-plugin-configurations). - ``` + ```shell $ kubectl edit configmap -n spiderpool spiderpool-rdma-shared-device-plugi .... config.json: | @@ -193,7 +194,7 @@ The network planning for the cluster is as follows: After completing the above configuration, you can check the available resources on the node to confirm that each node has correctly recognized and reported the eight types of RDMA device resources. - ``` + ```shell $ kubectl get no -o json | jq -r '[.items[] | {name:.metadata.name, allocable:.status.allocatable}]' [ { @@ -212,11 +213,11 @@ The network planning for the cluster is as follows: ] ``` -3. Create CNI Configuration and Corresponding IP Pool Resources +3. Create CNI configuration and proper IP pool resources - For Ethernet networks, please configure the Macvlan network interfaces associated with all GPUs and create corresponding IP address pools. The example below shows the configuration for the network interface and IP address pool associated with GPU1. + For Ethernet networks, please configure the Macvlan network interfaces associated with all GPUs and create corresponding IP address pools. The example below shows the configuration for the network interface and IP address pool associated with GPU1. - ``` + ```shell $ cat <