Управление и масштабирование сервисов Swarm
Развертывание сервиса
Для развертывания сервиса в Docker Swarm можно использовать команду docker service create. Например, для развертывания веб-сервера Nginx можно выполнить следующую команду:
docker service create --name nginx -p 80:80 nginx:latest
Это создаст новый сервис под названием "nginx" и развернёт его в рое. Сервис будет экспонировать порт 80 на хосте и перенаправлять его на порт 80 в контейнере.
Масштабирование сервиса
Можно масштабировать количество реплик (задач) для сервиса с помощью команды docker service scale. Например, для масштабирования сервиса "nginx" до 5 реплик можно выполнить:
docker service scale nginx=5
Это создаст 4 дополнительные задачи для сервиса "nginx", и узел-менеджер автоматически распределит их по доступным рабочим узлам.
Обновление сервиса
Можно обновить конфигурацию сервиса с помощью команды docker service update. Например, для обновления сервиса "nginx" на использование другой версии образа можно выполнить:
docker service update --image nginx:1.19 nginx
Это обновит сервис "nginx" на использование образа "nginx:1.19".
Мониторинг сервисов Swarm
Можно отслеживать состояние сервисов вашего роя с помощью команд docker service ls и docker service ps. Команда docker service ls покажет список всех работающих сервисов в рое, а команда docker service ps — состояние каждой задачи внутри сервиса.
## Список всех сервисов
docker service ls
## Список задач для конкретного сервиса
docker service ps nginx
Остановка узлов
Если вам нужно выполнить техническое обслуживание на узле, вы можете "остановить" его, что заставит менеджер перепланировать любые задачи, выполняющиеся на этом узле, на другие доступные узлы. Это можно сделать с помощью команды docker node update:
docker node update --availability drain <NODE-ID>
Замените <NODE-ID> на идентификатор узла, который вы хотите остановить.
Это основные принципы управления и масштабирования сервисов Docker Swarm. С этими знаниями вы сможете развертывать, масштабировать и обслуживать свои приложения, работающие в Docker Swarm.