Следуй за мной на Twitter , рад принять ваши предложения по темам или улучшениям/Крису
Эта четвертая часть направлена на то, чтобы показать вам, как вы можете использовать автоматическое масштабирование в качестве стратегии масштабирования. Мы показали вам масштабирование с Желаемое состояние Но это, вероятно, еще более мощный
- Часть I — с самого начала, Часть I, Основы, Развертывание и Миникуба В этой части мы охватываем почему Kubernetes, некоторые истории и некоторые основные концепции, такие как развертывание, узлы, стручки.
- Часть II — Представляющие услуги и маркировка В этой части мы углубляем наши знания на стручках и узлах. Мы также вводим услуги и маркировка с помощью меток для запроса наших артефактов.
Часть III — масштабирование В этой части мы смотрим на масштабирование, используя Желаемый государство. Мы указываем, сколько POD мы хотим, и пусть Kubernetes делает тяжелый подъем с точки зрения обеспечения того, чтобы ваши стручки масштабировались до желаемого числа, но и поддерживая его, используя что-то называемое самовосстановлением.
Часть IV — Auto Scaling Мы тут
В этой статье мы осмотрим следующее:
- Почему автоматическое масштабирование Мы обсудим разные сценарии, в которых имеет смысл полагаться на Автоматическое масштабирование Определение его статически, как мы делаем с желаемое состояние
- Как , давайте поговорим о горизонтальном автоматическом масштабировании концепции/функции, которая позволяет нам масштабировать упругий путь.
- Лаборатория — давайте масштабироваться Мы рассмотрим, как на самом деле настроить это в
kubectl
и моделировать тонну входящих запросов. Затем мы проверем результаты и посмотрим, что Кубернаны действуют мы думаем
Ресурсы
- Горизонтальный POD Автоматический масштаб Это подробно описывает, как все работает. На потоке, а также уровень API
- Бесплатный аккаунт Azure Если вы хотите попробовать Aks, Azure Kubernetes Service, вам понадобится бесплатная аккаунт Azure
- Kubernetes.io Один из лучших ресурсов, чтобы узнать о Куберате, на этом официальном сайте Kubernetes по Google.
- Обзор Kubernetes Обзор Кубебени, все его части и как это работает
- Кубернаны в облаке Вы чувствуете, что знаете все о Кубернетах уже и просто хотите узнать, как использовать управляемый сервис? Тогда эта ссылка для вас
- Документация на AKS, Azure Kubernetes Service Azure Kubernetes Сервис, управляемый Кубернаны
- Лучшие практики на Акс Вы уже знаете Акс и хотите узнать, как использовать его лучше?
Почему
Так что в нашей последней части мы говорили о желаемое состояние . Это нормально, пока что-то непредвиденное не происходит, и вдруг вы получили большой наплыв трафика. Это, вероятно, произойдет с такими компаниями, как электронная коммерция вокруг большой продажи или поставщика билетов, когда вы выпускаете билеты на популярное мероприятие.
Такие события — это аномалия, которая заставляет вас быстро масштабировать. Другая сторона монеты, хотя в какой-то момент вам нужно уменьшить масштаб или вдруг у вас вдруг у вас может потребоваться оплата. То, что вы действительно хотите, это для масштабирования, чтобы действовать в эластичный Способ, чтобы он масштабировался, когда вам это нужно, и масштабируется, когда есть меньше трафика.
Как
Горизонтальное автоматическое масштабирование, что это значит?
Это концепция в Кубейнете, которые могут масштабировать количество потребностей под стручками. Это может сделать это на Контроллер репликации
, развертывание
или Набор реплики
Отказ Обычно он смотрит на использование ЦП, но может быть сделано, чтобы посмотреть на другие вещи, используя что-то называемое Поддержка пользовательских метрик
Так что это настраивается.
Он состоит из двух частей 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»