Есть ли способ изменить размер кластера GKE до 0 узлов после определенного времени простоя? - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть кластер GKE, который я хочу разместить в 0 узлах, масштабировать до 3 узлов для выполнения задачи, а затем после определенного времени простоя уменьшать до 0. Есть ли способ сделатьэто?

Ответы [ 3 ]

0 голосов
/ 28 сентября 2019

Кластер GKE никогда не может уменьшаться до 0 из-за системных модулей, работающих в кластере.Модули, работающие в пространстве имен kube-system, учитывают использование ресурсов в ваших узлах, поэтому автоматическое масштабирование никогда не примет решение масштабировать весь кластер до 0

. Определенно, можно уменьшить отдельные пулы узлов до0 хотя.Возможно, вы захотите использовать 2 разных пула узлов: 1 маленький для хранения всех системных модулей (за исключением модулей демонов) и еще один большой пул с включенным автоматическим масштабированием от 0 до X. Вы можете добавить порчу в этот пул узлов, чтобы обеспечить системные модулине используйте это.

Это сведет к минимуму использование ресурсов во время простоя, но нет способа обеспечить автоматическое изменение размера k8 до 0

Альтернатива, если у вас есть запланированное расписание, когда кластер должен увеличитьсяили ниже, вы можете использовать Cloud Scheduler для запуска задания, которое отправляет вызов API в API контейнера для изменения размера вашего кластера.

Или вы можете настроить задание в кластере или ловушку предварительной остановки в вашем окончательном задании для запуска Облачной функции

0 голосов
/ 30 сентября 2019

Следующая команда изменила бы размер кластера до нуля узлов:

gloud container clusters resize [cluster-name] --size 0 --zone [zone]

Теперь вам решать, как вы хотите увеличить или уменьшить размер кластера.

Предположим, вынужно развернуть несколько вещей, и вы знаете, сколько они потребуют, увеличьте размер кластера с помощью следующей команды:

gloud container clusters resize [cluster-name] --size 3 --zone [zone]

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

0 голосов
/ 27 сентября 2019

Как мы можем прочитать в документации GKE о Автоматическое масштабирование кластера .

Ограничения автоматического масштабирования

Когда вы автоматически масштабируете кластеры, узелПределы масштабирования пула определяются доступностью зоны.

Например, следующая команда создает автоматическое масштабирование многозонного кластера с шестью узлами в трех зонах, с минимум одним узлом на зону и максимум четырьмя узлами назона:

gcloud container clusters create example-cluster \
--zone us-central1-a \
--node-locations us-central1-a,us-central1-b,us-central1-f \
--num-nodes 2 --enable-autoscaling --min-nodes 1 --max-nodes 4

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

Но есть ограничения.

Иногда автоматическое масштабирование кластера не может полностью уменьшить масштаб.и дополнительный узел существует после уменьшения.Это может произойти, когда необходимые системные модули запланированы на разных узлах, поскольку нет никаких триггеров для перемещения этих модулей на другой узел.См. У меня есть пара узлов с низкой загрузкой, но они не уменьшены.Почему? .Чтобы обойти это ограничение, вы можете настроить бюджет сбоя Pod .

Вот причины, по которым узлы не могут быть уменьшены:

  • группа узлов уже имеет минимальный размер,

  • узел имеет отключенную аннотацию с уменьшением масштаба (см. Как предотвратить масштабирование кластера Autoscalerконкретный узел? )

  • узел был ненужен менее 10 минут (настраивается с помощью флага --scale-down-unneeded-time),

  • тамбыло увеличение в течение последних 10 минут (настраивается с помощью флага --scale-down-delay-after-add),

  • было неудачное уменьшение для этой группы в течение последних 3 минут (настраивается с помощью --scale-down-delay-after-failure flag),

  • произошла неудачная попытка удалить этот конкретный узел, и в этом случае Cluster Autoscaler будет ждать еще 5 минут, прежде чем снова рассмотреть возможность его удаления,

  • с использованием большого пользовательского значения для --scale-down-delay-after-delete или --scan-interval, что задерживает действие CA.

...