Взгляните на Descheduler . Этот проект выполняется как задание Kubernetes, целью которого является уничтожение контейнеров, когда он считает кластер несбалансированным.
Стратегия LowNodeUtilization
подходит для вашего случая:
Эта стратегия находит узлы, которые используются не полностью, и, если возможно, высвобождает модули из других узлов в надежде, что воссоздание высохших модулей будет запланировано на этих недостаточно используемых узлах.
Другой вариантсостоит в том, чтобы применить немного хаос-инжиниринга вручную, принудительно обновляя развертывание, и, надеюсь, планировщик исправит проблему баланса при воссоздании модулей.
Вы можете использовать kubectl rollout restart my-deployment
. Это намного лучше, чем просто удалять модули с помощью kubectl delete pod
, так как развертывание обеспечит доступность во время «перебалансировки» (хотя удаление модулей в целом увеличивает ваши шансы на лучшее восстановление баланса).