Как использовать команду docker node promote для повышения статуса рабочего узла

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

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

Введение

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

После настройки вы определите рабочий узел в кластере, а затем используете команду docker node promote, чтобы изменить его роль на управляющую. Наконец, вы проверите новую роль узла, чтобы убедиться, что повышение статуса прошло успешно. Это практическое упражнение продемонстрирует важный аспект управления кластером 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/SystemManagementGroup -.-> docker/version("Show Docker Version") docker/SystemManagementGroup -.-> docker/system("Manage Docker") subgraph Lab Skills docker/ls -.-> lab-555183{{"Как использовать команду docker node promote для повышения статуса рабочего узла"}} docker/version -.-> lab-555183{{"Как использовать команду docker node promote для повышения статуса рабочего узла"}} docker/system -.-> lab-555183{{"Как использовать команду docker node promote для повышения статуса рабочего узла"}} end

Инициализация кластера Docker Swarm

На этом шаге вы инициализируете кластер Docker Swarm на виртуальной машине LabEx. Кластер Docker Swarm представляет собой группу (кластер) узлов Docker, работающих в режиме swarm. Режим swarm позволяет управлять кластером узлов Docker как единым виртуальным системой.

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

docker version

Вы должны увидеть вывод, похожий на следующий, который указывает на то, что версия Docker - 20.10.21:

Client: Docker Engine - Community
 Version:           20.10.21
 API version:       1.41
 Go version:        go1.18.9
 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.18.9
  Git commit:       363bd3a
  Built:            Tue Oct 25 17:59:35 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.10
  GitCommit:        b4bd5d2bb63a5d10182b7e90689158e7c7b9b06b
 runc:
  Version:          1.1.4
  GitCommit:        v1.1.4-0-g5fd4c4d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

Теперь инициализируем кластер Docker Swarm. При инициализации кластера текущий узел становится первым управляющим узлом. Управляющие узлы выполняют задачи управления кластером, такие как сохранение состояния кластера, планирование сервисов и предоставление API режима swarm.

Используйте команду docker swarm init для инициализации кластера. Мы укажем адрес для объявления (advertise address), чтобы другие узлы могли присоединиться к кластеру с использованием IP - адреса виртуальной машины. Замените YOUR_VM_IP_ADDRESS на фактический IP - адрес вашей виртуальной машины LabEx. Вы можете найти этот IP - адрес в деталях среды LabEx.

docker swarm init --advertise-addr YOUR_VM_IP_ADDRESS

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

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

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

    docker swarm join --token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxx YOUR_VM_IP_ADDRESS:2377

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

Присоединение рабочего узла к кластеру

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

Для присоединения узла в качестве рабочего вам нужна команда присоединения, предоставленная после инициализации кластера. Эта команда включает токен присоединения к кластеру (swarm join token), а также IP - адрес и порт управляющего узла.

Если у вас нет команды присоединения из предыдущего шага, вы можете получить ее на управляющем узле с помощью команды docker swarm join-token worker.

docker swarm join-token worker

Эта команда выведет команду присоединения для рабочего узла:

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

    docker swarm join --token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxx YOUR_VM_IP_ADDRESS:2377

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

docker swarm join --token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxx YOUR_VM_IP_ADDRESS:2377

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

This node joined a swarm as a worker.

Это означает, что ваша единственная виртуальная машина теперь действует как управляющий и рабочий узел в рамках кластера.

Вывод списка узлов кластера и определение рабочего узла

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

Для вывода списка узлов в кластере используйте команду docker node ls. Эта команда предоставляет информацию о каждом узле в кластере, включая его идентификатор (ID), имя узла (hostname), статус, доступность, статус управляющего узла и версию Docker Engine.

docker node ls

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

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

В этом выводе вы увидите две записи, обе с именем узла labex-vm. Это происходит потому, что ваша единственная виртуальная машина действует как два узла в кластере: один управляющий и один рабочий.

  • Узел с MANAGER STATUS равным Leader - это управляющий узел, который вы инициализировали на первом шаге.
  • Узел без указанного MANAGER STATUS - это рабочий узел, который вы присоединили на втором шаге.

Запишите идентификатор (ID) рабочего узла. Вам понадобится этот идентификатор на следующем шаге, чтобы повысить его до статуса управляющего узла. Идентификатор - это уникальный идентификатор каждого узла в кластере.

Повышение статуса рабочего узла до управляющего

На предыдущем шаге вы вывели список узлов в кластере и идентифицировали рабочий узел по его идентификатору (ID) и отсутствию статуса MANAGER STATUS. Теперь вы повышаете этот рабочий узел до статуса управляющего узла. Повышение статуса рабочего узла до управляющего увеличивает количество управляющих узлов в вашем кластере, что важно для обеспечения высокой доступности и отказоустойчивости в производственной среде.

Для повышения статуса узла используйте команду docker node promote, за которой следует идентификатор (ID) узла, который вы хотите повысить. Вы получили идентификатор рабочего узла на предыдущем шаге.

Замените WORKER_NODE_ID на фактический идентификатор вашего рабочего узла.

docker node promote WORKER_NODE_ID

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

Node WORKER_NODE_ID was promoted to a manager.

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

Проверка новой роли узла

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

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

docker node ls

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

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

Обратите внимание, что узел, который ранее был перечислен без статуса MANAGER STATUS, теперь показывает Reachable в столбце MANAGER STATUS. Это подтверждает, что узел был успешно повышен в статусе и теперь кластер распознает его как управляющий узел. Узел со статусом Leader - это основной управляющий узел, в то время как узел со статусом Reachable - это вторичный управляющий узел.

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

Резюме

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