Подтвердить что ты не робот

Как настроить автомасштабирование на докере?

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

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

4b9b3361

Ответ 1

Короткий ответ. На данный момент нет простого способа сделать это с помощью Docker Swarm.

Docker Swarm (или Swarm mode) не поддерживает автомасштабирование машин из коробки. Вам нужно будет использовать другое решение для этого типа docker-machine для создания машин (с докере) в вашей инфраструктуре и связывания их с существующим кластером Swarm (с docker swarm join).

Это будет связано с большим количеством сценариев, но идея состоит в том, чтобы контролировать кластер для использования ЦП/памяти/сети (с помощью top или monit) и после того, как он выходит за пределы порогового значения (например, 70% от общих ресурсов кластера), вы вызываете script вызов docker-machine для масштабирования кластера. Используя ту же идею, вы также можете масштабировать дренирование и удалять узлы (предпочтительно Agent узлы) из существующего кластера роя после того, как вы находитесь ниже нижнего порога. p >

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

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

Обратите внимание, что для поддержания кворума для алгоритма распределенного консенсуса для Swarm требуется не менее 3 Manager узлов (рекомендуется 5). Таким образом, минимальная рекомендуемая нижняя граница - 5 узлов (которую вы можете расширить с помощью узлов Agent, поскольку ресурсы постепенно используются службами).

В какой-то степени вы также можете взглянуть на Docker InfraKit или Terraform для автоматизации инфраструктуры и мониторинга работоспособности.

Обновление. В настоящее время существует многообещающий кросс-платформенный автоскаллер, который поддерживает автоматический масштабирование задачи Swarm Mode : Orbiter. Несмотря на то, что все еще ничего не готово для автосканирования услуг/машин.

Ответ 2

Масштабирование довольно просто. При необходимости вы можете просто планировать контейнеры. Затем вы просто создаете script, который ищет ожидающий контейнер и масштабирует кластер. Например, если вы используете официальный шаблон CloudFormation для aws для роя, вы можете просто изменить желаемый номер в группе автомасштабирования. Пример итерации script может выглядеть так:

services=$(docker service ls --format '{{.ID}}')
for service in $services; do
  tasks=$(docker service ps $service --format '{{.ID}}')
  for task in $tasks; do
    if docker inspect $task --format '{{.Status}}' | grep 'insufficient resources' 1>/dev/null; then
      scale-up-cmd
    fi
  done
done

Ответ 3

В соответствии с эта проблема в GitHub, автомасштабирование на данный момент не поддерживается. Один из участников дискуссии указал, что:

Недоступно сегодня. Swarm использует Docker-Compose для масштабирования статически. Для автоматического масштабирования необходим мониторинг CPU/QPS. Рой не имеет что еще.

Был задан вопрос, есть ли текущие билеты, которые могут быть связаны с этим вопросом, чтобы эта функция могла быть реализована.