GPU驱动升级

如果您使用的CUDA库需要匹配更高版本的NVIDIA驱动,请升级节点的NVIDIA驱动,即卸载旧版本驱动,然后安装新版本驱动

下线节点与排空节点

  1. 执行以下命令,将待升级驱动的GPU节点设置为不可调度状态
kubectl cordon <NODE_NAME>

其中<NODE_NAME>为节点名称。

预期输出:

node/<NODE_NAME> cordoned
  1. 执行以下命令,排空待升级驱动的GPU节点上的Pod。
kubectl drain <NODE_NAME> --grace-period=120 --ignore-daemonsets=true   # 设置120秒钟的宽限期限,让任务优雅的关闭

预期输出:

There are pending nodes to be drained:
 <NODE_NAME>

卸载GPU节点旧版本驱动

  1. 登录节点,执行以下命令,关闭节点上的kubelet和containerd服务(某些Daemonset服务使用GPU,但是kubectl drain并不能清除这些Daemonset,请在关闭kubelet和containerd后,再清除这些服务)
    sudo systemctl stop kubelet containerd
  2. 登录节点,执行以下fuser命令,确认是否还有进程在使用GPU。如果存在,则执行kill命令终止此进程(升级驱动过程中,不允许有进程使用GPU)
    sudo fuser -v /dev/nvidia*
    如果没有服务在使用GPU,那么该命令执行后不会有任何输出;如果有服务在使用GPU,那么执行该命令后,将会有输出,表示有进程在使用GPU。下方示例显示有两个进程(进程号21045、21464)在使用GPU资源
    USER PID ACCESS COMMAND
    /dev/nvidia0: root 21045 F… nvidia-device-p
    root 21464 F… dcgm-exporter
    /dev/nvidiactl: root 21045 F… nvidia-device-p
    root 21464 F…m dcgm-exporter

通过进程号ID终止此进程:
sudo kill -9 21045 21464
再次执行fuser命令确认是否有进程在使用GPU,直到没有任何输出,否则继续使用kill命令终止进程。
3. 登录节点,卸载该GPU节点已安装的NVIDIA驱动
sudo /usr/bin/nvidia-uninstall
回车按到底。

GPU节点安装新版本驱动

  1. 从NVIDIA官方网站下载新版本驱动到节点上
    如11.7 :
    wget https://us.download.nvidia.com/tesla/515.105.01/NVIDIA-Linux-x86_64-515.105.01.run
  2. 添加驱动脚本执行权限
    sudo chmod +x NVIDIA-Linux-x86_64-515.105.01.run
  3. 查看新驱动是否正常
    sudo nvidia-smi
  4. 启动kubelet和containerd服务
sudo systemctl restart containerd kubelet

上线节点

执行以下命令,上线节点。其中<NODE_NAME>为节点名称。

sudo kubectl uncordon <NODE_NAME>

来源云上问题小结:

问题: 在实例上启动gpu容器时无法正常启动 报错Error: failed to start container “app-center”: Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: process_linux.go:545: container init caused: Running hook #0:: error running hook: exit status 1, stdout: , stderr: nvidia-container-cli: requirement error: unsatisfied condition: cuda>=11.7, please update your driver to a newer version, or use an earlier cuda container: unknown

解决:

  • 方案1. 可以手动升级下这个节点的GPU驱动https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/manually-upgrade-the-nvidia-driver-of-a-node

  • 方案2. 将该节点移除集群再重新加回来https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/use-a-node-pool-to-update-the-nvidia-driver-for-an-existing-node
    手动加入的话,数据盘和系统盘不格式化 数据不会丢失,可以提前做个快照备份,但是注意自动添加会重新格式化系统,数据会丢失

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值