Автоматическое масштабирование узлов графического процессора в Kubernetes - PullRequest
1 голос
/ 06 ноября 2019

Я создал небольшой кластер с узлами GPU в GKE следующим образом:

# 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. Однако, когда я отправляю вторую работу, я получаю UnexpectedAdmissionError от kubernetes:

Не удалось обновить ресурсы плагина из-за запрошенного числа устройств, недоступных для nvidia.com/gpu. Запрошено: 1, Доступно: 0, что является неожиданным.

Я ожидал, что кластер запустит второй узел графического процессора и поместит задание туда. Есть идеи, почему этого не произошло? Моя спецификация работы выглядит примерно так:

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 голосов
/ 06 ноября 2019

Необходимо также добавить ограничение ресурса в спецификацию 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: [...]

Мне понадобился графический процессор только в одном из initContainers, но это, похоже, сбивает с толку планировщика. Теперь автоматическое масштабирование и планирование работают как положено.

...