Как автоматически выполнить ребалансировку контейнеров в aws eks (kubernetes) по всем узлам / работникам - PullRequest
0 голосов
/ 01 ноября 2019

Предположим, у нас есть 4 узла кластера eks в ec2-autoscaling min с 4 узлами. Стек приложения kubernetes, развернутый на одном и том же с одним модулем один модуль. Теперь трафик увеличивает HPA, запускаемый на уровне экс. Теперь общее количество модулей - 8, два - на одном узле. Также срабатывает автоматическое масштабирование. Теперь всего узлов 6 узлов.

Все наблюдаемые модули остаются в текущем состоянии. Post autscaling тоже.

Есть ли прямой и более простой способ? Некоторые из уже работающих модулей должны автоматически запускаться на дополнительных узлах (обнаружить их и перенести на недавно добавленные незанятые рабочие / узлы (т. Е. Не использовать - путем принудительного удаления модулей)

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 01 ноября 2019

Взгляните на Descheduler . Этот проект выполняется как задание Kubernetes, целью которого является уничтожение контейнеров, когда он считает кластер несбалансированным.

Стратегия LowNodeUtilization подходит для вашего случая:

Эта стратегия находит узлы, которые используются не полностью, и, если возможно, высвобождает модули из других узлов в надежде, что воссоздание высохших модулей будет запланировано на этих недостаточно используемых узлах.


Другой вариантсостоит в том, чтобы применить немного хаос-инжиниринга вручную, принудительно обновляя развертывание, и, надеюсь, планировщик исправит проблему баланса при воссоздании модулей.

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

0 голосов
/ 01 ноября 2019

Один простой способ - удалить все эти модули с помощью селектора с помощью команды ниже и позволить развертыванию воссоздать эти модули в кластере.

kubectl delete po -l key = value

Возможно,другие возможности. был бы рад узнать от других

...