Налаштування NVIDIA GPU Operator для Kubernetes

Прискорювачі в кластері простоюють, а завдання чекають у черзі — знайомо? Ми налаштовуємо NVIDIA GPU Operator під ключ: аудит, автоматизація виділення ресурсів, регламенти та передача вашій команді. Простій прискорювачів скорочується в рази, а навантаження розподіляється передбачувано.
Часті запитання

NVIDIA GPU Operator: де губиться виділення прискорювачів

Кластер із прискорювачами рідко простоює через брак заліза — частіше простій прискорювачів спричинений тим, що виділення GPU у кластері не збігається з фактичним станом вузлів.

Вузол позначений як такий, що містить карту, але драйвер не піднявся після оновлення ядра, плагін пристрою не зареєстрував ресурс, і планувальник більше не бачить вільних карт. Завдання при цьому чекають у черзі, а прискорювачі стоять без навантаження.

Корінь зазвичай у ручному встановленні драйверів на вузлах. На частині машин інший набір бібліотек, ніж в образі; хтось перезавантажив сервер і не повернув конфігурацію; на одному вузлі версія драйвера свіжа, на іншому — відстала на кілька релізів.

Чим більше вузлів, тим швидше накопичується розходження, і тим частіше інженер замість роботи з моделлю з'ясовує, чому конкретний вузол перестав віддавати карту.

Друге вузьке місце в плануванні завдань — достовірність ресурсів. Планувальник розподіляє лише те, що заявлено вузлом, тому без коректної реєстрації карт навантаження або не стартує взагалі, або кілька процесів ділять одну карту і падають через пам'ять.

Частина завдань при цьому йде на вузли без прискорювача і завершується таймаутом уже після того, як витрачено час у черзі.

NVIDIA GPU Operator переводить драйвери, реєстрацію карт і маркування вузлів у декларативний стан кластера: вузол сам повідомляє, чим володіє, а розходження версій лікується штатним оновленням, а не ручними заходами на машину.

Нижче розбираємо, як це влаштовано і де залишаються граблі — від сумісності драйвера з ядром до спільного доступу кількох завдань до однієї карти.

Що змінюється в кластері після автоматизації прискорювачів

Після того як NVIDIA GPU Operator бере на себе життєвий цикл прискорювачів, їхнє виділення перестає бути набором ручних кроків. Драйвер, бібліотеки й компоненти планування стають на вузол узгоджено, кластер бачить прискорювач як звичайний ресурс і розподіляє його між завданнями.

Підготовка нового вузла вкладається у передбачуване вікно замість послідовності, яку кожен інженер виконував зі своєї пам'яті.

Ручних операцій стає помітно менше: оновлення драйвера і надання доступу до пристрою описані декларативно й застосовуються однаково на всіх вузлах.

Це знімає окремий клас відмов — розходження версій драйвера й бібліотек між машинами, через яке завдання або не стартувало, або втрачало доступ до прискорювача вже в роботі.

Спостережуваність прискорювачів перестає бути окремою історією. Завантаження, помилки й ознаки перегріву збираються в тому самому контурі, що й метрики решти кластера, тому деградація видна до падіння завдань, а не після.

Відповідь на питання «який вузол поводиться нетипово» дає графік, а не журнали подій окремої машини.

Оновлення теж керовані: нова гілка драйвера прокочується по вузлах хвилями, решта продовжують обслуговувати навантаження, а повернення до попередньої версії не потребує перезбирання кластера.

Разом п'ять вимірюваних зрушень — єдине виділення прискорювачів, передбачуваний час підготовки вузла, менше ручних операцій, знятий клас відмов і контрольовані оновлення.

Варіанти розгортання: ручне налаштування чи керований шар

Вибір між ручним встановленням і керованим шаром визначається не розміром кластера, а тим, як часто змінюються драйвери і скільки різних прискорювачів живе в одному пулі.

