华为云CCE集群纳管和验证GPU VNT1裸金属服务器的解决方案
0. 前言
解决如何将GPU VNT1裸金属服务器纳管至已创建好的华为云CCE集群, 并且在集群安装gpu-device-plugin插件, 根据pytorch2.01镜像创建pod,验证cuda是否可用。 本文给出端到端详解的步骤, 助力读者快速部署业务。
1. 资源准备
(1) 在华为云CCE购买集群, 需要选择网络模型为VPC网络;
(2) 在华为云ModelArts购买GPU VNT1裸金属服务器, 需要联系客户经理或提ModelArts工单申请相关权限;
(3) 当前GPU VNT1纳管至CCE集群,需要使用的IMS镜像为euler2.9_x86_nosdi_uefi_ib_40G_20230210v1,需要联系客户经理或提ModelArts工单申请。
2. CCE集群纳管节点-纳管VNT1裸金属服务器
在CCE Console界面选择纳管节点,选择对应的VNT1裸金属服务器, 需要注意的配置如下
(1) 容器引擎选择Docker;
(2) 操作系统选择私有镜像euler2.9_x86_nosdi_uefi_ib_40G_20230210v1;
(3) 增加k8s标签: accelerator:nvidia-vnt1
纳管过程涉及对VNT1裸金属服务器更换重装操作系统,预计时间在20分钟左右。
3. CCE集群安装gpu-device-plugin插件
gpu-device-plugin(原gpu-beta)插件是支持在容器中使用GPU显卡的设备管理插件,集群中使用GPU节点时必须安装本插件。
详细介绍可以参考: https://support.huaweicloud.com/usermanual-cce/cce_10_0141.html
(1) 前置条件: 必须在BMS节点上打上标签accelerator:nvidia-vnt1,方法如下(若步骤2纳管节点时已增加,则可略过)
kubectl label nodes 192.168.0.242 accelerator:nvidia-vnt1 //192.168.0.242为裸金属服务器私有IP
若无法执行kubectl,可以配置/root/.kube/config后执行。
(2) 在CCE console插件管理-选择gpu-device-plugin插件进行安装, 安装完成后可看到实例:
可以在CCE集群中对应的VNT1裸金属服务器节点上执行以下命令,进一步验证GPU插件是否安装成功
在GPU裸金属服务器中执行验证安装是否成功:
cd /opt/cloud/cce/nvidia/bin && ./nvidia-smi
或在容器中执行如下命令验证:
cd /usr/local/nvidia/bin && ./nvidia-smi
注意: 该gpu插件仅安装nvidia驱动,并未安装cuda组件,在宿主机若要开发gpu应用仍需自行安装cuda; 容器场景则不涉及。
至此, CCE集群已经成功纳管VNT1 GPU裸金属服务器,并且可以正常使用k8s pod等资源使用裸金属的GPU算力。
该插件nvidia驱动安装日志请参考: cat /opt/cloud/cce/nvidia/nvidia_installer.log
4. 方案验证: CCE集群中创建pytorch2.0.1 pod验证CUDA的可用性
(1) pytorch2.01镜像准备, 拉取pytorch2.0.1镜像, 若无法拉取需要在VNT1裸金属服务器上绑定弹性IP,使其具备外网访问权限:
docker pull pytorch/pytorch:2.0.0-cuda11.7-cudnn8-devel
(2) 创建gpu类deployment, 详细使用如下yaml, 可以直接挂在VNT1的8张GPU卡:
apiVersion: apps/v1
kind: Deployment
metadata:
name: v100-gpu-torch
namespace: default
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: v100-gpu-torch
version: v1
template:
metadata:
labels:
app: v100-gpu-torch
version: v1
spec:
containers:
- command:
- sleep
- "200000000000000000000000"
image: pytorch/pytorch:2.0.0-cuda11.7-cudnn8-devel
imagePullPolicy: IfNotPresent
name: container-1
resources:
limits:
cpu: 250m
memory: 512Mi
nvidia.com/gpu: "8"
requests:
cpu: 250m
memory: 512Mi
nvidia.com/gpu: "8"
dnsPolicy: ClusterFirst
imagePullSecrets:
- name: default-secret
restartPolicy: Always
(3) 查看deployment和pod创建状态, 成功的状态如下:
(4) 进入pytorch2.0.1容器, 验证CUDA的可用性:
至此已经验证完成,在已纳管VNT1 GPU裸金属服务器的CCE集群中, 安装gpu-device-plugin插件后, 可以创建pod正常使用VNT1的GPU算力。
注意事项:
如果裸金属服务器和想挂载的EVS云硬盘不在一个可用区,是无法创建pod+evs卷调度到该裸金属上的, 二者必须保证在同一个可用区。
- 点赞
- 收藏
- 关注作者
评论(0)