Планування GPU
Kubernetes v1.26 [stable]
Kubernetes має стабільну підтримку для управління графічними обчислювальними пристроями (GPU) від AMD та NVIDIA на різних вузлах вашого кластера, використовуючи втулки пристроїв.
На цій сторінці описано, як користувачі можуть використовувати GPU і наведені деякі обмеження в реалізації.
Використання втулків пристроїв
Kubernetes використовує втулки пристроїв, щоб дозволити Podʼам отримувати доступ до спеціалізованих апаратних можливостей, таких як GPU.
Як адміністратору, вам потрібно встановити драйвери GPU від відповідного виробника обладнання на вузлах і запустити відповідний втулок пристрою від виробника GPU. Ось кілька посилань на інструкції від виробників:
Після встановлення втулка ваш кластер використовує власний ресурс планування, такий як amd.com/gpu
або nvidia.com/gpu
.
Ви можете використовувати ці GPU у ваших контейнерах, запитуючи власний ресурс GPU,, так само як ви запитуєте cpu
чи memory
.
Однак є обмеження у специфікації вимог до ресурсів для власних пристроїв.
GPU повинні бути вказані тільки в розділі limits
, що означає:
- Ви можете вказати
limits
для GPU без вказівкиrequests
, оскільки Kubernetes за стандартно використовує ліміт як значення запиту. - Ви можете вказати GPU як в
limits
, так і вrequests
, але ці два значення повинні бути рівними. - Ви не можете вказати
requests
для GPU без вказівкиlimits
.
Ось приклад маніфесту для Podʼі, який запитує GPU:
apiVersion: v1
kind: Pod
metadata:
name: example-vector-add
spec:
restartPolicy: OnFailure
containers:
- name: example-vector-add
image: "registry.example/example-vector-add:v42"
resources:
limits:
gpu-vendor.example/example-gpu: 1 # запит на 1 GPU
Керуйте кластерами з різними типами GPU
Якщо в різних вузлах вашого кластера є різні типи GPU, то ви можете використовувати мітки вузлів і селектори вузлів для планування Podʼів на відповідних вузлах.
Наприклад:
# Позначте свої вузли з типом прискорювача, яким вони володіють.
kubectl label nodes node1 accelerator=example-gpu-x100
kubectl label nodes node2 accelerator=other-gpu-k915
Ця мітка ключа accelerator
лише приклад; ви можете використовувати інший ключ мітки, якщо це зручніше.
Автоматичне позначення вузлів
Як адміністратор, ви можете автоматично виявляти та мітити всі ваши вузли з підтримкою GPU, розгорнувши Виявлення функцій вузлів Kubernetes (NFD). NFD виявляє апаратні функції, які доступні на кожному вузлі в кластері Kubernetes. Зазвичай NFD налаштовується таким чином, щоб оголошувати ці функції як мітки вузла, але NFD також може додавати розширені ресурси, анотації та заплямування вузла (node taints). NFD сумісний з усіма підтримуваними версіями Kubernetes. Типово NFD створює мітки функцій для виявлених функцій. Адміністратори можуть використовувати NFD, щоб також мітити вузли конкретними функціями, щоб на них можна було планувати лише Podʼи, які запитують ці функції.
Вам також потрібен втулок для NFD, який додає відповідні мітки до ваших вузлів; це можуть бути загальні мітки або вони можуть бути вендор-специфічними. Ваш вендор GPU може надати втулок від третіх сторін для NFD; перевірте їх документацію для отримання додаткової інформації.
apiVersion: v1
kind: Pod
metadata:
name: example-vector-add
spec:
# Виможете використовувати Kubernetes node affinity для планування цього Podʼа на вузол
# який надає kind типу GPU, який потрібе його контейнеру для роботи
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: "gpu.gpu-vendor.example/installed-memory"
operator: Gt # (greater than)
values: ["40535"]
- key: "feature.node.kubernetes.io/pci-10.present" # NFD Feature label
values: ["true"] # (optional) only schedule on nodes with PCI device 10
restartPolicy: OnFailure
containers:
- name: example-vector-add
image: "registry.example/example-vector-add:v42"
resources:
limits:
gpu-vendor.example/example-gpu: 1 # запит 1 GPU
Вендори GPU
Елементи на цій сторінці відносяться до сторонніх продуктів чи проєктів, які надають функціонал, необхідний для Kubernetes. Автори проєкту Kubernetes не несуть відповідальності за ці проєкти. Ознайомтесь з настановами на вебсайті CNCF для отримання докладної інформації.
Ознайомтесь з посібником з контенту перед тим, як пропонувати додавання посилання на стороні компоненти.