2

我正在尝试按照https://cloud.google.com/container-optimized-os/docs/how-to/run-gpus上的说明在带有 GPU 的 GCE 上设置容器优化操作系统(COS). 创建虚拟机后,它会说 ssh in and run cos-extensions install gpu。这样可行; 您可以在安装过程中看到它运行nvidia-smi打印出驱动程序版本 (440.33.01) 并连接到卡。

但是它将 nvidia bins 和 libs/var/lib/nvidia安装在 中,就像noexec在这个操作系统中一样安装(它非常锁定)。这意味着所有库或实用程序都不起作用。当您将它们安装到 docker 容器时,它们也无法在那里工作;他们仍然是noexec。

我发现的唯一解决方法是将整个/var/lib/nvidia目录复制到 tmpfs 暂存盘并从那里使用它。我是用错了,还是只是坏了?

4

2 回答 2

1

原来我没有做错什么。现在已确认这是一个错误cos-extensionshttps ://issuetracker.google.com/issues/164134488

奇怪,因为这似乎会出现在测试中。

目前没有任何好的生产解决方法,因为作为用户,如果没有一些高级脚本,很难修改 COS 的行为。

于 2020-08-14T13:26:32.820 回答
0

这看起来不是容器问题,而是容器优化操作系统的预期行为,因为 COS 通过为几个功能提供安全意识的默认值,提供了另一个级别的强化。

如果您查看文档,对于 Container-Optimized OS 文件系统,下面的所有内容/var都安装为 no-exec,除了

  • /var/lib/google
  • /var/lib/docker
  • /var/lib/toolbox

这些都安装了可写、可执行和有状态的属性。

另一方面,Ubuntu containerd 没有像 COS 那样依赖于挂载的严格 exec/noexec,因此,使用基于 Ubuntu 的映像而不是 COS 作为解决方法可能是个好主意。

另一种选择是复制/var/lib/nvidia另一个未使用 noexec 选项安装的安装点下的内容,就像您已经做过的那样。

于 2020-08-13T21:54:13.470 回答