全部产品
Search
文档中心

容器服务 Kubernetes 版 ACK:通过节点池升级已有节点的NVIDIA驱动

更新时间:Sep 27, 2023

如果您使用的CUDA库需要匹配更高版本的NVIDIA驱动,您需要升级节点的驱动版本。基于节点池升级节点NVIDIA驱动后,您可以批量管理集群中不同节点的NVIDIA驱动。本文介绍使用现有节点时,如何通过节点池升级节点NVIDIA驱动。

索引

使用限制

升级NVIDIA驱动的方式本质上是将节点从原有节点池中移除,然后再将该节点添加至新创建的节点池中。除目标节点外,原有节点池中可能存在其它节点,故无法在原有节点池中完成目标节点的NVIDIA驱动升级。节点的NVIDIA驱动升级仅必须通过节点移除。

重要

在添加的过程中,会经历重装系统、安装指定NVIDIA驱动等。请务必在执行升级操作前,确认该节点没有正在运行的任务以及重要数据。为降低风险,建议您先升级一个节点,确认整个升级过程无误后再批量升级。

注意事项

针对自定义驱动版本,有如下注意事项。

  • 对于GPU驱动版本与您业务应用的兼容性(GPU驱动版本与CDUA库版本的兼容性),您需要自行验证,ACK不保证两者之间兼容性。

  • 对于已经安装GPU驱动、NVIDIA container runtime等GPU组件的自定义操作系统镜像,ACK无法保证其提供的GPU驱动与ACK其他GPU组件兼容(例如监控组件等)。

  • 如果您上传自行提供的GPU驱动到OSS中,使用自定义的GPU节点驱动方式,可能引发GPU驱动与操作系统版本、ECS实例类型、Container Runtime等不兼容,继而导致添加GPU节点失败。您需要自行验证,ACK无法保证节点添加的成功率。

基于节点池升级节点NVIDIA驱动介绍

集群默认驱动版本说明

集群版本

默认GPU驱动

是否支持自定义驱动

支持自定义驱动版本

1.14.8

418.181.07

  • 418.181.07

  • 450.102.04

  • 460.32.03

  • 460.73.01

  • 470.57.02

1.16.6

418.87.01

NA

1.16.9

418.181.07

  • 418.181.07

  • 450.102.04

  • 460.32.03

  • 460.73.01

  • 470.57.02

  • 510.47.03

1.18.8

418.181.07

1.20.4

450.102.04

1.22.10

460.91.03

1.24.3

460.91.03

基于节点池升级节点NVIDIA驱动的使用示例

  • 如果使用节点池A管理集群中需要升级NVIDIA驱动版本至418.181.07的节点,当需要将任务调度到该驱动版本的节点上时,只需要将任务的selector指定为节点池A的标签。

  • 如果需要将集群中一部分节点的NVIDIA驱动升级至418.181.07版本,另一部分的节点升级至450.102.0版本,您可以将一部分节点添加至节点池A,另一部分节点添加至节点池B。

步骤一:确定NVIDIA驱动版本

选定NVIDIA驱动版本前,您需要确定所使用的CUDA库与哪些NVIDIA驱动版本兼容。您可以参照下表查看CUDA库与NVIDIA驱动的兼容关系,选择合适的NVIDIA驱动版本。更多信息,请参见cuda-toolkit-release-notes

展开查看CUDA库与NVIDIA驱动的兼容关系

CUDA Toolkit版本

Linux x86_64驱动版本

CUDA 11.7 Update 1

≥515.65.01

CUDA 11.7 GA

≥515.43.04

CUDA 11.6 Update 2

≥510.47.03

CUDA 11.6 Update 1

≥510.47.03

CUDA 11.6 GA

≥510.39.01

CUDA 11.5 Update 2

≥495.29.05

CUDA 11.5 Update 1

≥495.29.05

CUDA 11.5 GA

≥495.29.05

CUDA 11.4 Update 4

≥470.82.01

CUDA 11.4 Update 3

≥470.82.01

CUDA 11.4 Update 2

≥470.57.02

CUDA 11.4 Update 1

≥470.57.02

CUDA 11.4.0 GA

≥470.42.01

CUDA 11.3.1 Update 1

≥465.19.01

CUDA 11.3.0 GA

≥465.19.01

CUDA 11.2.2 Update 2

≥460.32.03

CUDA 11.2.1 Update 1

≥460.32.03

CUDA 11.2.0 GA

≥460.27.03

CUDA 11.1.1 Update 1

≥455.32

CUDA 11.1 GA

≥455.23

CUDA 11.0.3 Update 1

≥ 450.51.06

CUDA 11.0.2 GA

≥ 450.51.05

CUDA 11.0.1 RC

≥ 450.36.06

CUDA 10.2.89

