MindCluster Ascend Docker Runtime

确认安装场景

目前仅支持root用户安装MindCluster Ascend Docker Runtime,请根据实际情况选择对应的安装方式。

  1. 执行以下命令,查询节点名称。

    kubectl get node
    回显示例如下:
    NAME       STATUS   ROLES           AGE   VERSION
    ubuntu   Ready    worker    23h   v1.17.3

  2. 执行以下命令,查看当前节点的容器运行时。其中node-name为节点名称。

    • 不使用K8s场景
      docker --version      # Docker
      containerd --version     # Containerd
      • 若回显为Docker的版本信息,表示当前是Docker场景
      • 若回显为Containerd的版本信息,表示当前是Containerd场景
      • 若同时有DockerContainerd的版本信息,请用户自行确定任务所要使用的容器运行时。

Docker场景下安装MindCluster Ascend Docker Runtime

K8s集成Docker场景安装MindCluster Ascend Docker Runtime,与Docker场景下安装MindCluster Ascend Docker Runtime操作一致。

  1. 安装包下载完成后,首先进入安装包(run包)所在路径。

    cd <path to run package>

  2. 执行以下命令,为软件包添加可执行权限。

    chmod u+x Ascend-docker-runtime_{version}_linux-{arch}.run

  3. 执行如下命令,校验软件包安装文件的一致性和完整性。

    ./Ascend-docker-runtime_{version}_linux-{arch}.run --check
    回显示例如下:
    [WARNING]: --check is meaningless for Ascend-docker-runtime and will be discarded in the future
    Verifying archive integrity... ./Ascend-docker-runtime_6.0.RC2_linux-x86_64.run does not contain an embedded SHA256 checksum.
    ...
     All good.

  4. 可通过以下命令安装MindCluster Ascend Docker Runtime

    • 安装到默认路径下,执行以下命令。
      ./Ascend-docker-runtime_{version}_linux-{arch}.run --install
    • 安装到指定路径下,执行以下命令,“--install-path”参数为指定的安装路径。
      ./Ascend-docker-runtime_{version}_linux-{arch}.run --install --install-path=<path>

    回显示例如下,表示安装成功。

    Uncompressing ascend-docker-runtime  100%
    [INFO]: installing ascend docker runtime
    ...
    [INFO] Ascend Docker Runtime install success

  5. 执行以下命令,使MindCluster Ascend Docker Runtime生效。

    systemctl daemon-reload && systemctl restart docker

    MindCluster Ascend Device Plugin在启动时会自动检测MindCluster Ascend Docker Runtime是否存在,所以需要先启动MindCluster Ascend Docker Runtime,再启动MindCluster Ascend Device Plugin。若先启动MindCluster Ascend Device Plugin后再启动MindCluster Ascend Docker Runtime,需要参见Ascend Device Plugin章节重新启动MindCluster Ascend Device Plugin

