不同类型和版本的ACK集群默认为您安装不同版本的NVIDIA驱动。如果您使用的CUDA库需要匹配更高版本的NVIDIA驱动,需要自定义安装节点的NVIDIA驱动。本文介绍如何基于节点池标签自定义GPU节点的NVIDIA驱动版本。
注意事项
对于GPU驱动版本与您业务应用的兼容性(GPU驱动版本与CUDA库版本的兼容性),ACK不保证两者之间兼容性,请您自行验证。
对于已经安装GPU驱动、NVIDIA Container Runtime等GPU组件的自定义操作系统镜像,ACK无法保证其提供的GPU驱动与ACK其他GPU组件兼容(例如监控组件等)。
通过节点池标签指定节点池中GPU节点的驱动版本时,由于安装驱动的过程是在添加节点时被触发,因此仅对新扩容或新添加的节点有效,对节点池中已经存在的节点无效。如果希望对已有节点有效,那么需要将该节点从节点池移除,再加入原节点池。具体操作,请参见移除节点和添加已有节点。
机型ecs.gn7.xxxxx和ecs.ebmgn7.xxxx对510.xxx和515.xxx版本驱动存在兼容性问题,建议使用关闭GSP的510以下的驱动版本(例如:470.xxx.xxxx)或525.125.06及其以上的驱动版本。
NVIDIA各卡型(P100、T4、V100、A10等)对驱动版本的更详细的要求,请参见NVIDIA官方文档。
步骤一:确定NVIDIA驱动版本
从ACK支持的NVIDIA驱动版本列表选择与您业务相匹配的NVIDIA驱动版本。具体操作,请参见如何选择节点NVIDIA驱动版本。
步骤二:创建节点池并指定驱动版本
本文以驱动版本418.181.07为例进行介绍。
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
单击右上角的创建节点池,然后在创建节点池对话框配置相关参数。
主要配置项说明如下。关于配置项的详细说明,请参见创建ACK托管集群。
单击显示高级选项。
在节点标签参数栏添加标签,单击图标,然后在键文本框输入
ack.aliyun.com/nvidia-driver-version
,在值文本框输入418.181.07
。关于容器服务提供的可用NVIDIA驱动版本,请参见ACK支持的NVIDIA驱动版本列表。
重要实例规格为ecs.ebmgn7或ecs.ebmgn7e的ECS,仅支持460.32.03之后的NVIDIA驱动版本。
参数配置完成后,单击确认配置。
步骤三:验证节点池自定义安装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驱动成功。
其他方式
使用OpenAPI方式创建或者扩容集群时,可在目标节点池的配置中设置自定义驱动的标签。示例代码如下:
{
// 其他部分省略
......
"tags": [
{
"key": "ack.aliyun.com/nvidia-driver-version",
"value": "418.181.07"
}
],
// 其他部分省略
......
}