GPU应用无法安装排查教程

现象

在Market中,GPU应用的“获取”按钮置灰,无法点击,且错误提示“集群GPU不足”

排查路径

说明

以下排查路径为递进顺序,确认前项无问题后再进行下一项

文档无法覆盖所有可能的情况,若全部执行完成,问题仍未解决,在开发人员协助排查前,请将每个步骤的排查结果及命令输出一并整理并提交在评论区,便于其他用户检索及解决问题,也便于本文档的持续完善

文档对提及的技术概念不作展开解释,若需要理解请自行查阅研究

  1. 确认机器已插入GPU显卡

目前,Olares只支持英伟达显卡,且50系列只在1.12版本中支持。注意,显卡在开始安装Olares之前就已插入,才会在安装过程中安装驱动,若显卡在安装完成Olares后才插入,需手动执行sudo olares-cli gpu install安装驱动

  1. 确认Linux在硬件层面(PCI插槽)已识别到该显卡:

在命令行中执行以下命令

lspci | grep -i vga | grep -i nvidia

若命令输出类似:

01:00.0 VGA compatible controller: NVIDIA Corporation AD106 [GeForce RTX 4060 Ti] (rev a1)

则说明Linux在硬件层面已识别到该显卡

注意该输出中最后的(rev a1)部分,若该值为(rev ff),则说明虽然能检测到该显卡硬件,但它已停止运行,可能的原因有电源、线路、散热问题等,需进一步排查

若命令输出为空,则需要检查主板、显卡PCIE接口等硬件问题

  1. 确认英伟达显卡驱动工作正常:

在命令行中执行以下命令

nvidia-smi

若命令输出类似:

+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 570.133.20             Driver Version: 570.133.20     CUDA Version: 12.8     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA GeForce RTX 4060 Ti     Off |   00000000:01:00.0 Off |                  N/A |
|  0%   37C    P8              6W /  165W |       4MiB /  16380MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
                                                                                         
+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI              PID   Type   Process name                        GPU Memory |
|        ID   ID                                                               Usage      |

则说明显卡驱动已安装且正常运行

若命令行报错command not found: nvidia-smi,则说明显卡驱动未安装,需手动执行sudo olares-cli gpu install安装驱动

若命令输出类似:

Unable to determine the device handle for GPU 0000:01:00.0: Unknown Error

则该问题与第2步中输出为(rev ff)的情况类似,需进一步排查

若命令输出类似:

Failed to initialize NVML: Driver/library version mismatch

说明当前Linux内核中运行的英伟达驱动版本与Olares安装的版本不匹配,需重启机器

若命令输出类似:

NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.

则执行命令:

sudo dpkg -l | grep nvidia-driver

若命令输出为空,则说明显卡驱动未安装,需手动执行sudo olares-cli gpu install命令安装

若命令输出类似:

ii  nvidia-driver-570                          570.133.20-0ubuntu1                     amd64        NVIDIA driver metapackage

则说明显卡驱动已安装,但并未正常运行,需重启机器

若重启机器后现象依旧,尝试执行命令modprobe nvidia,若输出结果类似modprobe: ERROR: could not insert 'nvidia': Key was rejected by service,则可能是机器的BIOS启用了Secure Boot导致Linux内核无法加载显卡驱动模块,需查询机器BIOS如何关闭Secure Boot并配置生效

  1. 确认容器运行时已启用英伟达驱动支持

在命令行中执行以下命令

grep nvidia /etc/containerd/config.toml

若命令输出类似

      default_runtime_name = "nvidia"
        [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia]
          [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia.options]
            BinaryName = "/usr/bin/nvidia-container-runtime"

则说明显卡驱动支持在容器运行时中已启用

若命令输出为空,则说明显卡驱动支持在容器运行时中未启用,需手动执行sudo olares-cli gpu install命令

  1. 确认K8s集群已启用英伟达驱动支持

在命令行中执行以下命令

