Как использовать команду docker node demote для понижения статуса менеджера кластера (swarm)

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

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

Введение

В этом лабораторном занятии мы рассмотрим, как управлять ролями узлов в Docker Swarm. В частности, мы сосредоточимся на использовании команды docker node demote для изменения роли узла-менеджера на роль рабочего узла.

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/exec("Execute Command in Container") docker/SystemManagementGroup -.-> docker/version("Show Docker Version") subgraph Lab Skills docker/ls -.-> lab-555180{{"Как использовать команду docker node demote для понижения статуса менеджера кластера (swarm)"}} docker/ps -.-> lab-555180{{"Как использовать команду docker node demote для понижения статуса менеджера кластера (swarm)"}} docker/exec -.-> lab-555180{{"Как использовать команду docker node demote для понижения статуса менеджера кластера (swarm)"}} docker/version -.-> lab-555180{{"Как использовать команду docker node demote для понижения статуса менеджера кластера (swarm)"}} end

Инициализация Docker Swarm

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

Перед инициализацией Swarm проверим текущую версию Docker.

docker version

Вы должны увидеть вывод, похожий на следующий, который указывает на версию Docker, установленную на виртуальной машине LabEx:

Client: Docker Engine - Community
 Version:           20.10.21
 API version:       1.41
 Go version:        go1.16.20
 Git commit:        baeda1f
 Built:             Tue Oct 25 18:01:18 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.21
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.20
  Git commit:       363bd3c
  Built:            Tue Oct 25 17:59:50 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.10
  GitCommit:        b4bd5d2b3d85c5e9b15588d67616e19a2a3a495d
 runc:
  Version:          1.1.4
  GitCommit:        v1.1.4-0-g5fd4c4d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

Теперь инициализируем Docker Swarm на этой машине. Поскольку это первый узел в Swarm, он автоматически станет узлом-менеджером. Мы будем использовать команду docker swarm init.

docker swarm init

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

Swarm initialized: current node (xxxxxxxxxxxx) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 172.17.0.2:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

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

Список узлов Swarm для определения менеджеров

На этом шаге мы выведем список узлов в Docker Swarm, чтобы определить, какие узлы являются менеджерами, а какие - рабочими. Поскольку мы только что инициализировали Swarm с одним узлом, мы ожидаем увидеть только один узел в списке, и его роль должна быть "Менеджер".

Для вывода списка узлов в Swarm мы используем команду docker node ls.

docker node ls

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

ID                            HOSTNAME            STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
xxxxxxxxxxxx *                labex-vm            Ready     Active         Leader           20.10.21

Разберем вывод:

  • ID: Уникальный идентификатор узла. Звездочка (*) рядом с идентификатором указывает на текущий узел, на котором вы выполняете команду.
  • HOSTNAME: Имя узла. В данном случае это labex-vm.
  • STATUS: Статус узла. Ready означает, что узел работает исправно и готов принимать задачи.
  • AVAILABILITY: Указывает, доступен ли узел для планирования задач. Active означает, что он доступен.
  • MANAGER STATUS: Показывает роль узла в Swarm. Leader указывает, что этот узел является основным менеджером в Swarm. Если бы были другие менеджеры, они отображались бы как Reachable. У рабочих узлов это поле было бы пустым.
  • ENGINE VERSION: Версия Docker Engine, запущенной на узле.

Как и ожидалось, мы видим один узел в списке, и его MANAGER STATUS равен Leader, что подтверждает, что это узел-менеджер.

Понижение статуса узла-менеджера

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

Для понижения статуса узла-менеджера мы используем команду docker node demote, за которой следует идентификатор узла или его имя. Из предыдущего шага мы знаем, что имя узла - labex-vm.

docker node demote labex-vm

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

Node labex-vm was demoted from a manager to a worker.

Этот вывод показывает, что узел labex-vm успешно был понижен в статусе с менеджера до рабочего узла в рамках Swarm.

Проверка роли узла после понижения статуса

На этом последнем шаге мы проверим, что роль узла успешно изменилась с менеджера на рабочего узла после операции понижения статуса. Мы снова используем команду docker node ls для вывода списка узлов в Swarm и проверки столбца MANAGER STATUS для нашего узла.

docker node ls

После выполнения команды вы должны увидеть вывод, похожий на следующий:

ID                            HOSTNAME            STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
xxxxxxxxxxxx                  labex-vm            Ready     Active                          20.10.21

Обратите внимание, что столбец MANAGER STATUS для узла labex-vm теперь пуст. Это означает, что узел больше не является менеджером и теперь действует как рабочий узел в Swarm. Звездочка (*) по-прежнему стоит рядом с идентификатором, потому что это узел, на котором вы выполняете команду, но его роль изменилась.

Это подтверждает, что понижение статуса прошло успешно.

Резюме

В этом практическом занятии (лабораторной работе) мы научились управлять узлами Docker Swarm, инициализируя кластер (swarm) и определяя узлы-менеджеры. Затем мы практиковались в использовании команды docker node demote для изменения роли узла-менеджера на роль рабочего узла. В конце мы проверили успешность понижения статуса, выведя список узлов кластера и убедившись в обновленной роли.