准备基础镜像
由于准备模型时可能需要使用基础镜像,因此需要提前准备基础镜像。
Kubernetes社区已经在v1.24版本中移除Dockershim,建议将容器引擎从Docker逐步迁移至官方推荐的Containerd,以确保未来与Kubernetes版本的兼容性和持续支持。所以Lite Cluster目前推荐使用Containerd作为容器引擎,安装镜像。
步骤一:检查环境
- SSH登录机器后,检查NPU设备检查。运行如下命令,返回NPU设备信息。
npu-smi info # 在每个实例节点上运行此命令可以看到NPU卡状态 npu-smi info -l | grep Total # 在每个实例节点上运行此命令可以看到总卡数
如出现错误,可能是机器上的NPU设备没有正常安装,或者NPU镜像被其他容器挂载。请先正常安装NPU设备和驱动,或释放被挂载的NPU。
- 检查Containerd是否安装。
containerd -v # 检查containerd是否安装
在创建CCE集群时,会选择Containerd作为容器引擎,并默认给机器安装。如尚未安装,说明机器操作系统安装错误。需要重新纳管机器,重新安装操作系统。
- 安装nerdctl工具。nerdctl是Containerd的一个客户端命令行工具,使用方式和docker命令基本一致,可用于后续镜像构建步骤中。
# 下载 nerdctl 工具,注意使用的是1.7.6 arm64版本 wget https://github.com/containerd/nerdctl/releases/download/v1.7.6/nerdctl-1.7.6-linux-arm64.tar.gz # 将程序解压至运行目录中 tar -zxf nerdctl-1.7.6-linux-arm64.tar.gz -C /usr/bin/ # 查看是否安装成功 nerdctl -v
- 安装buildkit工具。buildkit是从Docker开源出来的下一代镜像构建工具,支持OCI标准的镜像构建。buildkit由两部分组成:buildkitd和buildkitctl,nerdctl需要结合buildkit一起使用。
buildkitd(服务端):负责镜像构建,目前支持runc和containerd作为镜像构建环境,默认是runc。
buildkitctl(客户端):负责解析Dockerfile文件,并向服务端buildkitd发出构建请求。
buildkit的安装和启动可以参考如下工具install_buildkit.sh,执行如下命令进行安装启动。
bash install_buildkit.sh

install_buildkit.sh脚本内容如下:
#!/bin/bash function echo_with_time() { echo "$(date '+%Y-%m-%d %H:%M:%S') | $1" } function main() { download_buildkit config_buildkit start_buildkit } function download_buildkit() { # 下载 buildkit 工具,注意使用的是0.15.1 arm64版本 wget https://github.com/moby/buildkit/releases/download/v0.15.1/buildkit-v0.15.1.linux-arm64.tar.gz mkdir /usr/local/buildkit tar -zxf buildkit-v0.15.1.linux-arm64.tar.gz -C /usr/local/buildkit chmod -R 777 /usr/local/buildkit } function config_buildkit() { ln -sf /usr/local/buildkit/bin/buildkitd /usr/local/bin/buildkitd cat > /usr/lib/systemd/system/buildkitd.service <<'EOF' [Unit] Description=buildkitd After=network.target [Service] Environment=PATH=/usr/local/buildkit/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin ExecStart=/usr/local/buildkit/bin/buildkitd Restart=always [Install] WantedBy=multi-user.target EOF } function start_buildkit() { # 重新加载Unit file systemctl daemon-reload || { echo_with_time "systemctl daemon-reload 失败" return 1 } # 开机自启动 systemctl enable buildkitd || { echo_with_time "设置开机启用buildkitd服务失败" return 1 } systemctl start buildkitd || { echo_with_time "启动buildkitd服务失败" return 1 } echo_with_time "BuildKit服务状态:" systemctl status buildkitd --no-pager -l } main
步骤二:获取基础镜像
建议使用官方提供的基础镜像进行标注作业,基础镜像见表1。
Containerd 容器引擎有命名空间的概念,Kubernetes下使用Containerd默认命名空间是k8s.io。在导入镜像时需要指定命令空间为k8s.io,否则使用crictl images 无法查询到。拉取镜像有两种方式,以下命令可以选择其中一种执行。
- 使用 containerd 自带的工具 ctr 拉取镜像。
ctr -n k8s.io pull {image_url}
- 使用nerdctl工具拉取镜像。
nerdctl --namespace k8s.io pull {image_url}
# ctr 工具查看 ctr -n k8s.io image list # crictl工具查看 crictl image # nerdctl 工具查看 nerdctl --namespace k8s.io image list