Автоматическое масштабирование стручков или контейнеров

Может ли кто-нибудь сказать мне, можно ли масштабировать либо количество контейнеров в модуле, либо количество контейнеров (содержащих только 1 контейнер)?

Я хочу иметь установку, в которой в идеале работает 0 экземпляров. Затем всякий раз, когда пользователь попадает на страницу, он должен добавить еще один экземпляр модуля / контейнера, чтобы у каждого пользователя была собственная среда. Когда пользователь покидает определенную среду, она должна быть прекращена. Можно ли это установить для любых n-пользователей. Например. иметь ограничение в 5 пользователей на модуль / контейнер. Первый человек, который присоединяется, означает создание нового модуля / контейнера. Второй просто прибывает в тот же п / п и так до пятого. Если присоединится шестой пользователь, я хочу, чтобы он создал новый модуль / контейнер для этого пользователя. Под / контейнер должен быть завершен, если у него 0 подключений.

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

Будучи довольно новичком в этом материале docker / kubernetes (используя minikube в качестве теста прямо сейчас), я надеюсь, что вы укажете мне правильное направление. Спасибо!


person mfindinge    schedule 24.03.2020    source источник
comment
Вы должны посмотреть, как это делает JupyterHub. В основном вам нужна служба (в идеале с более чем одной связанной репликой), которая может порождать новые определения _1 _ / _ 2 _ / _ 3_.   -  person daniel.eichten    schedule 24.03.2020
comment
Проверяли ли вы информацию о HPA: kubernetes.io/docs/tasks/ run-application / с помощью Prometheus: prometheus.io? Ваш миникуб локальный или облачный?   -  person PjoterS    schedule 24.03.2020
comment
В настоящее время он местный. Идея состоит в том, что я проверяю, работает ли моя желаемая установка локально с одним узлом и с помощью minikube. Затем, если я получу желаемый результат, я надеюсь масштабировать его в облаке с несколькими узлами. Обязательно изучу оба ваших комментария!   -  person mfindinge    schedule 24.03.2020


Ответы (1)


Как я уже упоминал в комментариях, вы должны проверить Horizontal Pod Autoscaler и Cluster Autoscaler.

Horizontal Pod Autoscaler может увеличивать или уменьшать количество ваших модулей. зависит от метрики. Если вы хотите использовать метрики CPU или Memory, они встроены в Kubernetes. Информация о том, как использовать, подробно описана в пошаговом руководстве по горизонтальному модулю Autoscaler < / а>.

Если вы будете использовать HPA пример из документации, имейте в виду, HPA потребуется несколько минут, чтобы собрать показатели и затем отобразить их.

Если вы собираетесь использовать другие метрики (те, что вы упомянули в вопросе), вам следует использовать custom metrics или external metrics, в зависимости от ваших потребностей. Чтобы получить эти метрики, вам нужно будет развернуть агентов метрик, которые будут собирать эти данные. Одним из самых популярных является адаптер Prometheus. Я уже упоминал об этом при использовании kubeadm или minikube здесь.

Если вы хотите автоматически масштабировать узлы, ознакомьтесь с Cluster Autoscaler. Поскольку CA необходимо добавить / удалить узел в любое время, рекомендуется использовать облачную среду.

Для AWS вы можете проверить эту статью, и если вы Если бы вы использовали GKE, вам следует проверить эту статью.

person PjoterS    schedule 26.03.2020