На заре своего существования Kubernetes был в основном ориентирован на создание функций для рабочих нагрузок на базе микросервисов. В последние годы его возможности расширились до поддержки пакетной обработки для высокопроизводительных вычислительных нагрузок, пишет на портале The New Stack Мацек Ружацки, менеджер по продуктам Google Cloud.
Kubernetes прошел долгий путь с момента своего создания в 2014 г.
Изначально ориентированный на поддержку рабочих нагрузок на базе микросервисов, Kubernetes превратился в мощный и гибкий инструмент для создания платформ пакетной обработки. Эта трансформация обусловлена растущим спросом на возможности машинного обучения, переходом высокопроизводительных вычислительных систем (HPC) в облако и эволюцией в отрасли к более свободно связанным математическим моделям.
Недавняя работа PGS по использованию Kubernetes для создания вычислительной платформы с 1,2 млн. виртуальных процессоров, эквивалентной седьмому лучшему суперкомпьютеру в мире, но работающей в облаке и на виртуальных машинах Spot, является ярким примером этой тенденции.
На заре своего существования Kubernetes был в основном ориентирован на создание функций для рабочих нагрузок на базе микросервисов. Его мощные возможности оркестровки контейнеров делали его идеальным для управления сложностью таких приложений.
Однако пользователи пакетных рабочих нагрузок часто предпочитали полагаться на другие фреймворки, такие как Slurm, Mesos, HTCondor или Nomad. Эти фреймворки предоставляли необходимые функции и масштабируемость для задач пакетной обработки, но им не хватало динамичной экосистемы, поддержки сообщества и возможностей интеграции, предлагаемых Kubernetes.
В последние годы сообщество Kubernetes признало растущий спрос на поддержку пакетной обработки и сделало значительные инвестиции в этом направлении. Одним из таких вкладов является создание рабочей группы Batch Working Group, которая предприняла ряд инициатив по расширению возможностей пакетной обработки Kubernetes.
Группа внесла многочисленные улучшения в Job API, сделав его более надежным и гибким для поддержки более широкого спектра рабочих нагрузок пакетной обработки. Обновленный API позволяет пользователям легко управлять пакетными заданиями, предлагает улучшения масштабируемости, производительности и надежности.
Kueue — это новый планировщик заданий, разработанный группой специально для рабочих нагрузок пакетной обработки Kubernetes. Он предлагает расширенные возможности, такие как приоритизация заданий, обратное заполнение (backfilling), оркестровка вариантов ресурсов (resource flavors) и временное прерывание (preemption), обеспечивая эффективное и своевременное выполнение пакетных заданий при максимально эффективном использовании ресурсов.
В настоящее время команда работает над созданием интеграций с различными фреймворками, такими как Kubeflow, Ray, Spark и Airflow. Эти интеграции позволят пользователям использовать мощь и гибкость Kubernetes, используя специализированные возможности этих фреймворков, создавая бесшовный и эффективный опыт пакетной обработки.
Группа также планирует предоставить ряд других возможностей. К ним относятся API инициализации на уровне заданий при автомасштабировании, плагины планировщиков, улучшения времени выполнения на уровне узлов и многие другие.
Поскольку Kubernetes продолжает инвестировать в поддержку пакетной обработки, он становится все более конкурентоспособным вариантом для пользователей, которые ранее полагались на другие фреймворки.
Kubernetes обладает рядом преимуществ, среди которых:
- Широкие возможности многопользовательской эксплуатации. Kubernetes предоставляет надежные функции безопасности, аудита и распределения затрат, что делает его отличным выбором для организаций, управляющих несколькими арендаторами и гетерогенными рабочими нагрузками.
- Богатая экосистема и сообщество. Kubernetes может похвастаться процветающим сообществом Open Source-разработчиков, в котором имеется множество инструментов и ресурсов, помогающих пользователям оптимизировать задачи пакетной обработки.
- Управляемый хостинг. Kubernetes доступен в качестве управляемого сервиса у всех основных облачных провайдеров. Это обеспечивает тесную интеграцию с их вычислительными стеками, позволяя пользователям использовать уникальные возможности, а также упрощает оркестровку более сложных в использовании дефицитных ресурсов, таких как виртуальные машины Spot или ускорители. Использование этих сервисов позволяет ускорить циклы разработки, повысить эластичность и снизить совокупную стоимость владения.
- Стандартизация и переносимость оркестровки вычислений. Предприятия могут выбрать единый уровень API, чтобы обернуть свои вычислительные ресурсы для смешивания пакетных и обслуживающих рабочих нагрузок. Они могут использовать Kubernetes, чтобы уменьшить привязку к одному провайдеру и получить гибкость в использовании всего лучшего, что может предложить современный облачный рынок.
Обычно переход пользователя на использование Kubernetes также включает контейнеризацию его пакетных рабочих нагрузок. Контейнеры сами по себе произвели революцию в процессе разработки ПО, а для вычислительных нагрузок они обеспечивают значительное ускорение циклов выпуска, что приводит к значительному ускорению инноваций.
Контейнеры инкапсулируют приложение и его зависимости в единый, самодостаточный блок, который может стабильно работать на разных платформах и в разных средах. Они устраняют проблему «это работает только на моей машине». Они позволяют быстро создавать прототипы и ускоряют циклы итераций. В сочетании с облачным хостингом они обеспечивают гибкость, которая помогает компаниям, ориентированным на HPC и MО, быстрее внедрять инновации.
Сообществу Kubernetes еще предстоит решить ряд проблем, включая необходимость более продвинутого управления временем выполнения на каждом узле, а также необходимость более продвинутой поддержки Job API. Пользователи HPC привыкли к большему контролю над средой выполнения.
Создание крупномасштабных платформ с использованием Kubernetes онпремис по-прежнему требует значительных навыков и опыта. В настоящее время в экосистеме пакетной обработки существует некоторая фрагментация: различные платформы по-разному реализуют общие концепции (например, Job, Job Group, Job Queueing). В дальнейшем мы увидим, как эти проблемы будут решаться с каждым новым выпуском Kubernetes.
Эволюция Kubernetes от платформы, ориентированной на микросервисы, до мощного инструмента для пакетной обработки демонстрирует адаптивность и устойчивость сообщества Kubernetes. Удовлетворяя растущий спрос на возможности МО, миграцию HPC в облако, Kubernetes становится все более привлекательным вариантом для рабочих нагрузок пакетной обработки.
Широкие возможности Kubernetes по обеспечению многопользовательского доступа, богатая экосистема и сервисы управляемого хостинга от крупнейших облачных провайдеров делают его отличным выбором для организаций, стремящихся оптимизировать свои задачи пакетной обработки и использовать возможности облака.