运行 Kubernetes 上带有 Nvidia GPU 节点的示例 pod

Running an example pod on Kubernetes with Nvidia GPU nodes

我正在尝试使用 Nvidia GPU nodes/slaves 设置 Kubernetes。 我按照 https://docs.nvidia.com/datacenter/kubernetes-install-guide/index.html 的指南进行操作,并且能够让节点加入集群。我尝试了下面的 kubeadm 示例 pod:

apiVersion: v1
kind: Pod
metadata:
  name: gpu-pod
spec:
  containers:
    - name: cuda-container
      image: nvidia/cuda:9.0-base
      command: ["sleep"]
      args: ["100000"]
      extendedResourceRequests: ["nvidia-gpu"]
  extendedResources:
    - name: "nvidia-gpu"
      resources:
        limits:
          nvidia.com/gpu: 1
      affinity:
        required:
          - key: "nvidia.com/gpu-memory"
            operator: "Gt"
            values: ["8000"]

pod 调度失败并且 kubectl 事件显示:

4s          2m           14        gpu-pod.15487ec0ea0a1882        Pod                                          Warning   FailedScheduling        default-scheduler            0/2 nodes are available: 1 Insufficient nvidia.com/gpu, 1 PodToleratesNodeTaints.

我正在使用 AWS EC2 实例。 m5.large 用于主节点 & g2.8xlarge 用于从节点。描述节点也会给出“nvidia.com/gpu: 4”。 如果我遗漏了 steps/configurations,有人可以帮助我吗?

根据 AWS G2 documentationg2.8xlarge 服务器具有以下资源:

  • 四个 NVIDIA GRID GPU,每个都有 1,536 个 CUDA 内核和 4 GB 视频 内存和编码任一四个实时高清视频的能力 1080p 流或 8 个 720P 实时高清视频流。
  • 32 个 vCPU。
  • 60 GiB 内存。
  • 240 GB (2 x 120) SSD 存储空间。

看评论,60GB是标准内存,用于常规计算。 g2.8xlarge 服务器有 4 个 GPU,每个 4 GB GPU 内存,这些内存用于 nvidia/cuda 容器中的计算。

在您的情况下,每个 GPU 需要 8 GB 的 GPU 内存,但您的服务器只有 4 GB。因此,集群缺少用于调度 POD 的资源。所以,尽量在Pod设置中降低内存使用量,或者尝试使用GPU内存更大的服务器。