一个计算机技术爱好者与学习者

0%

阿里云ACK使用GPU问题

1. 阿里云托管版ACK限制问题

1.1. 问题描述

想要使用腾讯云GPUManager调度ACK集群中的GPU资源,但是安装过程需要修改kube-scheduler,该怎么处理?

1.2. 问题解答

阿里云托管Pro版ACK,因为无法对kube-scheduler配置进行修改,所以无法安装腾讯云的GPUManager,只能安装阿里云的GPUShare。
想要完全自主控制K8S集群,最好还是购买专有版ACK。

2. 阿里云ACK GPU节点notready问题

2.1. 问题描述

阿里云GPU机器,安装nvidia-docker后,测试跑GPU容器正常。
但是,机器加入到阿里云托管Pro版ACK,安装了ack-ai-installer后,发现GPU节点处于notready状态,偶尔变成ready状态,也会很快再次变成notready。

2.2. 解决方案

修改/etc/docker/daemon.json,去掉"default-runtime": "nvidia"后,GPU节点变成ready状态。

3. 阿里云ACK GPU调度失败问题

3.1. 问题描述

解决完阿里云ACK GPU节点notready问题后,开始尝试调度GPU。
GPU调度时会报错Insufficient aliyun.com/gpu-mem,而且使用kubectl inspect cgpu也找不到GPU资源。
查看kube-system中的gpushare-device-plugin,都没有 running,应该就是这里的问题,设备插件没有正常运行。
gpushare-device-plugin报错:init nvml failed,reason: could not load NVML library

尝试在GPU节点运行GPU容器:

1
docker run --rm --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi

启动卡死,一直没有反应,而且系统重出现大量的/usr/bin/nvidia-container-toolkit prestart进程。

kill掉docker run,重启docker后,/usr/bin/nvidia-container-toolkit prestart进程消失。

多次尝试运行GPU容器时,极少情况下会出现报错:
starting container process caused: exec: “nvidia-smi”: executable file not found in $PATH: unknown.

3.2. 报错排查

kubelet、docker日志中缺少有用的报错信息。

重启kubelet、docker、containerd,无效。

降级docker版本到19.03.5,无效。

重新安装nvidia-docker2和nvidia-container-runtime,无效。

修改/etc/docker/daemon.json,加回"default-runtime": "nvidia",无效。
而且修改后启动普通容器也会卡住,看起来大概率是runtime的问题。

最终找阿里云售后帮助解决,给出的结论是:我们手动安装的nvidia-docker,和ACK自动安装的nvidia-container-runtime冲突了,需要重新添加节点,添加时选择自动添加节点,节点的系统会被重装。

参考文档:

4. 阿里云ACK调度GPU参考文档

  • 本文作者: 好好学习的郝
  • 原文链接: https://www.voidking.com/dev-ack-gpu-problem/
  • 版权声明: 本文采用 BY-NC-SA 许可协议,转载请注明出处!源站会即时更新知识点并修正错误,欢迎访问~
  • 微信公众号同步更新,欢迎关注~