Фото: Josh Angehr на Unsplash
Volcano — це нативна для Kubernetes система планування пакетних завдань, створена для управління високопродуктивними робочими навантаженнями, включаючи машинне навчання (ML), глибинне навчання (DL), великі дані та інші ресурсоємні або обчислювально важкі додатки. Вона розширює можливості планувальника Kubernetes, щоб задовольнити вимоги пакетних і паралельних завдань.
Основні функції Volcano:
- Підтримка пакетних завдань:
- Ефективне планування пакетних і паралельних завдань.
- Обробка складних вимог до завдань, таких як залежності, етапи і робочі процеси.
- Розширені можливості планування:
- Підтримка планування груп (gang scheduling), яке забезпечує одночасний запуск усіх необхідних задач завдання, запобігаючи частковому виконанню.
- Забезпечення справедливого планування для ефективного розподілу ресурсів між завданнями.
- Управління чергами та ресурсами:
- Підтримка квот на ресурси і пріоритетних черг для управління виконанням завдань у спільних середовищах.
- Забезпечення спільного використання ресурсів і високої ефективності використання ресурсів кластеру.
- Управління залежностями завдань:
- Обробка залежностей між завданнями, етапами та задачами для ефективної оркестрації робочих процесів.
- Розширюваність:
- Дозволяє користувачам визначати власні плагіни для конкретних політик або алгоритмів планування.
- Розширює API Kubernetes для підтримки своїх розширених можливостей планування.
- Пріоритетність і справедливість:
- Пріоритетизація низькоприоритетних завдань на користь високопріоритетних, щоб задовольнити вимоги SLA.
- Забезпечення справедливості при розподілі ресурсів між кількома орендарями або робочими навантаженнями.
- Підтримка спеціалізованих робочих навантажень:
- Оптимізація для таких робочих навантажень, як тренування AI/ML, HPC-симуляції та обробка великих даних.
Як це працює:
- Volcano вводить набір визначень користувацьких ресурсів (CRDs), таких як
Job
,Queue
, іPodGroup
. - Вона інтегрується з планувальником Kubernetes, але використовує свою власну логіку планування для обробки завдань у пакетних завданнях.
- Volcano розподіляє ресурси на логічні черги і планує завдання на основі пріоритетів, вимог до ресурсів і політик.
Варіанти використання:
- Тренування машинного навчання:
- Ефективно виділяє ресурси GPU і CPU для моделей ML.
- Обробка великих даних:
- Обробка розподілених обчислювальних завдань, таких як Hadoop, Spark або TensorFlow.
- Високопродуктивні обчислення (HPC):
- Фасилітація симуляцій, геноміки або наукових робочих процесів.
- Автоматизація робочих процесів:
- Управління робочими процесами, що вимагають залежностей та паралельного виконання.
Volcano вирішує обмеження стандартного планувальника Kubernetes для пакетних завдань і надає надійну основу для робочих навантажень, які потребують обізнаного, справедливого і ефективного планування ресурсів.
Перекладено з: Volcano: A Kubernetes-Native Batch Scheduler for High-Performance Workloads