Рубрики
Uncategorized

Узнайте Кубернаны, часть IV, AutoScaling

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

Следуй за мной на Twitter , рад принять ваши предложения по темам или улучшениям/Крису

Эта четвертая часть направлена на то, чтобы показать вам, как вы можете использовать автоматическое масштабирование в качестве стратегии масштабирования. Мы показали вам масштабирование с Желаемое состояние Но это, вероятно, еще более мощный

  • Часть I — с самого начала, Часть I, Основы, Развертывание и Миникуба В этой части мы охватываем почему Kubernetes, некоторые истории и некоторые основные концепции, такие как развертывание, узлы, стручки.
  • Часть II — Представляющие услуги и маркировка В этой части мы углубляем наши знания на стручках и узлах. Мы также вводим услуги и маркировка с помощью меток для запроса наших артефактов.
  • Часть III — масштабирование В этой части мы смотрим на масштабирование, используя Желаемый государство. Мы указываем, сколько POD мы хотим, и пусть Kubernetes делает тяжелый подъем с точки зрения обеспечения того, чтобы ваши стручки масштабировались до желаемого числа, но и поддерживая его, используя что-то называемое самовосстановлением.

  • Часть IV — Auto Scaling Мы тут

В этой статье мы осмотрим следующее:

  • Почему автоматическое масштабирование Мы обсудим разные сценарии, в которых имеет смысл полагаться на Автоматическое масштабирование Определение его статически, как мы делаем с желаемое состояние
  • Как , давайте поговорим о горизонтальном автоматическом масштабировании концепции/функции, которая позволяет нам масштабировать упругий путь.
  • Лаборатория — давайте масштабироваться Мы рассмотрим, как на самом деле настроить это в kubectl и моделировать тонну входящих запросов. Затем мы проверем результаты и посмотрим, что Кубернаны действуют мы думаем

Ресурсы

Почему

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

Такие события — это аномалия, которая заставляет вас быстро масштабировать. Другая сторона монеты, хотя в какой-то момент вам нужно уменьшить масштаб или вдруг у вас вдруг у вас может потребоваться оплата. То, что вы действительно хотите, это для масштабирования, чтобы действовать в эластичный Способ, чтобы он масштабировался, когда вам это нужно, и масштабируется, когда есть меньше трафика.

Как

Горизонтальное автоматическое масштабирование, что это значит?

Это концепция в Кубейнете, которые могут масштабировать количество потребностей под стручками. Это может сделать это на Контроллер репликации , развертывание или Набор реплики Отказ Обычно он смотрит на использование ЦП, но может быть сделано, чтобы посмотреть на другие вещи, используя что-то называемое Поддержка пользовательских метрик Так что это настраивается.

Он состоит из двух частей A Ресурс и а контроллер Отказ контроллер Проверяет использование или любой метрики, который вы решили, чтобы убедиться, что количество реплик совпадает с вашей спецификацией. Если это нужно, он вращается на большее количество стручков или удаляет их. По умолчанию проверяется каждый 15 секунды Но вы можете изменить это, глядя на флаг под названием - Окоризонтальный-стручок-автоскалер-синхронизм Отказ

Базовый алгоритм, который решает количество реплик, похоже на это:

desiredReplicas = ceil[currentReplicas * ( currentMetricValue / desiredMetricValue )]

Лаборатория — давайте масштабироваться

Хорошо, первое, что нам нужно сделать, это масштабировать наше развертывание, чтобы использовать что-то другое, кроме Желаемое состояние Отказ

У нас есть две вещи, которые нам нужно указать, когда мы делаем AutoScaling:

  • Мин/Макс мы определяем минимальный и максимальный с точки зрения того, сколько стручков мы хотим
  • ЦП В этой версии мы устанавливаем определенный процент использования процессора. Когда он идет выше, что он масштабируется по мере необходимости. Думать об этом как Если пункт, если значение CPU больше порогового значения, попробуйте масштабировать

Настраивать

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

minikube addons list

Если это выглядит как выше, мы все хорошо. Почему я это говорю? Ну, что нам нужно, чтобы можно было автоматически, в том, что Heappster. и Метрики-сервер Добавьте ONS включены.

