如果您使用的CUDA库需要匹配更高版本的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 | 是 |
|
1.16.6 | 418.87.01 | 否 | NA |
1.16.9 | 418.181.07 | 是 |
|
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 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 |
步骤二:移除节点
- 登录容器服务管理控制台。
- 在控制台左侧导航栏,单击集群。
- 在集群列表页面,单击目标集群名称或者目标集群右侧操作列下的详情。
- 在集群管理页左侧导航栏,选择 。
- 选中待升级驱动的节点,单击批量移除,然后在移除节点对话框,选中自动排空节点(drain),并单击确定。
步骤三:创建节点池并指定驱动版本
方式一:从驱动版本列表选择驱动创建节点池
ack.aliyun.com/nvidia-driver-version=<驱动版本>
,然后将步骤二:移除节点中集群移除的节点添加到该节点池即可。本小节以418.181.07驱动版本为例介绍整个操作流程。
- 登录容器服务管理控制台。
- 在控制台左侧导航栏,单击集群。
- 在集群列表页面,单击目标集群名称或者目标集群右侧操作列下的详情。
- 在集群管理页左侧导航栏,选择 。
- 单击右上角创建节点池,然后在创建节点池对话框中配置相关参数。部分配置项说明如下。有关配置项的详细说明,请参见创建Kubernetes专有版集群。
配置项 描述 虚拟交换机 按需填写虚拟交换机和实例规格参数的取值。此信息用于节点扩容,而升级驱动属于添加已有节点,无需使用此信息。 实例规格 操作系统 节点重新加入集群后所使用的操作系统。 数量 可填写实例数量为0。如果实例数量不为0,ACK将会创建新的实例。
方式二:自定义驱动版本创建节点池
步骤1:自定义驱动版本
以下以上传NVIDIA-Linux-x86_64-460.32.03.run驱动文件为例,介绍如何自定义驱动版本。您可以在NVIDIA官方网站下载驱动文件。
- 在OSS管理控制台,创建Bucket。具体操作,请参见创建存储空间。
- 将NVIDIA-Linux-x86_64-460.32.03.run驱动文件上传至OSS。具体操作,请参见上传文件。
- 文件上传成功后,在对象存储管理页左侧导航栏,单击文件管理,然后在文件管理页面,单击已上传驱动文件右侧操作列的详情。
- 在详情面板,关闭使用HTTPS开关,取消使用HTTPS的配置。说明 ACK创建集群时会通过URL拉取驱动文件,URL中使用协议为HTTP协议。OSS默认使用HTTPS协议。您需要单击使用HTTPS按钮,取消使用HTTPS的配置。
- 确认驱动文件配置信息,并记录该文件的URL。
将URL拆成两部分,即endpoint和runfile。
以
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:自定义驱动版本后,创建节点池
- 登录容器服务管理控制台。
- 在控制台左侧导航栏,单击集群。
- 在集群列表页面,单击目标集群名称或者目标集群右侧操作列下的详情。
- 在集群管理页左侧导航栏,选择 。
- 单击右上角创建节点池,在创建节点池对话框中配置相关参数。部分配置项说明如下。有关配置项的详细说明,请参见创建Kubernetes专有版集群。
配置项 描述 虚拟交换机 按需填写虚拟交换机和实例规格参数的取值。此信息用于节点扩容,而升级驱动属于添加已有节点,无需使用此信息。 实例规格 操作系统 节点重新加入集群后所使用的操作系统。 数量 可填写实例数量为0。如果实例数量不为0,ACK将会创建新的实例。
步骤四:添加节点到节点池
步骤五:验证通过节点池升级节点NVIDIA驱动是否成功
- 登录容器服务管理控制台。
- 在控制台左侧导航栏,单击集群。
- 在目标集群的操作列,选择 。
- 执行以下命令,查看带有
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
。 - 执行以下命令查看节点的驱动版本是否符合预期。
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驱动成功。