NVIDIA GPU Operator збирає драйвер, device plugin, телеметрію й мітки вузлів в один декларативний об'єкт, але додає власний життєвий цикл, який теж потрібно супроводжувати.

Варіант Коли підходить Обмеження
Ручне складання на вузлах Один-два вузли, рідкісні оновлення, зафіксована зв'язка драйвера й бібліотек Оновлення лише через перестворення вузла, версії розходяться між машинами, відновлення після збою — руками
Керований шар оператора Кластер зростає, прискорювачі різних поколінь, потрібні оновлення без простою Потребує міток і tolerations на вузлах, власний порядок оновлення, конфліктує з уже встановленим драйвером
Виділений пул вузлів Змішані навчання й інференс, різний профіль споживання ресурсів Потрібні taint'и й правила планування, частина парку простоює між завданнями
Гібридний режим Частину парку переводимо під керований шар, частина залишається на ручному налаштуванні Подвійний набір інструкцій для команди, розходження версій між сегментами

На практиці вибір перевіряється одним питанням: скільки ручних дій залишиться при зміні версії драйвера на всьому парку. Якщо відповідь «перестворити вузли» — беремо керований шар, якщо «нічого не міняти» — ручне складання простіше в супроводі.

Гібридний режим виправданий на час міграції: він дозволяє перевести під керування один пул, не чіпаючи решту, і відкотитися на будь-якому кроці.

Етапи впровадження: від аудиту кластера до передачі вам

Порядок робіт вибудуваний так, щоб кожна зміна була перевірюваною, а стан кластера — поворотним. Починаємо з інвентаризації, закінчуємо передачею конфігурацій і метрик вашій команді.

  1. Аудит кластера. Збираємо склад вузлів із прискорювачами, розмітку, встановлені драйвери й те, як планувальник розподіляє пристрої. Тут же виявляємо конфлікти: старі драйвери, ручні налаштування, забуті обмеження.
  2. Схема розміщення прискорювачів. Домовляємося, які завдання отримують пристрої і скільки, як ділимо вузли між командами, які мітки й обмеження не дають стороннім подам зайняти прискорювач.
  3. Налаштування оператора. Ставимо драйвери, доступ до пристроїв і телеметрію декларативно — параметри описані в репозиторії. Розділення одного прискорювача між завданнями вмикаємо лише там, де це виправдано профілем навантаження.
  4. Перевірка на реальному навантаженні. Проганяємо не синтетику, а робочу модель або сервіс: час виходу в готовність, утилізацію, поведінку при витісненні подів і на кількох вузлах одночасно.
  5. План відкату. Фіксуємо порядок повернення до попереднього стану: виведення вузлів із пулу, зняття змін, точки відновлення. Відкат перевіряємо на стенді, а не описуємо на словах.
  6. Передача в експлуатацію. Віддаємо конфігурації, схему розміщення, метрики й оповіщення, інструкції з типових операцій та оновлення драйверів.

Кожен крок закінчується перевірюваним артефактом: схемою, конфігурацією, звітом про навантажувальний прогін. Тому результат не залежить від того, хто залишився в команді після передачі.

Конфігурації, схеми й регламенти, які залишаються у вас

