使用Nvidia GPU节点在Kubernetes上运行示例Pod

时间:2018-08-07 04:22:16

标签: tensorflow kubernetes nvidia-docker

我正在尝试使用Nvidia GPU节点/从属服务器设置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"]

吊舱调度失败,并且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 ”。 如果我缺少任何步骤/配置,有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

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

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

看看注释,60 GB是标准RAM,用于常规计算。 g2.8xlarge服务器具有4个GPU,每个GPU具有4 GB的GPU内存,该内存用于nvidia/cuda容器中的计算。

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