如何通过多个 Pod/容器在 GKE 中使用相同的 GPU?

问题描述 投票:0回答:1

我想在 GKE 中运行 X.Org 服务器和多个桌面应用程序。每个都在一个单独的容器中(可能每个都在单独的容器中)。理想情况下,X.Org 将是一个 DaemonSet,每个节点上都有一个服务器。

但这只是一个运行两个容器的 Pod 的测试:X.Org 和一个应用程序:

apiVersion: v1
kind: Pod
metadata:
  name: app-pod
spec:
  volumes:
    - name: x11-socket
      hostPath:
        path: /tmp/x11-socket
  containers:
  - name: xserver
    image: xserver
    command: ["sleep"]
    args: ["infinity"]
    volumeMounts:
      - name: x11-socket
        mountPath: /tmp/.X11-unix
    securityContext:
      privileged: true
    resources:
      limits:
        nvidia.com/gpu: 1
  - name: app
    image: app
    command: ["sleep"]
    args: ["infinity"]
    volumeMounts:
      - name: x11-socket
        mountPath: /tmp/.X11-unix
    securityContext:
      privileged: true
    resources:
      limits:
        nvidia.com/gpu: 0

pod 总体声明它需要 1 个 GPU,因此它可以获取它,甚至可以从两个容器内部使用它。

问题是 NVIDIA 驱动程序文件

/usr/local/nvidia/
仅出现在具有
nvidia.com/gpu: 1
的容器中。如果我将驱动程序复制到另一个容器,那么
glxinfo
也会在那里报告 NVIDIA GPU。

如何让它将驱动程序放入所有容器中,就像 NVIDIA 容器运行时在主机上运行多个 Docker 容器时所做的那样?

kubernetes google-cloud-platform google-kubernetes-engine nvidia
1个回答
0
投票

当您使用 NVIDIA 容器运行时 来部署容器时,它具有用于部署容器的内置功能以及 GPU 加速应用程序所需的 NVIDIA gpu 驱动程序插件。同样,在谷歌云中,如果您想将GPU配置到您的pod或容器,您需要提及以下键值对

  • 密钥:nvidia.com/gpu

  • 值:要消耗的 GPU 数量(您为 XOrg 服务器定义的)

当您提到上述键值对时 GKE 将部署您的 pod 以及所需的 NVIDIA 驱动程序。您还可以稍后通过复制二进制文件或运行所需的命令来安装它们。但是,不建议这样做,因为如果重新创建您的 Pod,新创建的 Pod 不包含这些驱动程序,因此建议使用上述键值对或使用内置 NVIDIA 驱动程序包的容器映像。

如果您希望所有容器都具有 NVIDIA 支持,请使用包含 NVIDIA 插件的容器映像,或者在 pod 规范中定义 键值对

© www.soinside.com 2019 - 2024. All rights reserved.