Комплект передається не як «папка з файлами», а як робоча система: конфігурації в системі контролю версій з описом відхилень від базових значень, схеми, за якими новий інженер за годину розуміє, як трафік і завдання доходять до прискорювачів, і регламенти, за якими оновлення проходить без зупинки сервісів. Нижче — що саме залишається у вас після здачі.

  • Конфігурації вузлів із прискорювачами — маніфести міток і відбору вузлів, профілі спільного використання прискорювача, параметри драйвера й плагіна пристроїв. Окремо фіксуємо, які значення змінено усвідомлено і чому, щоб при наступному оновленні їх не «затерли» налаштуваннями за замовчуванням.
  • Схеми взаємодії компонентів — від планування завдання до виділення пристрою: які служби беруть участь, у якому порядку запускаються, де точка відмови. Схема прив'язана до імен об'єктів у кластері, а не до абстрактних блоків.
  • Політики доступу та розмежування прав — ролі для експлуатації, розробки й спостережуваності; хто може змінювати параметри прискорювачів, хто лише читає метрики. Права на зміну драйверів винесені з прикладних облікових записів.
  • Регламент оновлення — порядок дій при виході нової гілки: підготовка вузлів, дренування, перевірка контрольних завдань, критерії відкату. Відкат описано окремо й перевірено на стенді до передачі.
  • Документація з експлуатації — типові відмови (завдання не бачить прискорювач, вузол позначений неготовим, не сходяться метрики), діагностичні команди й на що дивитися в першу чергу.
  • Схема моніторингу та оповіщень — які показники збираються, які пороги вважаються аварійними, кому й як надходить повідомлення.
  • Чек-ліст приймання та передачі зміни — короткий список перевірок після будь-яких робіт у кластері, щоб зміни не залишалися непоміченими.

Усе це зберігається поряд з інфраструктурним кодом, а не в листуванні, — тому оновлення оператора й оновлення драйверів перестають бути подією з невизначеним результатом.

Розбір проєкту: кластер перестав простоювати

До нас прийшов кластер під навчання моделей і пакетну обробку даних: десятки завдань у черзі, різнорідні вузли з прискорювачами різних поколінь і стійке відчуття в команди, що половина запусків падає «не через код».

Вузьке місце виявилося не в планувальнику, а в шарі між залізом і кластером.

Драйвери, бібліотеки й плагін пристроїв ставилися на кожен вузол вручну, версії між машинами розходилися, а після перезавантаження вузол повертався в стрій без видимих прискорювачів — завдання падало вже на старті, з'їдаючи чергу й час інженерів.

Ми перевели підготовку вузлів на NVIDIA GPU Operator. Оператор сам розгортає драйвери, набір бібліотек, плагін пристроїв і збір метрик через DaemonSet, помічає машини за фактичною наявністю прискорювача й приводить новий вузол до робочого стану без ручних кроків.

Додатково налаштували перевірки готовності: вузол потрапляє в розклад лише коли прискорювач видно й уже протестовано.

Метрики до і після

Показник До Після
Частка успішних запусків завдань 71% 98%
Підготовка нового вузла 45–60 хвилин вручну 5–7 хвилин автоматично
Відновлення після збою вузла 2–3 години 10–15 хвилин
Звернення до підтримки щодо прискорювачів кілька на тиждень одиниці за квартал

Окремо зняли навантаження з чергової зміни: типові збої тепер лікуються перестворенням вузла, а не розбором конкретної машини. Такий кейс — не про заміну обладнання, а про керований шар поверх нього.

Що робити, якщо GPU уже розгорнуто, але завдання падають

Завдання падають зазвичай не через оператора, а через розходження двох схем. На вузлах, налаштованих вручну, драйвер ставився пакетами, і мітки там проставлені руками. Там, де працює NVIDIA GPU Operator, те саме приїжджає в контейнерах, а мітками керує оператор.

Поки обидві схеми живуть поруч, поди потрапляють на вузол, який їх не приймає: ресурс GPU не опубліковано, версія драйвера не збігається, мітки не відповідають селектору.

Діагностика починається зі статусу вузлів і подій: видно, які вузли віддають ресурс, а які ні, де контейнер із драйвером перезапускається й уводить вузол у неготовність.

Далі звіряємо по вузлах три речі — мітки, допуски й версію драйвера; розходження саме тут дають майже всі падіння при запуску.

Переводимо по вузлах, без зупинки робіт: вузол закривається для нових подів, його навантаження переїжджає на решту, потім із нього знімаються ручні мітки й він підключається до загальної схеми.

Після перемикання публікацію ресурсу перевіряє пробний под, і лише потім вузол повертається в стрій. Ємність не просідає — з роботи виведено один вузол, а не весь пул.

