准备镜像
用户可通过以下两种方式准备镜像,获取镜像后依次为安装的相应组件创建节点标签、创建用户、创建日志目录和创建命名空间。
- (推荐)制作镜像。本章节以Ascend Operator为例,介绍了制作集群调度组件容器部署时所需要的镜像。软件包中的Dockerfile仅作为参考,用户可基于本示例制作定制化镜像。
- 从昇腾镜像仓库拉取镜像。用户可以从昇腾镜像仓库获取制作好的集群调度各组件的镜像。

制作镜像
- 在获取软件包章节,获取需要安装的集群调度组件软件包。
- 将软件包解压后,上传到制作镜像服务器的任意目录。以Ascend Operator为例,放到“/home/ascend-operator”目录,目录结构如下。
root@node:/home/ascend-operator# ll total 41388 drwxr-xr-x 2 root root 4096 Aug 26 20:20 ./ drwxr-xr-x 6 root root 4096 Aug 26 20:20 ../ -r-x------ 1 root root 41992192 Aug 26 02:02 ascend-operator* -r-------- 1 root root 372291 Aug 26 02:02 ascend-operator-v{version}.yaml -r-------- 1 root root 482 Aug 26 02:02 Dockerfile
NPU Exporter和Ascend Device Plugin若以容器化的形式部署在Atlas 200I SoC A1 核心板上,需要进行如下操作。- 在制作镜像时检查宿主机HwHiAiUser、HwDmUser、HwBaseUser用户的UID和GID,并记录该GID和UID的取值。
- 查看在Dockerfile-310P-1usoc中创建HwHiAiUser、HwDmUser、HwBaseUser用户时指定的GID和UID是否与宿主机的一致。如果一致则不做修改;如果不一致,请手动修改Dockerfile-310P-1usoc文件使其保持一致,同时需要保证每台宿主机上HwHiAiUser、HwDmUser、HwBaseUser用户的GID和UID的取值一致。
- 检查制作集群调度组件镜像的节点是否存在如下基础镜像。
- 执行docker images | grep ubuntu命令检查ubuntu镜像,Arm架构和x86_64架构镜像大小有差异。
ubuntu 18.04 6526a1858e5d 2 years ago 64.2MB
- 如果需要安装Volcano,则需要检查alpine镜像是否存在。执行docker images | grep alpine命令检查,回显示例如下,Arm架构和x86_64架构镜像大小有差异。
1
alpine latest a24bb4013296 2 years ago 5.57MB
若上述基础镜像不存在,使用表1中相关命令拉取基础镜像(拉取镜像需要服务器能访问互联网)。
- 执行docker images | grep ubuntu命令检查ubuntu镜像,Arm架构和x86_64架构镜像大小有差异。
- 进入组件解压目录,执行docker build命令制作镜像,命令参考如下表2。
表2 各组件镜像制作命令 节点产品类型
组件名称
镜像制作命令
说明
其他产品
Ascend Device Plugin
docker build --no-cache -t ascend-k8sdeviceplugin:{tag} ./
{tag}需要参考软件包上的版本。如:软件包上版本为6.0.0,则{tag}为v6.0.0。
说明:请确保Dockerfile-310P-1usoc中HwDmUser和HwBaseUser的GID和UID与物理机上的保持一致。
Atlas 200I SoC A1 核心板
docker build --no-cache -t ascend-k8sdeviceplugin:{tag} -f Dockerfile-310P-1usoc ./
其他产品
NPU Exporter
docker build --no-cache -t npu-exporter:{tag} ./
Atlas 200I SoC A1 核心板
docker build --no-cache -t npu-exporter:{tag} -f Dockerfile-310P-1usoc ./
其他产品
Ascend Operator
docker build --no-cache -t ascend-operator:{tag} ./
Resilience Controller
docker build --no-cache -t resilience-controller:{tag} ./
NodeD
docker build --no-cache -t noded:{tag} ./
ClusterD
docker build --no-cache -t clusterd:{tag} ./
Volcano
进入Volcano组件解压目录,选择以下版本路径并进入。
- v1.7.0版本执行以下命令。
docker build --no-cache -t volcanosh/vc-scheduler:v1.7.0 ./ -f ./Dockerfile-scheduler docker build --no-cache -t volcanosh/vc-controller-manager:v1.7.0 ./ -f ./Dockerfile-controller
- v1.9.0版本执行以下命令。
docker build --no-cache -t volcanosh/vc-scheduler:v1.9.0 ./ -f ./Dockerfile-scheduler docker build --no-cache -t volcanosh/vc-controller-manager:v1.9.0 ./ -f ./Dockerfile-controller
-
以Ascend Operator组件的镜像制作为例,执行docker build --no-cache -t ascend-operator:v{version} .进行制作,回显示例如下:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
DEPRECATED: The legacy builder is deprecated and will be removed in a future release. Install the buildx component to build images with BuildKit: https://docs.docker.com/go/buildx/ Sending build context to Docker daemon 42.37MB Step 1/5 : FROM ubuntu:18.04 as build ---> 1f37bb13f08a Step 2/5 : RUN useradd -d /home/hwMindX -u 9000 -m -s /usr/sbin/nologin hwMindX && usermod root -s /usr/sbin/nologin ---> Running in d43f1927b1fd Removing intermediate container d43f1927b1fd ---> 9f1d64e06ee6 Step 3/5 : COPY ./ascend-operator /usr/local/bin/ ---> 5022b58c516e Step 4/5 : RUN chown -R hwMindX:hwMindX /usr/local/bin/ascend-operator && chmod 500 /usr/local/bin/ascend-operator && chmod 750 /home/hwMindX && echo 'umask 027' >> /etc/profile && echo 'source /etc/profile' >> /home/hwMindX/.bashrc ---> Running in a781bde3dc56 Removing intermediate container a781bde3dc56 ---> 3d7e2ee7a3bd Step 5/5 : USER hwMindX ---> Running in 338954be8d99 Removing intermediate container 338954be8d99 ---> 103f6a2b43a5 Successfully built 103f6a2b43a5 Successfully tagged ascend-operator:v{version}
- v1.7.0版本执行以下命令。
- 满足以下场景可以跳过本步骤。
- 已将制作好的集群调度组件镜像上传到私有镜像仓库,各节点可以通过私有镜像仓库拉取集群调度组件的镜像。
- 已在安装集群调度组件各节点制作好了组件对应的镜像。
如不满足上述场景,则需要手动分发各组件镜像到各个节点。以NodeD组件为例,使用离线镜像包的方式,分发镜像到其他节点。- 将制作完成的镜像保存成离线镜像。
docker save noded:v{version} > noded-v{version}-linux-arrch64.tar
- 将镜像拷贝到其他节点。
scp noded-v{version}-linux-arrch64.tar root@{目标节点IP地址}:保存路径
- 以root用户登录各个节点载入离线镜像。
docker load < noded-v{version}-linux-arrch64.tar
- (可选)导入离线镜像到Containerd中。本步骤适用于容器运行时为Containerd场景,其他场景下可跳过。
以NodeD组件为例,使用离线镜像包的方式,执行以下命令。
ctr -n k8s.io images import noded-v{version}-linux-arrch64.tar
从昇腾镜像仓库拉取镜像
- 确保服务器能访问互联网后,访问昇腾镜像仓库。
- 在左侧导航栏选择“MindCluster”,然后根据下表选择组件对应的镜像。拉取的镜像需要重命名后才能使用组件启动yaml进行部署,可参考步骤3。
表3 镜像列表 组件
镜像名称
镜像tag
拉取镜像的节点
Resilience Controller
v6.0.0
管理节点
Volcano
根据需要选择镜像:
v1.7.0-v6.0.0
v1.9.0-v6.0.0
Ascend Operator
v6.0.0
ClusterD
v6.0.0
NodeD
v6.0.0
计算节点
NPU Exporter
v6.0.0
Ascend Device Plugin
v6.0.0
若无下载权限,请根据页面提示申请权限。提交申请后等待管理员审核,审核通过后即可下载镜像。
- 昇腾镜像仓库中拉取的集群调度镜像与组件启动yaml中的名字不一致,需要重命名拉取的镜像后才能启动。根据以下步骤将2中获取的镜像重新命名,同时建议删除原始名字的镜像。具体操作如下。
- 执行以下命令,重命名镜像(用户需根据所使用的组件,选取对应命令执行)。
docker tag swr.cn-south-1.myhuaweicloud.com/ascendhub/resilience-controller:v6.0.0 resilience-controller:v6.0.0 docker tag swr.cn-south-1.myhuaweicloud.com/ascendhub/ascend-operator:v6.0.0 ascend-operator:v6.0.0 docker tag swr.cn-south-1.myhuaweicloud.com/ascendhub/npu-exporter:v6.0.0 npu-exporter:v6.0.0 docker tag swr.cn-south-1.myhuaweicloud.com/ascendhub/ascend-k8sdeviceplugin:v6.0.0 ascend-k8sdeviceplugin:v6.0.0 # 使用1.9.0版本的Volcano,需要将镜像tag修改为v1.9.0-v6.0.0 docker tag swr.cn-south-1.myhuaweicloud.com/ascendhub/vc-controller-manager:v1.7.0-v6.0.0 volcanosh/vc-controller-manager:v1.7.0 docker tag swr.cn-south-1.myhuaweicloud.com/ascendhub/vc-scheduler:v1.7.0-v6.0.0 volcanosh/vc-scheduler:v1.7.0 docker tag swr.cn-south-1.myhuaweicloud.com/ascendhub/noded:v6.0.0 noded:v6.0.0 docker tag swr.cn-south-1.myhuaweicloud.com/ascendhub/clusterd:v6.0.0 clusterd:v6.0.0
- (可选)执行以下命令,删除原始名字镜像(用户需根据所使用的组件,选取对应命令执行)。
docker rmi swr.cn-south-1.myhuaweicloud.com/ascendhub/resilience-controller:v6.0.0 docker rmi swr.cn-south-1.myhuaweicloud.com/ascendhub/ascend-operator:v6.0.0 docker rmi swr.cn-south-1.myhuaweicloud.com/ascendhub/npu-exporter:v6.0.0 docker rmi swr.cn-south-1.myhuaweicloud.com/ascendhub/ascend-k8sdeviceplugin:v6.0.0 # 使用1.9.0版本的Volcano,需要将镜像tag修改为v1.9.0-v6.0.0 docker rmi swr.cn-south-1.myhuaweicloud.com/ascendhub/vc-controller-manager:v1.7.0-v6.0.0 docker rmi swr.cn-south-1.myhuaweicloud.com/ascendhub/vc-scheduler:v1.7.0-v6.0.0 docker rmi swr.cn-south-1.myhuaweicloud.com/ascendhub/noded:v6.0.0 docker rmi swr.cn-south-1.myhuaweicloud.com/ascendhub/clusterd:v6.0.0
- 执行以下命令,重命名镜像(用户需根据所使用的组件,选取对应命令执行)。
- (可选)导入离线镜像到Containerd中。本步骤适用于容器运行时为Containerd场景,其他场景下可跳过。
以NodeD组件为例,使用离线镜像包的方式,执行以下步骤。
- 将制作完成的镜像保存成离线镜像。
docker save noded:v{version} > noded-v{version}-linux-arrch64.tar
- 将离线镜像导入Containerd中。
ctr -n k8s.io images import noded-v{version}-linux-arrch64.tar
- 将制作完成的镜像保存成离线镜像。
父主题: 安装前准备