Полное руководство с нулевым героем по kubernetes cluster autoscaler, которое позволяет масштабировать количество узлов на основе запросов ресурсов и избегает того, чтобы ваши стручки ожидали в В ожидании государства.
Автоскалирование в Kubernetes
Kubernetes-это особенность, наполненная всем добрым, одним из которых является масштабирование, часто и предполагает, что Kubernetes поставляется с Автоспорт ** в качестве дефолта, но вряд ли нам часто нужно настроить батончики, чтобы заставить вещи действительно работать. Сегодня мы обсудили, как мы можем использовать *Kubernetes Cluster Autoscaler *TO ** Scale Kubernetes узлов Анкет
Что такое ClusterAutoscaler?
Cluster Autoscaler-это удивительная утилита, которая автоматически расширяет масштаб и снижает количество узлов на основе запроса ресурса для стручков.
Cluster Autoscaler может использоваться для масштабирования как плоскости управления Kubernetes (основные узлы), так и плоскость данных (рабочие узлы AKA Minion). Для этой демонстрации мы выбрали бы локальный кластер, основанный на AWS с использованием Kops Анкет
Для того, чтобы развертывание кластера Autoscaler для аутентификации в AWS и масштабировать количество узлов, есть несколько способов сделать это.
Прикрепление узлов IAM политики с соответствующими разрешениями.
Создание пользователя IAM и создать секреты Kubernetes и прикрепить секреты к развертыванию Autoscaler Cluster.
{ «Версия»: «2012-10-17», «Заявление»: [ { «Эффект»: «разрешить», «Действие»: [ «AutoScaling: DesciveAutoscalingGroups», «AutoScaling: описывает AutoScalingInsStances», «AutoScaling: DesculAlaunchConfigurations», «AutoScaling: setDesireDCapacity», «AutoScaling: DescureTags», «AutoScaling: TerminateInstanceInautoscalingGroup» ], «Ресурс»: [ «*» ] } ] }
Kops это удивительный инструмент, который помогает создавать/загрузить кластеры. В случае AWS, Kops Предоставление узлов в форме групп экземпляров, которые являются автоматическими группами в AWS.
Предварительные условия:
kubectl Кли
Kubernetes Cluster (V.1.14.0+ предпочтительно)
Метрикс сервер (Полное руководство по серверу метрик? -> Ссылка )
Как на самом деле Cluster Autoscaler, масштабируется?
Cluster Autoscaler следует циклу, через который он непрерывно проверяет, есть ли какой -либо стручок, который является В ожидании состояние из -за неадекватных ресурсов доступных узлов в кластере , если это так, он добавляет новые узлы, чтобы убедиться, что стручки запланированы. То, как он определяет, также На основании запроса, который указан спецификация POD , поэтому ожидается, что мы предоставим реалистичную ценность запроса для стручков (ничего меньше, больше ничего)
Cluster Autoscaler уменьшает количество узлов, которые постоянно ненужны в течение значительного количества времени. Узел не нужен, когда он имеет низкое использование, и все его важные стручки могут быть перемещены в другом месте.
Kubernetes/Autoscaler
Начиная
В этой демонстрации мы будем использовать локальный кластер Kubernetes, уже настроенный на AWS с помощью KOP.
Клон GitHub Repo ** https://github.com/chrisedrego/clusterautoscaler **
Создание группы экземпляров теста
Для тестирования мы создали бы выделенную группу экземпляров с Nodeselector как Узел: тестовый узел * Таким образом, при тестировании стручков будет запланировано только на этом узле. Мы выбрали * T3.Medium Введите, как есть следующая конфигурация.
**compute/vcpu:** 2vcpu **memory:** 4Gi
export KOPS_STATE_STORE='s3://STATE_STORE_URL' export KOPS_CLUSTER_NAME='CLUSTER_NAME' kops create -f ./kops/test-node.yaml kops update cluster --yes kops rolling-update cluster --yes
Проверка новой группы экземпляров и узлов готова.
***# Specify the new Instance Group Name*** INSTANCE_GROUP='' aws autoscaling describe-auto-scaling-groups | grep $INSTANCE_GROUP ***# Check if new nodes are added*** kubectl get nodes
Создание развертывания теста
Для тестирования мы создадим развертывание теста, которое имеет * * Nodeselector * установить на * Тестовый узел * с ** запросом * Значения устанавливаются соответственно. В этом случае мы предоставили запрошенную память 2gi Анкет
Развертывание кластера Autoscaler
После того, как вы уже клонировали репо, есть папка, называемая ** кластером-автоснайлером, **, которая содержит три разных способа развертывания, ради простоты мы будем использовать одну группу автоматического масштаба.
Одиночная группа автоматического масштаба
Несколько автоматических групп
На плоскости управления (на главных узлах)
Автоопуратный (автоматическое открытие с использованием тегов)
Перед применением изменений потребуется небольшое изменение.
- --skip-nodes-with-local-storage=false - --nodes=**: : **
Min_count : Минимальное количество узлов.
Max_count : Максимальное количество узлов.
Exance_group : AutoscalingGroup/Exantegroup
Убедитесь, что перед применением минимального счета и MAX-счета должны быть между фактическим диапазоном группы экземпляров.
Стимулирующая нагрузка.
Мы будем стимулировать нагрузку, увеличив количество копий.
Как мы уже знаем, что машина T3.Medium имеет 4gi память, ** как *есть и другие ресурсы, которые делают полезную память вокруг * ~ 3,7 г
Перед Clusterautoscaler: В ожидании
Перед ClusterAutoscaler мы назначили тестовое приложение памяти 2GI и попробовали масштабировать приложение до 2 реплик. В этом случае он терпит неудачу, поскольку один узел (t3.medium) не имеет достаточного количества ресурсов, и у нас есть стручок в В ожидании состояния Анкет (2gi x> 3,7 ~ gi)
kubectl scale deploy test-app --replicas=2
После Clusterautoscaler: Бег
После Clusterautoscaler он обнаруживает, что POD находится в В ожидании State and, следовательно, пытается назначить новый узел кластеру, после этого стручка запланирована на новый узел, как только он станет частью кластера, и все работает нормально.
Рекомендации: кластер Autoscaler
Вот несколько рекомендаций, которые следует иметь в виду.
Указание запроса стручков
Указание запроса помогает CA получить подробную информацию о запросе ресурса и, соответственно, может масштабировать кластер. Обязательно сохраните ценность реалистичной и не слишком высокой, так как это может привести к ложному масштабу и может сжечь ваши облачные бюджеты.
Иметь HPA для развертывания
HPA гарантирует, что PODS автоматически на основе увеличения запроса, который в идеале запустит CA для соответствующего масштабирования узлов и при необходимости масштабировать.
Избегайте работы по производственной нагрузке
Избегайте запуска ClusterAutoscaler, где мы можем иметь критически важное приложение, которое может иметь проблемы, будучи перенесенным на разные узлы.
Оригинал: «https://dev.to/chrisedrego/kubernetes-autoscaling-series-cluster-autoscaler-3m8l»