sudo olares-cli gpu status

若命令输出类似

2025-05-13T11:04:39.115+0800    GPU Driver Version: 570.144
2025-05-13T11:04:39.115+0800    CUDA Version: 12.8
2025-05-13T11:04:39.120+0800    nvidia-device-plugin status: Running
2025-05-13T11:04:39.122+0800    nvshare-device-plugin status: Running
2025-05-13T11:04:39.123+0800    nvshare-scheduler status: Running

注意输出中的Running字样,说明显卡驱动组件在K8s集群中已启用并正常运行

若命令输出类似

2025-05-13T11:05:17.509+0800    GPU Driver Version: 570.144
2025-05-13T11:05:17.509+0800    CUDA Version: 12.8
2025-05-13T11:05:17.515+0800    nvidia-device-plugin not exists
2025-05-13T11:05:17.516+0800    nvshare-device-plugin not exists
2025-05-13T11:05:17.517+0800    nvshare-scheduler not exists

注意输出中的not exists字样,说明显卡驱动组件在K8s集群中没有运行,需手动执行sudo olares-cli gpu enable命令后再次观察

若执行sudo olares-cli gpu enablenot exists仍存在,或者变更为Pending,在命令行中执行以下命令

kubectl get node

命令输出类似

NAME     STATUS   ROLES                         AGE   VERSION
node1    Ready    control-plane,master,worker   18h   v1.32.2+k3s1

注意其中的Ready字样,若该字段为NotReady,说明机器存在异常,需进一步排查,常见原因为磁盘或内存压力等问题

若该字段为Ready,说明机器本身无异常,需进一步排查

请求开发人员协助排查

首先,请确保上一节中的每一项都已依次排查并按指导尝试修复

若问题仍未解决,请将排查项中的所有输出,即以下命令的输出,一并整理并提交给开发人员协助排查

lspci | grep -i vga | grep -i nvidia
nvidia-smi
sudo dpkg -l | grep nvidia-driver
grep nvidia /etc/containerd/config.toml
sudo olares-cli gpu status
kubectl get node

似乎安装GPU驱动以后一定要重启才能够正常加载GPU,Debian12 A4000的安装流程是:

  1. 安装Olares
  2. 重启
  3. 检查系统驱动nvidia-smi
  4. olares-cli gpu install
  5. olares-cli gpu enable

一般来说,一个干净的、没有安装过GPU驱动的机器,Olares安装程序会自动安装GPU驱动,且该驱动能正常运行。

如果之前有安装过GPU驱动,即使已经卸载过,但在重启机器之前,即使Olares本身能成功安装,GPU驱动及其他关联组件的安装可能会被跳过或不能正常运行。所以需要重启后手动执行olares-cil gpu相关命令安装驱动。

除此之外,还可能会有显卡硬件(电源/散热)或设备本身(如笔记本电脑的休眠策略)等,导致在机器运行过程中,本来正常的GPU驱动变为了不可用状态。

为了测试Olares,在硬件上重新安装的系统。通过安装脚本安装后nvidia-smi无法找到设备。
不过你提到了没安装过驱动,包括nouveau么?为了方便没去下server的镜像安装的是Gnome桌面版。

nvidia-smi通过NVML接口调用Nvidia的官方驱动,这也是Olares安装和依赖的驱动,它与社区版的Nouveau驱动都以Linux内核模块的方式运行,也都会尝试控制显卡,因此它们是存在冲突的。此外,现在开源版Nvidia driver已足够成熟并有持续的开发维护和版本发布,相比之下,Nouveau的性能表现、硬件兼容和开发活跃度就不值得推荐了。

desktop版本的Linux由于X server的存在,一般默认会安装显卡驱动,那么无论是哪种驱动,如果在Olares安装过程中已被内核加载,都可能导致非预期的情况发生,再考虑到其他配置和环境的稳定性,更推荐在server版本的Linux中安装Olares.