Ниже примеры типичных конфигураций GPU. Для работы требуется установленный драйвер NVIDIA и NVIDIA Container Toolkit (вручную или через NodeGroupConfiguration). При наличии spec.gpu этот модуль настраивает containerd c default_runtime = "nvidia" (через NodeGroupConfiguration) и разворачивает NFD/GFD/Device Plugin/MIG/DCGM на таких узлах.
Обычно GPU-узлы помечены taint (например,
node-role=gpu:NoSchedule), чтобы обычные нагрузки туда не попадали. Под, которому нужен GPU, добавляет соответствующиеtolerationsиnodeSelector.
Exclusive (один Pod — один GPU)
Каждому Pod выделяется целый физический GPU; в кластере появляется ресурс nvidia.com/gpu.
apiVersion: deckhouse.io/v1
kind: NodeGroup
metadata:
name: gpu-exclusive
spec:
nodeType: Static # или CloudStatic/CloudEphemeral при необходимости
gpu:
sharing: Exclusive
nodeTemplate:
labels:
node-role/gpu: ""
taints:
- key: node-role
value: gpu
effect: NoScheduleTimeSlicing (4 раздела)
До четырёх Pod могут по очереди использовать одну карту. Pod по-прежнему запрашивает nvidia.com/gpu.
spec:
gpu:
sharing: TimeSlicing
timeSlicing:
partitionCount: 4MIG (профиль all-1g.5gb)
Аппаратное разбиение MIG-совместимого GPU; появляются ресурсы nvidia.com/mig-1g.5gb.
spec:
gpu:
sharing: MIG
mig:
partedConfig: all-1g.5gbДля кастомного разбиения по индексам GPU используйте partedConfig: custom и customConfigs (см. FAQ).
Smoke-тест (CUDA vectoradd)
apiVersion: batch/v1
kind: Job
metadata:
name: cuda-vectoradd
spec:
template:
spec:
restartPolicy: OnFailure
nodeSelector:
node-role/gpu: ""
tolerations:
- key: node-role
value: gpu
effect: NoSchedule
containers:
- name: cuda-vectoradd
image: nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda11.7.1-ubuntu20.04
resources:
limits:
nvidia.com/gpu: 1Если Pod завершился со статусом Succeeded, GPU присутствует и настроен корректно.