2. GPU集群搭建快速上手

本章描述如何用mxkind从头创建一个能使用沐曦GPU的集群。

2.1. 安装mxkind

从下载中心获取mxkind安装包,并安装。详情参考 3.1 安装mxkind

2.2. 创建集群

kind通过一个配置文件来描述待创建的集群,我们以创建包含一个controller节点,2个worker节点的集群为例,定义集群描述文件 2node-cluster.yaml 如下:

2.2.1. 基础集群描述文件

示例中挂载的/opt/mxdriver路径是为了支持在集群中访问mx-smi,如果不需要使用mx-smi可以不做这个路径的挂载。

# three node (two workers) cluster config
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
  extraMounts:
  - hostPath: /opt/mxdriver
    containerPath: /opt/mxdriver
- role: worker
  extraMounts:
  - hostPath: /opt/mxdriver
    containerPath: /opt/mxdriver

2.2.2. 支持sGPU的集群描述文件

如果要在创建的集群中使用 GPU Operator 的sGPU功能,需要在创建集群的时候将/dev目录挂载到集群的工作节点上。

# three node (two workers) cluster config
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
  extraMounts:
  - hostPath: /opt/mxdriver
    containerPath: /opt/mxdriver
  - hostPath: /dev
    containerPath: /dev
- role: worker
  extraMounts:
  - hostPath: /opt/mxdriver
    containerPath: /opt/mxdriver
  - hostPath: /dev
    containerPath: /dev

2.2.3. 选取创建集群的K8s镜像

kind在创建集群的时候需要指定集群的k8s镜像,这个镜像决定了创建集群的k8s版本。

kind官方在发布每个kind版本的时候都为这个版本预构建好了一些配套的k8s镜像,用户根据使用的kind版本选择一个预构建好的镜像即可。

2.2.3.1. 获取kind版本号

m01060@lt-pc-10-12-0-12:~/$ mxkind -- version
kind v0.31.0 go1.25.5 linux/amd64

2.2.3.2. 获取K8s镜像

我们通过刚才获取到的kind版本号v0.31.0到kind预构建k8s镜像查询这个版本对应的k8s预构建镜像列表,并选取一个适合自己的。

这里假设我们选中v1.31.14,通过如下命令将其拉到本地:

sudo docker pull kindest/node:v1.31.14@sha256:6f86cf509dbb42767b6e79debc3f2c32e4ee01386f0489b3b2be24b0a55aac2b

2.2.4. 创建集群

创建集群之前,需要先定义集群中每个节点需要几个GPU,本节假设每个节点都需要2个GPU,通过如下命令创建集群。

# 2node-cluster.yaml 为前面创建的集群定义文件
# --worker-gpus=2,2 表示创建的2个工作节点各占用2个沐曦GPU
# kindest/node:v1.31.14 为选定的集群k8s镜像
mxkind create cluster --worker-gpus=2,2 -- --config=2node-cluster.yaml --image=kindest/node:v1.31.14

2.3. 安装沐曦 GPU Operator

本节介绍如何在创建好的集群中安装沐曦 GPU Operator,沐曦 GPU Operator 的下载安装和使用,参见《沐曦通用GPU云原生参考手册》。这里假设已经下载好安装所需的组件。

2.3.1. 加载相关镜像到集群

2.3.1.1. 获取集群名字

可通过如下指令获取刚才创建的集群名:

mxkind -- get clusters

2.3.1.2. 加载镜像到指定集群

可通过如下命令将宿主机中的镜像load到指定的kind集群中,其中 imageName 为镜像名, tag 为镜像的tag:

mxkind -- load docker-image image:tag --name cluster-name

循环上述步骤将 GPU Operator 所需的所有镜像都加载到指定的集群中。

2.3.2. 安装 GPU Operator

GPU Operator 从0.15.0开始支持mxkind集群安装,请确保 GPU Operator 的版本≥0.15.0,同时Helm版本≥3.8。

在mxkind集群中和在非mxkind集群中安装 GPU Operator 的唯一区别是,在mxkind集群中安装时需要在安装命令中指定 kind.enabled=true

下文中的 common-flags 指 GPU Operator 安装过程中的标准flag参数,使用方式可参考《沐曦通用GPU云原生参考手册》中“安装GPU Operator”章节。

安装 GPU Operator 命令原型如下:

# 1:如果要开启operator的sGPU功能,需要在安装operator之前为工作节点重新挂载/sys目录,操作步骤如下:
# 通过mxkind get clusters获取mxkind集群列表,选择自己要操作的集群名作为cluster_name
cluster_name="your_actual_cluster_name"
worker_container_id=$(docker ps | grep $cluster_name | awk '{print $1}')
docker exec $worker_container_id mount -o remount,rw /sys

#2:安装operator
helm install ./metax-operator [common-flags]
   --set kind.enabled=true
# 注:此场景需要Helm版本≥3.8

安装完成后,可通过以下命令查看 GPU Operator 生成的POD状态来判断是否安装成功:

kubectl get po -n metax-operator