Назад | Перейти на главную страницу

Горизонтальные направляющие автомасштабирования на GKE - в частности, выбор веб-серверов и отличия от обычных развертываний

Вот отличная запись о масштабировании с помощью heroku (и это относится к традиционным развертываниям).

Учитывая, что мы хотеть чтобы контейнерные приложения были единым процессом, как мы получаем:

в среде Kubernetes / GKE, которая в полной мере использует горизонтальное автоматическое масштабирование контейнера?

Предположим, что мое развертывание выглядит примерно так (кредит @ nithinmallya4):

Я еще не выбрал веб-сервер, и по умолчанию rackup служит WEBrick. Я думал просто изменить это на многопоточную Puma.

Меня беспокоит то, что autoscaler работает на базе процессора, а не на основании идеи, что это consumed by a current http/s request, поэтому это может не пригодиться.

  1. Я правильно понимаю автомасштабирование?
  2. Какова идеальная архитектура масштабирования вверх / вниз?

Наши текущие мысли:

В GKE мы поддерживаем HPA с настраиваемыми метриками с версии 1.9. Если у вас есть группа модулей с горизонтальным автомасштабированием внутри кластера, каждая из которых экспортирует настраиваемую метрику, вы можете установить среднее значение для каждого модуля для этой метрики.

Примером этого может быть автоматическое масштабирование развертывания внешнего интерфейса, при котором каждая реплика экспортирует свой текущий QPS. Можно установить среднее целевое количество QPS на интерфейсный модуль и использовать HPA для масштабирования развертывания соответственно вверх и вниз. Вы можете найти документацию и руководство, объясняющее, как это настроить, здесь: https://cloud.google.com/kubernetes-engine/docs/tutorials/custom-metrics-autoscaling

Kubernetes 1.10, доступный на GKE, расширит поддержку пользовательских метрик, включив метрики, не привязанные ни к одному объекту Kubernetes. Это даст вам возможность масштабировать развертывание на основе любых перечисленных здесь показателей, например количества сообщений в очереди Google Pub / Sub.

HPA зависит от загрузки ЦП. Вы можете включить Автоматическое масштабирование кластера в GKE (сейчас в бета-версии), чтобы настроить размер кластера Kubernetes в зависимости от рабочей нагрузки. Для получения более подробной информации проверьте автоматическое масштабирование кластера. FAQ на github.