Kubernetes 1.36 анонсировал внедрение менеджеров ресурсов на уровне Pod как альфа-функцию, что улучшает управление ресурсами для критически важных приложений. Теперь kubelet поддерживает указание ресурсов на уровне Pod через .spec.resources, что позволяет адаптировать ресурсные allocations с более высокими требованиями к производительности.
Контекст изменений
Для приложений, таких как машинное обучение или высокочастотная торговля, часто нужны ресурсы, которые обеспечивают предсказуемую производительность. Ранее, чтобы обеспечить эксклюзивные и NUMA-ориентированные ресурсы для основных контейнеров, приходилось выделять ресурсы для всех контейнеров в Pod. Это требовало избыточных затрат для побочных контейнеров, таких как сервисные модули или системы мониторинга.
Подробности о новых возможностях
Введение поддержки подуровней ресурсов позволяет kubelet создавать гибридные модели распределения ресурсов. Например, при использовании менеджера топологии на уровне Pod, все ресурсы для пода выделяются на одном NUMA-узле для основного контейнера, а оставшиеся ресурсы формируют общий пул для вспомогательных контейнеров.
В окончательном варианте API-кода задаются размеры общего бюджета ресурсов и NUMA-выравнивания, что позволяет эффективно выделять ресурсы для работы с информацией и обслуживанием базы данных. Таким образом, тяжелые нагрузки можно без потерь совместить на одном узле NUMA, не требуя выделения для них отдельных ядер.
Практическое значение
Для разработчиков это нововведение открывает новые горизонты: можно эффективно оптимизировать поды, которые содержат как основные, так и вспомогательные контейнеры, что особенно актуально для высокопроизводительных задач. Это особенно важно на фоне растущих нагрузок и требований к ресурсам в облачных средах.
Следующий релиз планируется в Q3 2026, и разработчики ожидают дальнейших улучшений в управлении ресурсами и производительности целых кластеров Kubernetes.