Kubernetes v1.36: DRA становится стабильнее, гибче и доступнее для GPU и CPU

Dynamic Resource Allocation (DRA) — это механизм, который позволяет платформенным администраторам гибко управлять аппаратными ускорителями и специализированными ресурсами в Kubernetes. В версии 1.36 этот механизм достиг новой зрелости: несколько ключевых функций перешли на более высокие стадии стаби

Kubernetes v1.36: DRA становится стабильнее, гибче и доступнее для GPU и CPU

Dynamic Resource Allocation (DRA) — это механизм, который позволяет платформенным администраторам гибко управлять аппаратными ускорителями и специализированными ресурсами в Kubernetes. В версии 1.36 этот механизм достиг новой зрелости: несколько ключевых функций перешли на более высокие стадии стабильности, появились улучшения юзабилити и расширилась экосистема драйверов. Разберёмся, что изменилось и как это повлияет на работу с кластерами.

Приоритезированный список устройств стал стабильным

Одна из самых ожидаемых функций — Prioritized list — наконец-то достигла стабильного статуса. В реальных кластерах редко встречается однородное аппаратное обеспечение: могут одновременно использоваться GPU разных поколений или модели ускорителей от разных вендоров. Ранее приходилось жёстко указывать конкретную модель, что снижало гибкость планирования и utilisation кластера.

Теперь можно задать упорядоченный список предпочтений: например, «дать H100, но если нет — A100». Планировщик будет перебирать варианты по порядку, что значительно повышает вероятность успешного размещения подов и эффективнее использует доступные ресурсы. Для операторов это означает меньше отказов в выделении ресурсов и более высокую загрузку дорогостоящего оборудования.

Как работает приоритезированный список устройств в Kubernetes?

Предположим, в кластере есть несколько типов GPU: NVIDIA H100, A100 и V100. Разработчик может запросить ResourceClaim с приоритезированным списком: сначала H100, при их отсутствии — A100, и только затем V100. Планировщик автоматически подберёт оптимальный вариант из доступных. Если ни один из указанных типов не доступен, под не будет запланирован — это позволяет избежать неожиданного использования устаревшего оборудования.

Расширенная поддержка ресурсов перешла в бета-версию

Функция Extended resource support теперь на этапе бета-тестирования. Она решает важную задачу: как мигрировать с классических extended resources на DRA без болезненного перехода. Ранее кластеры, использующие extended resources (например, nvidia.com/gpu), не могли легко переключиться на ResourceClaim API — требовалась полная перестройка workflows.

Теперь DRA может «оборачивать» традиционные extended resources, позволяя приложениям продолжать использовать старый API, в то время как операторы постепенно внедряют ResourceClaim. Это упрощает поэтапную миграцию: администраторы настраивают DRA на уровне кластера, а разработчики переходят на новый API в удобном для них темпе.

Поддержка ResourceClaims в PodGroups

Ещё одно важное нововведение — интеграция DRA с PodGroups. PodGroups — это механизм для группового планирования взаимозависимых подов, например, в распределённых тренировках машинного обучения. Ранее ResourceClaims нельзя было назначать на уровне группы, что затрудняло координацию выделения ресурсов для всех подов группы.

Теперь ResourceClaim может быть связан с PodGroup, что гарантирует, что все поды группы получат необходимые ресурсы одновременно, а не по одному. Это критически важно для задач, требующих синхронного старта всех компонентов, например, для all-reduce операций в глубоком обучении.

Расширение экосистемы драйверов

Помимо улучшений ядра, сообщество активно развивает драйверы для различных типов оборудования. Если раньше DRA в основном ассоциировалась с GPU, то теперь поддерживаются сетевые ускорители (например, SmartNIC), FPGA, специализированные AI-чипы и даже обычные CPU и память. Это делает DRA универсальным инструментом для управления любыми ресурсами, а не только экзотическими ускорителями.

В частности, драйверы для CPU и памяти позволяют использовать DRA для тонкого управления вычислительными ресурсами, что может быть полезно в сценариях с гарантированными квотами или изоляцией производительности. Экосистема становится более зрелой и hardware-agnostic.

Кого затронут изменения

Изменения в DRA v1.36 затронут несколько групп. Платформенные администраторы получат более гибкие инструменты для управления гетерогенными кластерами: приоритезированные списки сократят количество отказов планирования, а расширенная поддержка ресурсов упростит миграцию. Разработчики, использующие GPU и другие ускорители, смогут быстрее получать необходимые ресурсы и меньше беспокоиться о совместимости.

Для бизнеса, эксплуатирующего крупные инфраструктуры машинного обучения (например, в облачных провайдерах или дата-центрах), улучшения utilisation GPU напрямую снижают затраты. Кроме того, поддержка PodGroups упрощает развёртывание распределённых тренировок, что важно для AI/ML-команд.

Что будет дальше

Команда Kubernetes продолжает работу над DRA. Ожидается, что следующие версии принесут ещё больше стабилизаций и, возможно, полноценную поддержку динамического перераспределения ресурсов во время выполнения. Также в планах — улучшение мониторинга и observability для DRA, чтобы операторы могли точнее отслеживать использование ресурсов.

Итог

Kubernetes 1.36 делает Dynamic Resource Allocation более зрелым и практичным инструментом. Стабилизация приоритезированных списков и бета-версия расширенной поддержки ресурсов — это шаги к тому, чтобы DRA стала стандартом де-факто для управления аппаратными ресурсами в Kubernetes. Если вы ещё не начали знакомство с DRA, сейчас самое время присмотреться к этой технологии.