Изменение размера облачного кластера Google Kubernetes до нуля не работает - PullRequest
0 голосов
/ 31 мая 2018

Я пытаюсь изменить размер кластера kubernetes до нуля узлов, используя

gcloud container clusters resize $CLUSTER_NAME --size=0 --zone $ZONE

Я получаю сообщение об успехе, но размер пула узлов остается тем же (я использую только один пул узлов)

Можно ли изменить размер кластера до нуля?

1 Ответ

0 голосов
/ 01 июня 2018

Иногда вам просто нужно подождать 10-20 минут, прежде чем операция автомасштабирования вступит в силу.
В других случаях вам может потребоваться проверить, выполнены ли некоторые условия для уменьшения масштаба узла.

Согласно документация для автоматического масштабирования :

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

Обратите внимание, что автоматическое масштабирование кластера основано на запросах ресурсов Pod, т. Е. Сколько ресурсов запрошено вашими Pod.Cluster autoscaler не учитывает ресурсы, которые активно используются вашими модулями.По сути, автоматическое масштабирование кластера доверяет тому, что предоставленные вами запросы ресурсов Pod являются точными, и планирует Pod на узлы на основе этого предположения.

Примечание: Начиная с Kubernetes версии 1.7, вы можете указатьминимальный размер нуля для вашего пула узлов.Это позволяет вашему пулу узлов полностью сокращаться, если экземпляры внутри не обязаны выполнять ваши рабочие нагрузки.Однако, хотя пул узлов может масштабироваться до нулевого размера, общий размер кластера не уменьшается до нуля (поскольку для запуска системных модулей всегда требуется хотя бы один узел)

Автоматическое масштабирование кластера имеет следующие ограничения:- При уменьшении масштаба автоматическое масштабирование кластера поддерживает период корректного завершения для модуля до 10 минут.Модуль всегда уничтожается максимум через 10 минут, даже если модуль настроен с более высоким льготным периодом.

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

Однако в FAQ упоминаются случаи, которые могут помешать CA удалить узел:

Какие типы модулей могут помешать CA удалить узел?

  • Модули с ограничительным PodDisruptionBudget.
  • Модули системы Kube, которые:
    • не запускаются наузел по умолчанию *
    • не имеет PDB или их PDB слишком ограничен (начиная с CA 0.6).
  • Бобы, которые не поддерживаются объектом контроллера (поэтому не создаются развертыванием, набором реплик, заданием, набором состояний и т. д.).*
  • Стручки с локальным хранением.*
  • Модули, которые не могут быть перемещены в другое место из-за различных ограничений (нехватка ресурсов, несоответствие селекторов узлов или сходство, сопоставление анти-сходство и т. Д.) * Если модуль не имеет следующую аннотацию (поддерживается в CA 1.0.3 или более поздней):

"cluster-autoscaler.kubernetes.io/safe-to-evict": "true"

Как я могу масштабировать свой кластер до 1 узла?

До версии 0.6 Cluster Autoscaler не былкасаясь узлов, на которых были запущены важные модули кубической системы, такие как DNS, Heapster,> Dashboard и т. д. Если эти модули находились на разных узлах, CA не сможет уменьшить кластер, и пользователь может получить полностью пустой кластер из 3 узлов.В версии 0.6 мы добавили опцию, чтобы сообщить CA, что некоторые системные модули могут перемещаться.Если пользователь настраивает PodDisruptionBudget для модуля kube-system, то стратегия по умолчанию, не касающаяся узла, на котором запущен этот модуль, отменяется настройками PDB.Таким образом, чтобы включить миграцию модулей системы kube, необходимо установить minAvailable на 0 (или <= N, если имеется N + 1 реплик модуля.) См. Также <a href="https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/FAQ.md#i-have-a-couple-of-nodes-with-low-utilization-but-they-are-not-scaled-down-why" rel="nofollow noreferrer"> У меня есть пара узлов с низкимиспользование, но они не уменьшены.Почему?

Как я могу масштабировать группу узлов до 0?

С CA 0.6 для GCE / GKE и CA 0.6.1 для AWS можно масштабировать группу узловв 0 (и, очевидно, в 0), при условии, что все условия уменьшения выполнены.

Для AWS, если вы используете nodeSelector, вам нужно пометить ASG ключом шаблона узла "k8s.io/cluster-autoscaler/node-template/label/".

Например, для метки узла foo = bar вы должны пометить ASG следующим образом:

{ "ResourceType": "auto-scaling-group", "ResourceId": "foo.example.com", "PropagateAtLaunch": true, "Value": "bar", "Key": "k8s.io/cluster-autoscaler/node-template/label/foo" }

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