Containerd场景下安装MindCluster Ascend Docker Runtime

  1. 安装包下载完成后,首先进入安装包(run包)所在路径。

    cd <path to run package>

  2. 执行以下命令,为软件包添加可执行权限。

    chmod u+x Ascend-docker-runtime_{version}_linux-{arch}.run

  3. 执行如下命令,校验软件包安装文件的一致性和完整性。

    ./Ascend-docker-runtime_{version}_linux-{arch}.run --check
    回显示例如下:
    [WARNING]: --check is meaningless for Ascend-docker-runtime and will be discarded in the future
    Verifying archive integrity... ./Ascend-docker-runtime_6.0.RC2_linux-x86_64.run does not contain an embedded SHA256 checksum.
    ...
     All good.

  4. 可通过以下命令安装MindCluster Ascend Docker Runtime

    • 安装到默认路径下。
      ./Ascend-docker-runtime_{version}_linux-{arch}.run --install
    • 安装到指定路径下,执行以下命令,“--install-path”参数为指定的安装路径。
      ./Ascend-docker-runtime_{version}_linux-{arch}.run --install --install-path=<path>
    回显示例如下,表示安装成功。
    Uncompressing ascend-docker-runtime  100%
    [INFO]: installing ascend docker runtime
    ...
    [INFO] Ascend Docker Runtime install success

  5. 执行以下命令,修改Containerd配置文件。

    • Containerd无默认配置文件时,依次执行以下命令,创建并修改配置文件。
      mkdir /etc/containerd
      containerd config default > /etc/containerd/config.toml
      vim /etc/containerd/config.toml
    • Containerd已有配置文件时,打开并修改配置文件。
      vim /etc/containerd/config.toml

  6. 修改Containerd配置文件“/etc/containerd/config.toml”

    1. 执行以下命令,查看当前cgroup的版本
      stat -fc %T /sys/fs/cgroup/
      • 若回显为tmpfs,表示当前为cgroup v1版本。
      • 若回显为cgroup2fs,表示当前为cgroup v2版本。
    2. 根据cgroup的版本修改runtime_type字段,并修改MindCluster Ascend Docker Runtime安装路径,示例如下加粗部分所示。
      • cgroup v1
            [plugins."io.containerd.grpc.v1.cri".containerd.runtimes] 
               [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]  
                 runtime_type = "io.containerd.runtime.v1.linux" 
                 runtime_engine = "" 
                 runtime_root = "" 
                 privileged_without_host_devices = false 
                 base_runtime_spec = "" 
                 [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] 
           [plugins."io.containerd.grpc.v1.cri".cni] 
             bin_dir = "/opt/cni/bin" 
             conf_dir = "/etc/cni/net.d" 
             max_conf_num = 1 
             conf_template = "" 
         [plugins."io.containerd.grpc.v1.cri".registry] 
             [plugins."io.containerd.grpc.v1.cri".registry.mirrors] 
               [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"] 
                 endpoint = ["https://registry-1.docker.io"] 
         [plugins."io.containerd.grpc.v1.cri".image_decryption] 
             key_model = "" 
         
        ...
         [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"] 
        ...
      • cgroup v2
                [plugins."io.containerd.grpc.v1.cri".containerd.default_runtime.options]
              [plugins."io.containerd.grpc.v1.cri".containerd.runtimes]
                [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
                  base_runtime_spec = ""
                  cni_conf_dir = ""
                  cni_max_conf_num = 0
                  container_annotations = []
                  pod_annotations = []
                  privileged_without_host_devices = false
                  runtime_engine = ""
                  runtime_path = ""
                  runtime_root = ""
                  runtime_type = "io.containerd.runc.v2"
                  [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
                    BinaryName = "/usr/local/Ascend/Ascend-Docker-Runtime/ascend-docker-runtime"
                    CriuImagePath = ""
                    CriuPath = ""
                    CriuWorkPath = ""
                    IoGid = 0
                    IoUid = 0
                    NoNewKeyring = false
                    NoPivotRoot = false
                    Root = ""
                    ShimCgroup = ""
                    SystemdCgroup = true
        ...

  7. 执行以下命令,重启Containerd

    systemctl daemon-reload && systemctl restart containerd

K8s集成Containerd场景下安装MindCluster Ascend Docker Runtime

  1. 安装包下载完成后,首先进入安装包(run包)所在路径。

    cd <path to run package>

  2. 执行以下命令,为软件包添加可执行权限。

    chmod u+x Ascend-docker-runtime_{version}_linux-{arch}.run

  3. 执行如下命令,校验软件包安装文件的一致性和完整性。

    ./Ascend-docker-runtime_{version}_linux-{arch}.run --check
    回显示例如下:
    [WARNING]: --check is meaningless for Ascend-docker-runtime and will be discarded in the future
    Verifying archive integrity... ./Ascend-docker-runtime_6.0.RC2_linux-x86_64.run does not contain an embedded SHA256 checksum.
    ...
     All good.

  4. 可通过以下命令安装MindCluster Ascend Docker Runtime

    • 安装到默认路径下。
      ./Ascend-docker-runtime_{version}_linux-{arch}.run --install
    • 安装到指定路径下,执行以下命令,“--install-path”参数为指定的安装路径。
      ./Ascend-docker-runtime_{version}_linux-{arch}.run --install --install-path=<path>
    回显示例如下,表示安装成功。
    Uncompressing ascend-docker-runtime  100%
    [INFO]: installing ascend docker runtime
    ...
    [INFO] Ascend Docker Runtime install success

  5. 修改Containerd配置文件“/etc/containerd/config.toml”

    1. 执行以下命令,查看当前cgroup的版本
      stat -fc %T /sys/fs/cgroup/
      • 若显示为tmpfs,表示当前为cgroup v1版本。
      • 若显示为cgroup2fs,表示当前为cgroup v2版本。
    2. 根据cgroup的版本修改runtime_type字段、并修改MindCluster Ascend Docker Runtime安装路径,示例如下加粗部分所示。
      • cgroup v1
            [plugins."io.containerd.grpc.v1.cri".containerd.runtimes] 
               [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]  
                 runtime_type = "io.containerd.runtime.v1.linux" 
                 runtime_engine = "" 
                 runtime_root = "" 
                 privileged_without_host_devices = false 
                 base_runtime_spec = "" 
                 [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] 
           [plugins."io.containerd.grpc.v1.cri".cni] 
             bin_dir = "/opt/cni/bin" 
             conf_dir = "/etc/cni/net.d" 
             max_conf_num = 1 
             conf_template = "" 
         [plugins."io.containerd.grpc.v1.cri".registry] 
             [plugins."io.containerd.grpc.v1.cri".registry.mirrors] 
               [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"] 
                 endpoint = ["https://registry-1.docker.io"] 
         [plugins."io.containerd.grpc.v1.cri".image_decryption] 
             key_model = "" 
         
        ...
         [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"] 
        ...
      • cgroup v2
                [plugins."io.containerd.grpc.v1.cri".containerd.default_runtime.options]
              [plugins."io.containerd.grpc.v1.cri".containerd.runtimes]
                [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
                  base_runtime_spec = ""
                  cni_conf_dir = ""
                  cni_max_conf_num = 0
                  container_annotations = []
                  pod_annotations = []
                  privileged_without_host_devices = false
                  runtime_engine = ""
                  runtime_path = ""
                  runtime_root = ""
                  runtime_type = "io.containerd.runc.v2"
                  [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
                    BinaryName = "/usr/local/Ascend/Ascend-Docker-Runtime/ascend-docker-runtime"
                    CriuImagePath = ""
                    CriuPath = ""
                    CriuWorkPath = ""
                    IoGid = 0
                    IoUid = 0
                    NoNewKeyring = false
                    NoPivotRoot = false
                    Root = ""
                    ShimCgroup = ""
                    SystemdCgroup = true
        ...

  6. 修改节点上kubelet的配置文件kubeadm-flags.env。

    vi /var/lib/kubelet/kubeadm-flags.env

    增加如下加粗内容,其他参数已省略。

    KUBELET_KUBEADM_ARGS="... --container-runtime=remote --container-runtime-endpoint=/run/containerd/containerd.sock ..."

  7. 如果存在Docker服务,请执行以下命令停止对应服务。

    systemctl stop docker

  8. 执行命令,重启Containerdkubelet,示例如下。

    systemctl daemon-reload && systemctl restart containerd kubelet

MindCluster Ascend Docker Runtime安装包命令行参数说明

参数说明如表1所示。

表1 安装包支持的参数说明

参数

说明

--help | -h

查询帮助信息。

--info

查询软件包构建信息。在未来某个版本将废弃该参数。

--list

查询软件包文件列表。在未来某个版本将废弃该参数。

--check

检查软件包的一致性和完整性。在未来某个版本将废弃该参数。

--quiet

静默安装,跳过交互式信息,需要配合install、uninstall或者upgrade使用。在未来某个版本将废弃该参数。

--nox11

不使用x11模式运行。在未来某个版本将废弃该参数。

--noexec

解压软件包到当前目录,但不执行安装脚本。配套--extract=<path>使用,格式为--noexec --extract=<path>。在未来某个版本将废弃该参数。

--extract=<path>

解压软件包中文件到指定目录,需要配合--noexec参数一起使用。在未来某个版本将废弃该参数。

--tar arg1 [arg2 ...]

对软件包执行tar命令,使用tar后面的参数作为命令的参数。例如执行--tar xvf命令,解压run安装包的内容到当前目录。在未来某个版本将废弃该参数。

--install

安装软件包。可以指定安装路径--install-path=<path>,也可以不指定安装路径,直接安装到默认路径下。

--install-path=<path>

指定安装路径。当环境上存在全局配置文件“ascend_dcoker_runtime_install.info”时,指定的安装路径必须与全局配置文件中保存的安装路径保持一致。如用户想更换安装路径,需先卸载原路径下的MindCluster Ascend Docker Runtime软件包并确保全局配置文件“ascend_dcoker_runtime_install.info”已被删除。

  • 若5.0.RC1版本之前的MindCluster Ascend Docker Runtime是通过ToolBox安装包安装的,则该文件不存在,不需要删除。
  • 若不指定安装路径,将安装到默认路径“/usr/local/Ascend”
  • 若通过该参数指定了安装目录,运行用户需要对指定的安装路径有读写权限。

--uninstall

卸载软件。如果安装时指定了安装路径,那么卸载时也需要指定安装路径,安装路径的参数为--install-path=<path>。

--upgrade

升级软件。如果安装时指定了安装路径,那么升级时也需要指定安装路径,安装路径的参数为--install-path=<path>。

--install-type=<type>

仅支持在以下产品安装或升级MindCluster Ascend Docker Runtime时使用该参数:
  • Atlas 200 AI加速模块(RC场景)
  • Atlas 200I SoC A1 核心板
  • Atlas 200I A2 加速模块(RC场景)
  • Atlas 200I DK A2 开发者套件
  • Atlas 500 智能小站(型号 3000)
  • Atlas 500 A2 智能小站
该参数用于设置MindCluster Ascend Docker Runtime的默认挂载内容,且需要配合“--install”一起使用,格式为--install --install-type=<type>。<type>可选值为:
  • A200
  • A200ISoC
  • A200IA2(支持Atlas 200I A2 加速模块(RC场景)和Atlas 200I DK A2 开发者套件
  • A500
  • A500A2

--ce=<ce>

仅在使用iSula启动容器时需要指定该参数,参数值为isula,并且需要配合--install或者--uninstall一起使用,不能单独使用。

--version

查询MindCluster Ascend Docker Runtime版本。