Как использовать команду docker service scale для масштабирования служб

DockerDockerBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабораторном занятии вы научитесь эффективно управлять количеством запущенных экземпляров (реплик) ваших служб в Docker Swarm. Мы начнем с создания реплицируемой службы, установив базовую конфигурацию с несколькими запущенными копиями.

После создания вы узнаете, как динамически изменять масштаб службы. Это включает увеличение масштаба одной службы для обработки повышенного спроса, уменьшение масштаба, даже до нулевого количества реплик, и, наконец, одновременное изменение масштаба нескольких служб для управления сложными развертываниями. С помощью практических команд вы получите практический опыт использования команды docker service scale для обеспечения высокой доступности и оптимизации ресурсов ваших контейнеризованных приложений.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/rm("Remove Container") docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") subgraph Lab Skills docker/ls -.-> lab-555231{{"Как использовать команду docker service scale для масштабирования служб"}} docker/ps -.-> lab-555231{{"Как использовать команду docker service scale для масштабирования служб"}} docker/rm -.-> lab-555231{{"Как использовать команду docker service scale для масштабирования служб"}} docker/inspect -.-> lab-555231{{"Как использовать команду docker service scale для масштабирования служб"}} docker/pull -.-> lab-555231{{"Как использовать команду docker service scale для масштабирования служб"}} end

Создание реплицируемой службы

На этом этапе мы научимся создавать реплицируемую службу с использованием Docker. Реплицируемая служба означает, что одновременно запускается несколько идентичных копий (реплик) вашей службы. Это обеспечивает высокую доступность и позволяет обрабатывать больше трафика.

Сначала давайте загрузим необходимый Docker-образ. В этом примере мы будем использовать образ alpine.

docker pull alpine

Вы должны увидеть вывод, указывающий на то, что образ загружается.

Теперь давайте создадим реплицируемую службу с именем my-alpine-service с 3 репликами. Мы будем использовать образ alpine и команду ping localhost. Эта команда будет выполняться внутри каждого контейнера и постоянно пинговать локальный хост.

docker service create --name my-alpine-service --replicas 3 alpine ping localhost

После выполнения этой команды Docker Swarm создаст службу и запустит указанное количество реплик. Вы должны увидеть вывод, подтверждающий создание службы.

Чтобы убедиться, что служба создана и реплики запущены, вы можете вывести список служб.

docker service ls

Вы должны увидеть my-alpine-service в списке с 3 репликами.

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

docker service inspect my-alpine-service

Эта команда выведет большой JSON-объект, содержащий подробную информацию о службе, включая количество реплик.

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

docker service ps my-alpine-service

Эта команда покажет статус каждой реплики (задачи) службы. Вы должны увидеть 3 задачи в списке, каждая из которых находится в запущенном состоянии.

Увеличение масштаба одной службы

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

На предыдущем этапе мы создали службу с именем my-alpine-service с 3 репликами. Теперь давайте увеличим масштаб этой службы до 5 реплик. Для этого мы можем использовать команду docker service scale.

docker service scale my-alpine-service=5

После выполнения этой команды Docker Swarm добавит 2 новые реплики в службу. Вы должны увидеть вывод, указывающий на то, что служба обновляется.

Чтобы убедиться, что масштаб службы был увеличен, вы можете снова вывести список служб.

docker service ls

Теперь вы должны увидеть my-alpine-service в списке с 5 репликами.

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

docker service ps my-alpine-service

Эта команда покажет статус всех 5 реплик (задач) службы. Вы должны увидеть 5 задач в списке, причем новые будут переходить в запущенное состояние.

Уменьшение масштаба одной службы до нуля

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

На предыдущем этапе мы увеличили масштаб службы my-alpine-service до 5 реплик. Теперь давайте уменьшим масштаб этой службы до 0 реплик. Мы снова будем использовать команду docker service scale.

docker service scale my-alpine-service=0

После выполнения этой команды Docker Swarm остановит и удалит все запущенные реплики службы. Вы должны увидеть вывод, указывающий на то, что служба обновляется.

Чтобы убедиться, что масштаб службы был уменьшен до нуля, вы можете вывести список служб.

docker service ls

Теперь вы должны увидеть my-alpine-service в списке с 0 репликами.

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

docker service ps my-alpine-service

Эта команда покажет статус задач. Поскольку мы уменьшили масштаб до нуля, в списке не должно быть запущенных задач. Вы можете увидеть задачи в состоянии "Shutdown", что означает, что они были остановлены.

Масштабирование нескольких служб

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

Сначала создадим еще одну службу. Мы создадим службу с именем my-nginx-service, используя образ nginx с одной репликой. Сначала нам нужно скачать образ nginx.

docker pull nginx

Вы должны увидеть вывод, указывающий на то, что образ nginx скачивается.

Теперь создадим службу my-nginx-service.

docker service create --name my-nginx-service --replicas 1 nginx

Вы должны увидеть вывод, подтверждающий создание службы my-nginx-service.

Теперь у нас есть две службы: my-alpine-service (в настоящее время масштабирована до 0) и my-nginx-service (масштабирована до 1). Масштабируем обе службы сразу. Мы масштабируем my-alpine-service до 2 реплик и my-nginx-service до 3 реплик.

docker service scale my-alpine-service=2 my-nginx-service=3

После выполнения этой команды Docker Swarm обновит обе службы в соответствии с указанным количеством реплик. Вы должны увидеть вывод, указывающий на то, что обе службы обновляются.

Чтобы убедиться, что обе службы были масштабированы, вы можете вывести список служб.

docker service ls

Теперь вы должны увидеть my-alpine-service в списке с 2 репликами и my-nginx-service с 3 репликами.

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

docker service ps my-alpine-service

Это покажет 2 запущенные задачи для my-alpine-service.

docker service ps my-nginx-service

Это покажет 3 запущенные задачи для my-nginx-service.

Наконец, очистим созданные нами службы. Мы можем удалить обе службы с помощью команды docker service rm.

docker service rm my-alpine-service my-nginx-service

Вы должны увидеть вывод, подтверждающий удаление обеих служб.

Чтобы убедиться, что службы удалены, выведите список служб еще раз.

docker service ls

В списке не должно быть служб.

Резюме

В этом практическом занятии мы научились управлять масштабированием служб Docker. Мы начали с создания реплицируемой службы с указанным количеством реплик, тем самым продемонстрировав начальную развертку отказоустойчивого приложения. Затем мы изучили, как динамически регулировать количество запущенных экземпляров для одной службы: сначала увеличивая масштаб, чтобы справиться с повышенным спросом, а затем уменьшая его, в том числе до нуля, чтобы фактически остановить службу.

Наконец, мы научились масштабировать несколько служб одновременно, показав способность управлять распределением ресурсов для нескольких приложений в среде Docker Swarm с помощью одной команды. Эти шаги предоставили практический опыт использования команды docker service scale для эффективного управления жизненным циклом и использованием ресурсов служб.