为了使用 cadvisor 监控 pod gpu 使用情况,我们需要将 NVML 库路径(例如 /usr/lib/nvidia-418)的访问权限挂载到 cadvisor。
目前,我在 k8s 集群上创建了一个 daemonset 来在每个节点上部署 cadvisor。
但是,我需要支持多个版本的 NVML 库路径。例如,一些服务器使用 /usr/lib/nvidia-418,而其他服务器使用 /usr/lib/nvidia-410。直接指定 nvml 路径变得不可能。
那么在这种情况下,最佳实践是什么?
我有一些想法,但我不确定哪个是最好的。
- 按 nvml 路径划分服务器,一个集群中的所有服务器使用相同的 nvml 库版本。
2.在每台服务器上创建一个软链接,将 /usr/lib/nvidia-418/* 链接到 /usr/lib/nvmlpath 。
3.在 cadvisor 启动之前添加一个 init 作业,在作业中创建软链接。但我不确定它是否会起作用。
4.添加一个cadvisor的sidecar创建软链接,但不能保证在cadvisor得到nvml路径之前sidecar完成。
- 基于cadvisor搭建docker镜像,在CMD中添加软链接进程。