≥ 440.33

CUDA 10.1 (10.1.105 general release, and updates)

≥ 418.39

CUDA 10.0.130

≥ 410.48

CUDA 9.2 (9.2.148 Update 1)

≥ 396.37

CUDA 9.2 (9.2.88)

≥ 396.26

CUDA 9.1 (9.1.85)

≥ 390.46

CUDA 9.0 (9.0.76)

≥ 384.81

CUDA 8.0 (8.0.61 GA2)

≥ 375.26

CUDA 8.0 (8.0.44)

≥ 367.48

CUDA 7.5 (7.5.16)

≥ 352.31

CUDA 7.0 (7.0.28)

≥ 346.46

步骤二:移除节点

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择节点管理 > 节点

  3. 选中待升级驱动的节点,单击批量移除,然后在移除节点对话框,选中自动排空节点(drain),并单击确定

步骤三:创建节点池并指定驱动版本

方式一:从驱动版本列表选择驱动创建节点池

说明

此种方式安装驱动较为简单。为节点池的节点打上标签ack.aliyun.com/nvidia-driver-version=<驱动版本>,然后将步骤二:移除节点中集群移除的节点添加到该节点池即可。

本小节以418.181.07驱动版本为例介绍整个操作流程。

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择节点管理 > 节点池

  3. 单击右上角创建节点池,然后在创建节点池对话框中配置相关参数。

    部分配置项说明如下。有关配置项的详细说明,请参见创建Kubernetes专有版集群

    配置项

    描述

    虚拟交换机

    按需填写虚拟交换机和实例规格参数的取值。此信息用于节点扩容,而升级驱动属于添加已有节点,无需使用此信息。

    实例规格

    操作系统

    节点重新加入集群后所使用的操作系统。

    期望节点数

    可填写实例数量为0。如果实例数量不为0,ACK将会创建新的实例。

    1. 单击显示高级选项

    2. 节点标签参数栏添加标签,单击1图标,在文本框输入ack.aliyun.com/nvidia-driver-version,在文本框输入418.181.07

      关于容器服务提供的可用NVIDIA驱动版本,请参见集群默认驱动版本说明

      重要

      实例规格为ecs.ebmgn7或ecs.ebmgn7e的ECS,仅支持460.32.03之后的NVIDIA驱动版本。

    3. 参数配置完成后,单击确认配置

方式二:自定义驱动版本创建节点池

步骤1:自定义驱动版本

以下以上传NVIDIA-Linux-x86_64-460.32.03.run驱动文件为例,介绍如何自定义驱动版本。您可以在NVIDIA官方网站下载驱动文件。

说明

请将NVIDIA-Linux-x86_64-460.32.03.run放在OSS Bucket的根目录下。

  1. OSS管理控制台,创建Bucket。具体操作,请参见创建存储空间

  2. NVIDIA-Linux-x86_64-460.32.03.run驱动文件上传至OSS。具体操作,请参见上传文件

    说明

    实例规格为ecs.ebmgn7或ecs.ebmgn7e的ECS时,需同时将与其版本号一致的Fabric Manager安装包上传至OSS。Fabric Manager安装包的上传格式要求如下。

    • 若集群版本为v1.18.8-aliyun.1,请上传RPM格式的安装包。关于安装包的下载地址,请参见RPM

    • 若集群版本为v1.20.11-aliyun.1或v1.22.3-aliyun.1,请上传tar.gz格式的安装包。关于安装包的下载地址,请参见tar

  3. 文件上传成功后,在对象存储管理页左侧导航栏,单击文件管理,然后在文件管理页面,单击已上传驱动文件右侧操作列的详情

  4. 详情面板,关闭使用HTTPS开关,取消使用HTTPS的配置。

    说明

    ACK创建集群时会通过URL拉取驱动文件,URL中使用协议为HTTP协议。OSS默认使用HTTPS协议。您需要单击使用HTTPS按钮,取消使用HTTPS的配置。

  5. 确认驱动文件配置信息,并记录该文件的URL。

    将URL拆成两部分,即endpointrunfile

    http://nvidia-XXX-XXX-cn-beijing.aliyuncs.com/NVIDIA-Linux-x86_64-460.32.03.run为例,将其拆分为以下两部分。

    • endpoint:nvidia-XXX-XXX-cn-beijing.aliyuncs.com

    • runfile:NVIDIA-Linux-x86_64-460.32.03.run

