全部产品
    创建或扩容支持GPU计算的Kubernetes集群时如何安装NVIDIA驱动

创建或扩容支持GPU计算的Kubernetes集群时如何安装NVIDIA驱动

更新时间:2020-09-09 14:35:47

概述

一般情况下,在创建或者扩容支持GPU计算的Kubernetes集群时,您不需要指定计算节点安装NVIDIA驱动的版本。若您需要指定安装某个驱动版本时,本文将为您介绍在创建支持GPU计算的Kubernetes集群时,如何安装NVIDIA驱动。扩容集群安装NVIDIA驱动的方法与创建的方法类似。

详细信息

创建Kubernetes集群安装NVIDIA驱动需要指定特定标签,标签如下所示。

  • ack.aliyun.com/nvidia-driver-version
  • ack.aliyun.com/nvidia-driver-oss-endpoint
  • ack.aliyun.com/nvidia-driver-runfile

若需要指定驱动版本安装,版本通过ack.aliyun.com/nvidia-driver-version标签标记即可。创建集群时将会尝试在可使用的NVIDIA驱动列表中寻找该版本,如果存在该版本则安装;如果不存在,则安装默认的驱动版本。当前可使用的版本列表如下所示。

  • 384.111
  • 410.79(集群节点操作系统为CentOS7.6和AliyunOS时的默认安装版本)
  • 410.104
  • 410.39-grid(vGPU节点使用)
  • 430.63-grid(vGPU节点使用,ecs.vgn6i机型默认安装版本)
  • 418.70-grid(vGPU节点使用,ecs.vgn5i机型默认安装版本)
  • 418.87.01(集群节点操作系统为CentOS7.7系统时的默认安装版本)
  • 418.113
  • 440.33.01

若指定驱动文件下载地址安装,需要满足如下三个条件。并且需要通过ack.aliyun.com/nvidia-driver-oss-endpoint标签指定存放驱动文件的OSS地址,ack.aliyun.com/nvidia-driver-runfile标签指定文件名。

  1. 需要提供正确版本的NVIDIA驱动文件,驱动文件以.run后缀结尾。
  2. 需要将NVIDIA驱动文件上传至阿里云的对象存储OSS中。
  3. 上传至对象存储OSS之后,需要开放公共读权限。

控制台中安装驱动

方式一:控制台指定驱动版本安装

  1. 登录容器服务控制台,在创建Kubernetes集群时,添加ack.aliyun.com/nvidia-driver-version标签,标签右侧输入NVIDIA驱动版本,本文以410.104为例。单击 添加 之后,正常创建集群即可。
  2. 若需要验证NVIDIA驱动是否安装成功,等待集群创建完毕,在目标集群右侧依次单击 更多 > 通过CloudShell管理集群
  3. 执行如下命令,确认存在nvidia-device-plugin相关的Pod。
    kubectl get po -n kube-system -l component=nvidia-device-plugin -o wide
    系统显示类似如下,每个Pod对应一个GPU计算节点,从图中红线框部分可以看到它们所对应的节点名称和节点IP,以及运行时长,记录一个Pod的NAME值。
    提示:如果是创建集群,想要验证NVIDIA驱动是否安装成功,任意选择一个Pod即可。如果是扩容集群或者手动添加节点,那么选择添加节点所对应的Pod即可。
  4. 执行如下命令,查看NVIDIA驱动版本。
    kubectl exec -ti nvidia-device-plugin-cn-shanghai.192.XXX.XXX.205 -n kube-system -- nvidia-smi
    系统显示类似如下,确认安装NVIDIA驱动版本成功。

方式二:控制台指定驱动文件下载地址安装

本节以上传NVIDIA-Linux-x86_64-410.104.run驱动文件为例,驱动文件可以在NVIDIA官方网站下载。

  1. 在对象存储OSS控制台中创建Bucket,详情请参见创建Bucket,注意读写权限需要设置为公共读。
  2. 将NVIDIA-Linux-x86_64-410.104.run驱动文件上传至OSS,详情请参见上传文件
  3. 上传成功后,单击驱动文件右侧的 详情,记录该文件的URL。
  4. 当获取到URL后,将URL拆成两部分,即endpoint和runfile。以http://nvidia-XXX-XXX-cn-beijing.aliyuncs.com/NVIDIA-Linux-x86_64-410.104.run为例,分成如下两部分。
    • endpoint:nvidia-XXX-XXX-cn-beijing.aliyuncs.com
    • runfile:NVIDIA-Linux-x86_64-410.104.run
  5. 登录容器服务控制台,在创建Kubernetes集群时添加标签,其中endpoint作为ack.aliyun.com/nvidia-driver-oss-endpoint标签的值,runfile作为ack.aliyun.com/nvidia-driver-runfile标签的值。
  6. 安装完成后,参考方式一:指定驱动版本安装,确认安装成功。

在OpenAPI中指定版本

方式一:指定驱动版本安装

如果使用OpenAPI方式创建或者扩容集群,那么只需要在上传的body中的tags域添加特定标签即可,代码如下所示。

{
  // 其他部分省略
  ......
    "tags": [
        {
            "key": "ack.aliyun.com/nvidia-driver-version",
            "value": "410.104"
        }
    ],
  // 其他部分省略
  ......
}

方式二:指定驱动文件下载地址安装

如果需要指定nvidia驱动下载地址,那么需要指定OSS产品endpoint和runfile名称,代码如下所示。如何获取OSS产品endpoint和runfile名称请参考方式二:控制台指定驱动文件下载地址安装

{
  // 其他部分省略
  ......
    "tags": [
      {
              "key": "ack.aliyun.com/nvidia-driver-oss-endpoint",
              "value": "nvidia-XXX-XXX-cn-beijing.aliyuncs.com"
      },
      {
        "key": "ack.aliyun.com/nvidia-driver-runfile",
        "value": "NVIDIA-Linux-x86_64-410.104.run"
      }
    ],
  // 其他部分省略
  ......
}

适用于

  • 容器服务 Kubernetes 版

注:仅适用于创建或者扩容支持GPU计算的Kubernetes集群,Kubernetes集群具体版本如下所示。

  • V1.11.5
  • V1.12.6
  • V1.14.8
  • V1.16.6