планирование kubernetes для дорогих ресурсов - PullRequest
0 голосов
/ 20 декабря 2018

У нас есть кластер Kubernetes.

Теперь мы хотим расширить его с помощью узлов GPU (чтобы это были единственные узлы в кластере Kubernetes, которые имеют графические процессоры).

Мы бынравится избегать Kubernetes планировать pods на тех узлах, если они не требуют графических процессоров.

Не все наши конвейеры могут использовать графические процессоры.Абсолютное большинство по-прежнему только для процессора.

Серверы с графическими процессорами могут быть очень дорогими (например, Nvidia DGX может стоить до $ 150 / k на сервер).

Если мы просто добавим узлы DGX в кластер Kubernetes, то Kubernetesбудет также планировать рабочие нагрузки не-GPU, что будет пустой тратой ресурсов (например, другие задания, которые планируются позже и нуждаются в GPU, могут иметь там другие ресурсы не-GPU, такие как ЦП и память, поэтому им придетсядождитесь завершения заданий / контейнеров не-GPU).

Есть ли способ настроить планирование ресурсов GPU в Kubernetes так, чтобы он планировал пакеты только на этих дорогих узлах, если им требуются GPU?Если этого не произойдет, им, возможно, придется подождать, пока другие серверы, не использующие графические процессоры, будут иметь доступ к другим ресурсам, таким как процессор и память, на серверах без графического процессора ...

Спасибо.

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Использование меток и селекторов меток для ваших узлов - это правильно.Но вам нужно использовать NodeAffinity на ваших модулях.

Примерно так:

apiVersion: v1
kind: Pod
metadata:
  name: run-with-gpu
spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: kubernetes.io/node-type
            operator: In
            values:
            - gpu
  containers:
  - name: your-gpu-workload
    image: mygpuimage

Кроме того, прикрепите метку к узлам вашего GPU:

$ kubectl label nodes <node-name> kubernetes.io/node-type=gpu
0 голосов
/ 20 декабря 2018

Для этого вы можете использовать метки и селекторы меток. kubernates docs

Обновление: пример

apiVersion: v1
kind: Pod
metadata:
  name: with-gpu-antiAffinity
spec:
  affinity:
    podAntiAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
      - weight: 100
        podAffinityTerm:
          labelSelector:
            matchExpressions:
            - key: resources
              operator: In
              values:
              - cpu-only
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...