Heapster обеспечивает анализ мониторинга кластера контейнера и анализа производительности.

Метрики Сервер предоставляют метрики через API ресурсов Metrics. Горизонтальный POD AutoScaLer использует эту API для сбора метрик

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

minikube addons enable heapster

и

minikube addons enable metrics-server

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

minikube start --extra-config kubelet.EnableCustomMetrics=true

Хорошо, теперь мы рад идти.

Запуск эксперимента

Нам нужно сделать следующее, чтобы запустить наш эксперимент

  • Создать развертывание
  • Применить автоскалинг
  • Бомбардировать Развертывание с входящими запросами
  • Смотреть Автоматический масштабирование того, как это меняется

Создать развертывание

kubectl run php-apache --image=k8s.gcr.io/hpa-example --requests=cpu=200m --expose --port=80

Выше мы создаем развертывание php-apache и разоблачить его как услугу по порту 80 Отказ Мы видим, что мы используем изображение k8s.gcr.io/hpa-example.

Это должно сказать нам следующее:

service/php-apache created
deployment.apps/php-apache created

Автоскалинг

Далее мы будем использовать команду аутокал . Мы будем использовать это так:

kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10

Это должно сказать что-то вроде:

horizontalpodautoscaler.autoscaling/php-apache autoscaled

Выше мы применяем автоматическое масштабирование на развертывании php-apache и как вы можете видеть, мы применяем оба Min-Max и ЦП На основании автоматического масштабирования, что означает, что мы даем правило для того, как должно произойти автоматическое масштабирование:

Если загрузка ЦП — > = 50% Создайте новый POD, но только максимум 10 стручек. Если нагрузка низкая, вернитесь постепенно к одному POD

Bombard с просьбами

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

Во-первых, давайте проверим текущее состояние нашего Горизонтальный POD Auto-Scaler или HPA Короче, набрав:

kubectl get hpa

Это должно дать нам что-то вроде этого:

Вышесказанное показывает нам два предмета информации. Первый — это Цели столбец, который показывает наше утилизацию процессора, фактическое значение использования/триггера . Следующий голос — это колонна Реплики Это показывает нам количество копий, которое является 1 сейчас.

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

Далее мы создаем контейнер, используя эту команду:

kubectl run -i --tty load-generator --image=busybox /bin/sh

Это должно отвести нас к подсказке в контейнере. За этим следует:

while true; do wget -q -O- http://php-apache.default.svc.cluster.local; done

Команда выше должна привести к тому, что что-то выглядит так.

Это просто будет продолжаться, пока не ударишь Ctrl + C , но оставьте это сейчас.

Это бросает тонну по запросам в Пока правда петля.

Я думал …| Пока правда Петли были плохими?

Они, но мы собираемся запустить его в течение минуты, чтобы можно было бы произойти автоматическое масштабирование. Да, процессор будет звучать много, но не волнуйтесь:)

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

kubectl get hpa

Теперь следует показать что-то вроде этого:

Как вы можете видеть из вышеперечисленного столбца Цели Выглядит иначе и сейчас говорит 339%/50% Это означает текущую нагрузку на CPU и Реплики это 7 Это означает, что он ушел от 1 до 7 реплик. Так как вы можете видеть, мы бомбардируем это довольно сложно.

Теперь перейдите ко второму терминалу и нажмите Ctrl + C. Или у вас будет такая ситуация:

На самом деле он займет несколько минут для Kubernetes остыть и вернуть значения к нормальному. Первый взгляд на ситуацию под стружей показывает нам следующее:

kubectl get pods

Как вы можете видеть, у нас есть 7 подток и работает еще, но давайте подождем минуту или два, и он должен выглядеть так:

Хорошо, теперь мы вернемся к нормальной жизни.

Резюме

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

Нам также удалось узнать несколько новых команд Kubernetes в то время как у него и посмотреть Автоматическое масштабирование На работе, давая нам новые стручки на основе нашей спецификации.

Оригинал: «https://dev.to/azure/kubernetes-from-the-beginning-part-iv-autoscaling-54l6»