Karpenter — это автоскейлер для Kubernetes, который оптимизирует затраты через консолидацию узлов. Механизм работает в двух контурах: масштабирование реагирует на ожидающие поды, а консолидация постоянно пытается переупаковать кластер, чтобы сократить количество используемых узлов и снизить расходы.
Пользователи часто сталкиваются с постоянной ротацией узлов при стабильном уровне потребления ресурсов. В Karpenter отсутствует настраиваемый порог утилизации: узел становится кандидатом на удаление сразу после истечения таймера 'consolidateAfter', если все его поды могут быть размещены на других мощностях.
Циклическая ротация возникает, когда короткоживущие ресурсоемкие задачи запускаются параллельно с долгоживущими подами. Karpenter начинает консолидацию узла, но из-за появления новой задачи вынужден создавать новый узел. После завершения задачи процесс повторяется, так как Karpenter находит очередной узел для оптимизации.
В версии Karpenter 1.14 появилась политика 'Balanced' для снижения интенсивности ротации. Среди возможных решений проблемы авторы выделяют внедрение порогов утилизации, использование бюджетов прерываний узлов (node pool disruption budgets) и учет истории планирования подов для предотвращения избыточного пересоздания инфраструктуры.




