× Install ThecoreGrid App
Tap below and select "Add to Home Screen" for full-screen experience.
B2B Engineering Insights & Architectural Teardowns

Kubernetes DRA усиливает контроль ресурсов

Dynamic Resource Allocation (DRA) в Kubernetes расширяет управление ресурсами и меняет поведение планировщика. В версии 1.36 это уже не только про GPU, но и про CPU, память и предсказуемость размещения.

Проблема проявляется в гетерогенных кластерах, где ресурсы отличаются по типу и состоянию. Жёсткие запросы к конкретным устройствам снижают (throughput) и приводят к фрагментации. Планировщик либо не находит подходящий ресурс, либо делает неоптимальный выбор. Дополнительно система деградирует при сбоях устройств, когда нет явной модели их состояния и готовности. Это особенно заметно в AI/ML нагрузках, где важны топология и доступность ускорителей.

В Kubernetes 1.36 развитие Dynamic Resource Allocation идёт в сторону гибкости и управляемости. Ключевое изменение — возможность задавать приоритетный список ресурсов вместо жёсткого выбора. Это снижает вероятность блокировки Pod и повышает утилизацию. Параллельно добавлена совместимость с legacy-подходом через extended resources, что делает миграцию на ResourceClaim постепенной. Это прагматичный компромисс: операторы могут внедрять DRA, не ломая существующие workload’ы.

Реализация опирается на несколько уровней. На уровне устройств появились partitionable devices, что позволяет делить физическое оборудование на логические части. Это критично для дорогих ускорителей, где важна плотность размещения. Управление качеством ресурсов усиливается через device taints и tolerations — неисправные или зарезервированные устройства исключаются из общего пула. Параллельно binding conditions предотвращают преждевременное назначение Pod, пока внешние ресурсы не готовы, что снижает количество сбоев на старте.

Наблюдаемость (observability) также стала частью модели. Через resource health status состояние устройств теперь отражается прямо в статусе Pod. Это убирает необходимость анализировать логи драйверов и ускоряет диагностику. Дополнительно resource pool status даёт снимок доступности ресурсов, что упрощает capacity planning. При этом device metadata стандартизирует передачу информации внутрь контейнеров через JSON-файлы, устраняя необходимость обращаться к API Kubernetes во время выполнения.

Отдельный слой изменений касается планировщика. Введён лексикографический порядок оценки ресурсов, что позволяет драйверам влиять на стратегию размещения. Это повышает предсказуемость и может улучшить (latency) принятия решений. Также обновлена логика constraint evaluation: функции matchAttribute и distinctAttribute теперь лучше работают с наборами значений, а includes() снижает хрупкость при изменении формата атрибутов.

Расширение DRA на CPU и память — важный шаг. Это переносит продвинутые механизмы размещения, включая NUMA-aware подход, на базовые ресурсы. Однако это увеличивает сложность конфигурации и требований к пониманию топологии. Такой подход даёт больше контроля, но требует аккуратной настройки.

Новые возможности для PodGroups с ResourceClaim снимают ограничения масштабирования. Ранее существовали лимиты на совместное использование ресурсов между Pod. Теперь управление становится более централизованным и менее зависимым от внешних оркестраторов. Это особенно важно для больших распределённых workload’ов.

Итог изменений — эволюционное усиление DRA как универсального слоя управления ресурсами. Улучшилась гибкость планирования, повысилась прозрачность состояния и упростилась интеграция с существующими системами. При этом метрики производительности напрямую не указаны, поэтому оценка эффекта остаётся на уровне архитектурных преимуществ.

Читать

×

🚀 Deploy the Blocks

Controls: ← → to move, ↑ to rotate, ↓ to drop.
Mobile: use buttons below.