更新时间:2025-12-15 GMT+08:00
分享

准备基础镜像

由于准备模型时可能需要使用基础镜像,因此需要提前准备基础镜像。

Kubernetes社区已经在v1.24版本中移除Dockershim,建议将容器引擎从Docker逐步迁移至官方推荐的Containerd,以确保未来与Kubernetes版本的兼容性和持续支持。所以Lite Cluster目前推荐使用Containerd作为容器引擎,安装镜像

步骤一:检查环境

  1. SSH登录机器后,检查NPU设备检查。运行如下命令,返回NPU设备信息。
    npu-smi info                    # 在每个实例节点上运行此命令可以看到NPU卡状态
    npu-smi info -l | grep Total    # 在每个实例节点上运行此命令可以看到总卡数

    如出现错误,可能是机器上的NPU设备没有正常安装,或者NPU镜像被其他容器挂载。请先正常安装NPU设备和驱动,或释放被挂载的NPU。

  2. 检查Containerd是否安装。
    containerd -v   # 检查containerd是否安装

    在创建CCE集群时,会选择Containerd作为容器引擎,并默认给机器安装。如尚未安装,说明机器操作系统安装错误。需要重新纳管机器,重新安装操作系统。

  3. 安装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
  4. 安装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

相关文档