步骤2:自定义驱动版本后,创建节点池

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择节点管理 > 节点池

  3. 单击右上角创建节点池,在创建节点池对话框中配置相关参数。

    部分配置项说明如下。有关配置项的详细说明,请参见创建Kubernetes专有版集群

    配置项

    描述

    虚拟交换机

    按需填写虚拟交换机和实例规格参数的取值。此信息用于节点扩容,而升级驱动属于添加已有节点,无需使用此信息。

    实例规格

    操作系统

    节点重新加入集群后所使用的操作系统。

    期望节点数

    可填写实例数量为0。如果实例数量不为0,ACK将会创建新的实例。

    1. 单击显示高级选项

    2. 节点标签参数栏添加标签,单击1图标。

      • 输入第一个标签的ack.aliyun.com/nvidia-driver-oss-endpointnvidia-XXX-XXX-cn-beijing.aliyuncs.com

      • 输入第二个标签的ack.aliyun.com/nvidia-driver-runfileNVIDIA-Linux-x86_64-460.32.03.run

      • 根据集群版本,输入第三个标签的

        • 若集群版本为v1.18.8-aliyun.1,输入ack.aliyun.com/nvidia-fabricmanager-rpmnvidia-fabric-manager-460.32.03-1.x86_64.rpm

        • 若集群版本为v1.20.11-aliyun.1或v1.22.3-aliyun.1,输入ack.aliyun.com/nvidia-fabricmanager-tarballfabricmanager-linux-x86_64-460.32.03.tar.gz

    3. 参数配置完成后,单击确认配置

步骤四:添加节点到节点池

节点池创建完成以后,需要将步骤二:移除节点移除的节点添加到该节点池。具体操作,请参见添加已有节点

步骤五:验证通过节点池升级节点NVIDIA驱动是否成功

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 在目标集群的操作列,选择更多 > 通过CloudShell管理集群

  3. 执行以下命令,查看带有component: nvidia-device-plugin标签的Pod。

    kubectl get po -n kube-system -l component=nvidia-device-plugin -o wide

    预期输出:

    NAME                                            READY   STATUS    RESTARTS   AGE   IP              NODE                       NOMINATED NODE   READINESS GATES
    nvidia-device-plugin-cn-beijing.192.168.1.127   1/1     Running   0          6d    192.168.1.127   cn-beijing.192.168.1.127   <none>           <none>
    nvidia-device-plugin-cn-beijing.192.168.1.128   1/1     Running   0          17m   192.168.1.128   cn-beijing.192.168.1.128   <none>           <none>
    nvidia-device-plugin-cn-beijing.192.168.8.12    1/1     Running   0          9d    192.168.8.12    cn-beijing.192.168.8.12    <none>           <none>
    nvidia-device-plugin-cn-beijing.192.168.8.13    1/1     Running   0          9d    192.168.8.13    cn-beijing.192.168.8.13    <none>           <none>
    nvidia-device-plugin-cn-beijing.192.168.8.14    1/1     Running   0          9d    192.168.8.14    cn-beijing.192.168.8.14    <none>           <none>

    预期输出表明,NODE列下集群中刚添加的节点对应的Pod名称为nvidia-device-plugin-cn-beijing.192.168.1.128

  4. 执行以下命令查看节点的驱动版本是否符合预期。

    kubectl exec -ti nvidia-device-plugin-cn-beijing.192.168.1.128 -n kube-system -- nvidia-smi 

    预期输出:

    Sun Feb  7 04:09:01 2021       
    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 418.181.07   Driver Version: 418.181.07   CUDA Version: N/A      |
    |-------------------------------+----------------------+----------------------+
    | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
    |===============================+======================+======================|
    |   0  Tesla V100-SXM2...  On   | 00000000:00:07.0 Off |                    0 |
    | N/A   27C    P0    40W / 300W |      0MiB / 16130MiB |      0%      Default |
    +-------------------------------+----------------------+----------------------+
    |   1  Tesla V100-SXM2...  On   | 00000000:00:08.0 Off |                    0 |
    | N/A   27C    P0    40W / 300W |      0MiB / 16130MiB |      0%      Default |
    +-------------------------------+----------------------+----------------------+
    |   2  Tesla V100-SXM2...  On   | 00000000:00:09.0 Off |                    0 |
    | N/A   31C    P0    39W / 300W |      0MiB / 16130MiB |      0%      Default |
    +-------------------------------+----------------------+----------------------+
    |   3  Tesla V100-SXM2...  On   | 00000000:00:0A.0 Off |                    0 |
    | N/A   27C    P0    41W / 300W |      0MiB / 16130MiB |      0%      Default |
    +-------------------------------+----------------------+----------------------+
                                                                                   
    +-----------------------------------------------------------------------------+
    | Processes:                                                       GPU Memory |
    |  GPU       PID   Type   Process name                             Usage      |
    |=============================================================================|
    |  No running processes found                                                 |
    +-----------------------------------------------------------------------------+

    预期输出表明,驱动版本为418.181.07,即节点池升级节点NVIDIA驱动成功。

相关文档

通过指定版本号自定义节点GPU驱动版本