Kubernetes自动缩放GPU节点

时间:2019-11-05 22:44:32

标签: kubernetes gpu google-kubernetes-engine

我在GKE上用GPU节点创建了一个小型集群,如下所示:

# create cluster and CPU nodes
gcloud container clusters create clic-cluster \
    --zone us-west1-b \
    --machine-type n1-standard-1 \
    --enable-autoscaling \
    --min-nodes 1 \
    --max-nodes 3 \
    --num-nodes 2

# add GPU nodes
gcloud container node-pools create gpu-pool \
    --zone us-west1-b \
    --machine-type n1-standard-2 \
    --accelerator type=nvidia-tesla-k80,count=1 \
    --cluster clic-cluster \
    --enable-autoscaling \
    --min-nodes 1 \
    --max-nodes 2 \
    --num-nodes 1

当我提交GPU作业时,它成功地结束了在GPU节点上的运行。但是,当我提交第二份工作时,我从kubernetes那里得到了UnexpectedAdmissionError

  

由于请求的设备数量,更新插件资源失败   对于nvidia.com/gpu不可用。请求:1,可用:0,即   意外的。

我本来希望集群启动第二个GPU节点并将作业放置在那里。知道为什么没有发生吗?我的工作规格大致如下:

apiVersion: batch/v1
kind: Job
metadata:
  name: <job_name>
spec:
  template:
    spec:
      initContainers:
      - name: decode
        image: "<decoder_image>"
        resources:
          limits:
            nvidia.com/gpu: 1
        command: [...]
     [...]     
     containers:
      - name: evaluate
        image: "<evaluation_image>"
        command: [...]

1 个答案:

答案 0 :(得分:0)

资源约束也需要添加到lambda2规范中:

containers

我只需要在piVersion: batch/v1 kind: Job metadata: name: <job_name> spec: template: spec: initContainers: - name: decode image: "<decoder_image>" resources: limits: nvidia.com/gpu: 1 command: [...] [...] containers: - name: evaluate image: "<evaluation_image>" resources: limits: nvidia.com/gpu: 1 command: [...] 之一中使用GPU,但这似乎使调度程序感到困惑。现在,自动缩放和计划可以按预期工作。