0

为了使用 cadvisor 监控 pod gpu 使用情况,我们需要将 NVML 库路径(例如 /usr/lib/nvidia-418)的访问权限挂载到 cadvisor。

目前,我在 k8s 集群上创建了一个 daemonset 来在每个节点上部署 cadvisor。

但是,我需要支持多个版本的 NVML 库路径。例如,一些服务器使用 /usr/lib/nvidia-418,而其他服务器使用 /usr/lib/nvidia-410。直接指定 nvml 路径变得不可能。

那么在这种情况下,最佳实践是什么?

我有一些想法,但我不确定哪个是最好的。

  1. 按 nvml 路径划分服务器,一个集群中的所有服务器使用相同的 nvml 库版本。

2.在每台服务器上创建一个软链接,将 /usr/lib/nvidia-418/* 链接到 /usr/lib/nvmlpath 。

3.在 cadvisor 启动之前添加一个 init 作业,在作业中创建软链接。但我不确定它是否会起作用。

4.添加一个cadvisor的sidecar创建软链接,但不能保证在cadvisor得到nvml路径之前sidecar完成。

  1. 基于cadvisor搭建docker镜像,在CMD中添加软链接进程。
4

1 回答 1

0

我不确定这是否是最好的方法,但为了避免头痛。

我将使用 nvidia-docker 构建 cadvisor,然后还将 docker 守护进程设置为默认使用 nvidia-container-runtime。

然后,您的不同服务器唯一需要的是 nvidia 驱动程序,应该没问题。

于 2019-10-25T14:38:53.653 回答