Kubernetes 1.20版本之后,将不再支持使用Docker作为CRI(container runtime interface)。生产环境中,如果对使用的K8s有高版本要求时,需要考虑改用其它CRI。集群调度组件基于主流CRI Containerd的1.4.4版本进行安装和验证,各组件能够在Containerd + Kubernetes场景下正常运行,且功能正常。
Containerd安装流程请参见官方资料。集群调度组件安装时默认使用Ascend Docker Runtime,可以配置Containerd使用Ascend Docker Runtime替代runc,用于在启动容器时自动挂载设备,对Containerd需要做的配置请参见Containerd启用Ascend Docker Runtime。
在已完成Containerd和Kubernetes安装的环境上,对于集群调度组件的安装请参见安装集群调度组件。
Containerd客户端使用Ascend Docker Runtime可执行如下步骤。
mkdir /etc/containerd containerd config default > /etc/containerd/config.toml vim /etc/containerd/config.toml
... [plugins."io.containerd.grpc.v1.cri".x509_key_pair_streaming] tls_cert_file = "" tls_key_file = "" [plugins."io.containerd.internal.v1.opt"] path = "/opt/containerd" [plugins."io.containerd.internal.v1.restart"] interval = "10s" [plugins."io.containerd.metadata.v1.bolt"] content_sharing_policy = "shared" [plugins."io.containerd.monitor.v1.cgroups"] no_prometheus = false [plugins."io.containerd.runtime.v1.linux"] shim = "containerd-shim" runtime = "/usr/local/Ascend/Ascend-Docker-Runtime/ascend-docker-runtime" runtime_root = "" no_shim = false shim_debug = false [plugins."io.containerd.runtime.v2.task"] platforms = ["linux/amd64"] [plugins."io.containerd.service.v1.diff-service"] default = ["walking"] [plugins."io.containerd.snapshotter.v1.devmapper"] root_path = "" pool_name = "" base_image_size = "" async_remove = false
systemctl restart containerd
ctr run --runtime io.containerd.runtime.v1.linux -t --env ASCEND_VISIBLE_DEVICES=0 image-name:tag containerID
ctr run --runtime io.containerd.runtime.v1.linux -t --env ASCEND_VISIBLE_DEVICES=0 --env ASCEND_RUNTIME_OPTIONS=NODRV image-name:tag containerID
ctr run --runtime io.containerd.runtime.v1.linux -t --env ASCEND_VISIBLE_DEVICES=0 --env ASCEND_RUNTIME_MOUNTS=hostlog image-name:tag containerID
ctr run --runtime io.containerd.runtime.v1.linux -t --env ASCEND_VISIBLE_DEVICES=100 --env ASCEND_RUNTIME_OPTIONS=VIRTUAL image-name:tag containerID
ctr run --runtime io.containerd.runtime.v1.linux -t --env ASCEND_VISIBLE_DEVICES=0 --env ASCEND_VNPU_SPECS=vir04 image-name:tag containerID
容器启动后,可使用ls /dev | grep davinci* && ls /dev | grep devmm_svm && ls /dev | grep hisi_hdc && ls /usr/local/Ascend/driver && ls /usr/local/ |grep dcmi && ls /usr/local/bin命令来检查相应设备和驱动是否挂载成功,每台机型具体的挂载目录参考Ascend Docker Runtime默认挂载内容。
ls /dev/davinci*
ls /dev/vdavinci*
hostlog文件挂载内容须基于“base.list”文件,base.list内容如Ascend Docker Runtime默认挂载内容所示。
创建配置文件请参见创建配置文件,以配置文件“hostlog.list”为例(文件后缀必须为.list)。
参数 |
说明 |
举例 |
---|---|---|
ASCEND_VISIBLE_DEVICES |
使用ASCEND_VISIBLE_DEVICES环境变量指定被挂载至容器中的NPU设备,使用设备序号指定设备,支持单个和范围指定且支持混用。 |
|
ASCEND_RUNTIME_OPTIONS |
对参数ASCEND_VISIBLE_DEVICES中指定的芯片ID作出限制:
说明:
虚拟设备的相关约束及创建方法具体请参见《Ascend 910 NPU驱动和固件安装指南(AI服务器)》(其他产品型号请参考对应的驱动和固件安装手册)的“算力分组场景下的安装”章节。 |
|
ASCEND_RUNTIME_MOUNTS |
读取配置文件中的挂载内容。 |
ASCEND_RUNTIME_MOUNTS=hostlog
说明:
hostlog请根据实际自定义配置文件名修改。 |
ASCEND_VNPU_SPECS |
从物理NPU设备中切分出一定数量的AI Core,指定为虚拟设备。支持的取值为(vir01,vir02,vir02_1c,vir04,vir04_3c,vir08,vir16、vir04_4c_dvpp、vir04_3c_ndvpp)。
需配合参数“ASCEND_VISIBLE_DEVICES”一起使用,参数“ASCEND_VISIBLE_DEVICES”指定用于切分的物理NPU设备。 |
ASCEND_VNPU_SPECS=vir04表示切分4个AI Core作为虚拟设备,挂载至容器中。 说明:
|