Зведення схем в одну — це єдине джерело правди: версії драйвера, мітки, допуски й політики приходять з одного місця, ручні правки в них не вносяться.

Частково налаштовані вузли не дотягують до решти руками, а приводяться до того самого вигляду, що й керовані, — так іде клас відмов, коли завдання падає через «не той» вузол. Початкові мітки й допуски зберігаємо: відкат — одна операція, а вікно переведення вимірюється хвилинами.

Технічні сумніви: сумісність, оновлення, відкат

Розгортання оператора зачіпає спільні вузли кластера, тому сумніви щодо сумісності й повернення до попередньої схеми закономірні.

Нижче — відповіді на те, що найчастіше перевіряють до старту: із чим стикується поточний кластер, у якому порядку йдуть оновлення і як виглядає відкат.

Оператор сумісний із нашим кластером?

Звіряємо версію кластера, середовище виконання контейнерів і спосіб встановлення драйверів на вузлах. Оператор налаштовується лише на вузли з прискорювачами за мітками й не втручається в решту — змішаний кластер продовжує працювати як раніше. Якщо середовище відрізняється від типового, спочатку проганяємо пробну групу вузлів.

У якому порядку йдуть оновлення і чи можна працювати в цей час?

Оновлення йде хвилями: спочатку один вузол, на ньому перевіряємо навантаження, потім решта. Завдання з вузла, що оновлюється, переїжджають на вільні, тому черги й сервіси залишаються доступними, а простій не планується.

Версія драйвера задається в кластері, а не правиться вручну на кожному вузлі — розходжень між вузлами не виникає.

Що з планом відкату?

Попередня схема встановлення драйверів зберігається до кінця робіт, а конфігурація оператора зберігається окремим релізом з історією — повернення до попереднього стану займає один крок. Зняття міток повертає вузли у вихідний режим. План відкату фіксуємо письмово до початку налаштування.

Як розмежовуються права команд?

Адміністрування оператора залишається за інфраструктурною командою: оновлення, мітки вузлів, політики. Продуктові команди працюють лише у своїх просторах імен і запитують прискорювачі через заявку або квоту. Прямих прав на драйвери й системні компоненти в них немає.

Обговоримо задачу: повернемося з оцінкою та планом робіт

Оцінка впровадження NVIDIA GPU Operator тримається на трьох речах: які вузли віддаємо під прискорювачі, як кластер влаштований зараз і що саме рахуватиметься на цих прискорювачах.

Опишіть задачу у вільній формі — цього вистачить, щоб повернутися з планом, а не з уточнювальними питаннями.

  • схема кластера: скільки вузлів і пулів, де стоять прискорювачі й скільки їх на кожному
  • як кластер керується і що обмежує: закритий контур без зовнішньої мережі, приватний реєстр образів, власні політики доступу
  • які навантаження займуть прискорювачі й чи потрібно ділити їх між командами
  • що вже зроблено: чи розгорнуто драйвер вручну, які спроби були і де зупинилися
  • вимоги до ізоляції та пріоритетів: хто може займати прискорювач і що важливіше при нестачі
  • вікно робіт: коли допустимо перезавантажувати вузли і наскільки чутливий простій

У відповідь ви отримуєте робочий документ, за яким можна запускати роботи:

  • схему розгортання з розбиттям вузлів на пули й роллю кожного
  • склад робіт за етапами: підготовка вузлів, розгортання оператора, перевірка планування завдань, збір метрик
  • порядок викату з точками контролю та планом відкату до поточного стану
  • строки впровадження й чек-ліст приймання: які перевірки підтверджують, що навантаження реально пішло на прискорювачі
  • що залишиться вашій команді: конфігурації, опис політик, інструкції з обслуговування

Опишіть задачу — повернемося з оцінкою та планом робіт для вашого кластера.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1393
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1368
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    815
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1139