Учебники

Кубернетес – автомасштабирование

Автоматическое масштабирование является одной из ключевых функций в кластере Kubernetes. Это особенность, в которой кластер способен увеличивать количество узлов при увеличении потребности в ответе на обслуживание и уменьшать количество узлов при уменьшении потребности. Эта функция автоматического масштабирования в настоящее время поддерживается в Google Cloud Engine (GCE) и Google Container Engine (GKE) и скоро начнет работать с AWS.

Чтобы настроить масштабируемую инфраструктуру в GCE, нам нужно сначала активировать проект GCE с включенными функциями облачного мониторинга Google, регистрации в облаке Google и включения стека-драйвера.

Сначала мы настроим кластер с несколькими работающими в нем узлами. После этого нам нужно установить следующую переменную окружения.

Переменная среды

export NUM_NODES = 2
export KUBE_AUTOSCALER_MIN_NODES = 2
export KUBE_AUTOSCALER_MAX_NODES = 5
export KUBE_ENABLE_CLUSTER_AUTOSCALER = true

После этого мы запустим кластер, запустив kube-up.sh . Это создаст кластер вместе с автоматическим скалярным дополнением кластера.

./cluster/kube-up.sh

При создании кластера мы можем проверить наш кластер, используя следующую команду kubectl.

$ kubectl get nodes
NAME                             STATUS                       AGE
kubernetes-master                Ready,SchedulingDisabled     10m
kubernetes-minion-group-de5q     Ready                        10m
kubernetes-minion-group-yhdx     Ready                        8m

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

$ kubectl autoscale deployment <Application Name> --cpu-percent = 50 --min = 1 --
max = 10

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

Мы можем проверить состояние автоскалера, выполнив команду $ kubclt get hpa . Мы увеличим нагрузку на модули, используя следующую команду.

$ kubectl run -i --tty load-generator --image = busybox /bin/sh
$ while true; do wget -q -O- http://php-apache.default.svc.cluster.local; done

Мы можем проверить hpa , выполнив команду $ kubectl get hpa .

$ kubectl get hpa
NAME         REFERENCE                     TARGET CURRENT
php-apache   Deployment/php-apache/scale    50%    310%

MINPODS  MAXPODS   AGE
  1        20      2m
  
$ kubectl get deployment php-apache
NAME         DESIRED    CURRENT    UP-TO-DATE    AVAILABLE   AGE
php-apache      7          7           7            3        4m

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

jsz@jsz-desk2:~/k8s-src$ kubectl get pods
php-apache-2046965998-3ewo6 0/1        Pending 0         1m
php-apache-2046965998-8m03k 1/1        Running 0         1m
php-apache-2046965998-ddpgp 1/1        Running 0         5m
php-apache-2046965998-lrik6 1/1        Running 0         1m
php-apache-2046965998-nj465 0/1        Pending 0         1m
php-apache-2046965998-tmwg1 1/1        Running 0         1m
php-apache-2046965998-xkbw1 0/1        Pending 0         1m

И, наконец, мы можем получить статус узла.