Как автоматически масштабировать ваши рабочие нагрузки на DigitalOcean Kubernetes

Вступление

При работе с приложением, созданным на Kubernetes, разработчикам часто приходится планировать дополнительные https://kubernetes.io/docs/concepts. / workloads / pods / pod / [pods] для обработки времени пикового трафика или увеличения загрузки. По умолчанию планирование этих дополнительных модулей выполняется вручную; разработчик должен изменить количество требуемых replicas в https://kubernetes.io/docs/concepts/workloads/controllers/deployment/ [ объект развертывания], чтобы учесть увеличенный трафик, затем измените его обратно, когда дополнительные модули больше не нужны. Эта зависимость от ручного вмешательства может быть далеко не идеальной во многих сценариях. Например, ваша рабочая нагрузка может достигать пиковых часов посреди ночи, когда никто не спит, чтобы масштабировать модули, или ваш сайт может получить неожиданное увеличение трафика, когда ручной ответ не будет достаточно быстрым, чтобы справиться с нагрузкой. В этих ситуациях наиболее эффективным и наименее подверженным ошибкам подходом является автоматизация масштабирования ваших кластеров с помощью Hor Horizontal Pod Autoscaler (HPA) ,

Используя информацию с Metrics Server, HPA обнаружит увеличение использования ресурсов и ответит за счет масштабирования вашей рабочей нагрузки. Это особенно полезно для микросервисных архитектур и даст вашему кластеру Kubernetes возможность масштабировать развертывание на основе таких показателей, как загрузка ЦП. В сочетании с DigitalOcean Kubernetes (DOKS) управляемое предложение Kubernetes, предоставляющее разработчикам платформу для развертывания контейнерных приложений, с помощью HPA может создать автоматизированную инфраструктуру, которая быстро настраивает к изменениям трафика и нагрузки.

В этом руководстве вы настроите пример развертывания Nginx на DOKS, который может автоматически масштабироваться по горизонтали, чтобы учесть повышенную нагрузку на процессор. Это будет достигнуто путем развертывания Metrics Server в кластере для сбора метрик модуля, которые HPA будет использовать при определении времени масштабирования.

Предпосылки

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

  • Кластер DigitalOcean Kubernetes с вашим соединением, настроенным как значение по умолчанию + kubectl +. Инструкции по настройке + kubectl + показаны в шаге * Подключиться к вашему кластеру * при создании кластера. Чтобы создать кластер Kubernetes в DigitalOcean, см. Https://www.digitalocean.com/docs/kubernetes/quickstart/[Kubernetes Quickstart].

  • Менеджер пакетов Helm установлен на вашем локальном компьютере, а Tiller установлен на вашем кластере. Для этого выполните шаги 1 и 2 из https://www.digitalocean.com/community/tutorials/how-to-install-software-on-kubernetes-clusters-with-the-helm-package-manager[How Учебное пособие по установке программного обеспечения на кластеры Kubernetes с помощью диспетчера пакетов Helm.

Шаг 1 - Создание тестового развертывания

Чтобы продемонстрировать эффект HPA, вы сначала развернете приложение, которое вы будете использовать для автоматического масштабирования. В этом руководстве в качестве развертывания используется стандартный Nginx образ Docker, поскольку он полностью способен работать параллельно, широко используется в Kubernetes с такими инструментами, как https : //github.com/kubernetes/ingress-nginx [Nginx Ingress Controller] и легок в настройке. Это развертывание Nginx будет служить статической страницей * Welcome to Nginx! *, Которая стандартно входит в базовый образ. Если у вас уже есть развертывание, которое вы хотите масштабировать, не стесняйтесь использовать это развертывание и пропустите этот шаг.

Создайте пример развертывания, используя базовый образ Nginx, выполнив следующую команду. Вы можете заменить имя ++, если вы хотите дать своему развертыванию другое имя:

kubectl create deployment  --image=nginx:latest

Флаг + - image = nginx: latest + создаст развертывание из последней версии базового образа Nginx.

Через несколько секунд ваш модуль ++ раскрутится. Чтобы увидеть этот модуль, выполните следующую команду, которая покажет вам модули, запущенные в текущем пространстве имен:

kubectl get pods

Это даст вам вывод, подобный следующему:

OutputNAME                                                   READY   STATUS             RESTARTS   AGE
                                  1/1     Running            0          11s

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

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

Шаг 2 - Установка лимитов ЦП и запросов на ваше развертывание

На этом шаге вы должны установить requests и ограничения на использование процессора для вашего развертывания. Limits в Kubernetes установлены в развертывании, чтобы описать максимальный объем ресурса (процессор или память), который может использовать модуль. Requests устанавливаются в развертывании, чтобы описать, сколько этого ресурса необходимо на узле, чтобы этот узел считался действительным узлом для планирования. Например, если ваш веб-сервер имеет запрос памяти, установленный на 1 ГБ, для планирования будут рассматриваться только узлы с не менее 1 ГБ свободной памяти. Для автоматического масштабирования необходимо установить эти ограничения и запросы, поскольку HPA должен будет иметь эту информацию при принятии решений о масштабировании и планировании.

Чтобы установить запросы и ограничения, вам нужно будет внести изменения в только что созданное развертывание. В этом руководстве будет использоваться следующая команда +kubectl edit + ` для изменения конфигурации объектов API, хранящихся в кластере. Команда `+ kubectl edit +

Related