Как использовать команду docker swarm join для добавления узлов

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

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

Введение

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

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/NetworkOperationsGroup(["Network Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/exec("Execute Command in Container") docker/NetworkOperationsGroup -.-> docker/network("Manage Networks") subgraph Lab Skills docker/run -.-> lab-555241{{"Как использовать команду docker swarm join для добавления узлов"}} docker/ps -.-> lab-555241{{"Как использовать команду docker swarm join для добавления узлов"}} docker/exec -.-> lab-555241{{"Как использовать команду docker swarm join для добавления узлов"}} docker/network -.-> lab-555241{{"Как использовать команду docker swarm join для добавления узлов"}} end

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

На этом этапе мы узнаем, как присоединить узел к существующему кластеру Docker Swarm в качестве рабочего узла (worker). Рабочий узел - это машина, которая запускает службы, развернутые в кластере. Он получает и выполняет задачи, назначенные узлами-менеджерами (manager).

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

Сначала имитируем наличие токена присоединения. В реальной ситуации вы получите этот токен с узла-менеджера с помощью команды docker swarm join-token worker. В рамках этого практического занятия мы будем использовать заглушку для токена.

Предположим, что команда присоединения, предоставленная менеджером, выглядит примерно так:

docker swarm join --token SWMTKN-1-abcdefghijklmnopqrstuvwxyz-1234567890abcdef --advertise-addr <THIS_NODE_IP> <MANAGER_IP>:2377

В этой команде:

  • docker swarm join: Это команда для присоединения узла к кластеру.
  • --token SWMTKN-1-abcdefghijklmnopqrstuvwxyz-1234567890abcdef: Это уникальный токен, который аутентифицирует узел в кластере.
  • --advertise-addr <THIS_NODE_IP>: Этот флаг указывает IP-адрес, который присоединяющийся узел будет использовать для объявления себя другим узлам в кластере. Замените <THIS_NODE_IP> на фактический IP-адрес узла, который вы присоединяете.
  • <MANAGER_IP>:2377: Это адрес узла-менеджера в кластере. Присоединяющийся узел подключается к этому адресу, чтобы присоединиться к кластеру. Замените <MANAGER_IP> на фактический IP-адрес узла-менеджера. Порт по умолчанию для кластера - 2377.

Поскольку мы работаем в среде одной виртуальной машины (VM) в рамках этого практического занятия, мы имитируем процесс присоединения с помощью упрощенной команды. Мы будем использовать 127.0.0.1 в качестве IP-адреса менеджера и заглушку для токена.

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

docker swarm join --token SWMTKN-1-abcdefghijklmnopqrstuvwxyz-1234567890abcdef 127.0.0.1:2377

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

Присоединение узла к кластеру в качестве менеджера

На этом этапе мы узнаем, как присоединить узел к существующему кластеру Docker Swarm в качестве менеджера (manager). Узлы-менеджеры обрабатывают задачи управления кластером, такие как сохранение состояния кластера, планирование запуска служб и обработка операций, охватывающих весь кластер. Кластер может иметь несколько узлов-менеджеров для обеспечения высокой доступности.

Как и при присоединении в качестве рабочего узла (worker), для присоединения в качестве менеджера вам нужен токен присоединения от существующего узла-менеджера. Команда для получения токена присоединения менеджера от существующего узла-менеджера - docker swarm join-token manager.

Предположим, что команда присоединения для узла-менеджера выглядит примерно так:

docker swarm join --token SWMTKN-1-abcdefghijklmnopqrstuvwxyz-1234567890abcdef --advertise-addr <THIS_NODE_IP> <MANAGER_IP>:2377

Обратите внимание, что структура команды такая же, как при присоединении в качестве рабочего узла, но токен отличается. Токен для присоединения узла-менеджера уникален и предоставляет более высокие привилегии.

В рамках этого практического занятия мы снова имитируем процесс присоединения в среде одной виртуальной машины (VM), используя заглушку для токена менеджера и 127.0.0.1 в качестве IP-адреса менеджера.

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

docker swarm join --token SWMTKN-1-ABCDEFGHIJKLMNOPQRSTUVWXYZ-0987654321fedcba 127.0.0.1:2377

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

Понимание и использование флага --availability при присоединении

На этом этапе мы рассмотрим флаг --availability, который можно использовать при присоединении узла к кластеру Docker Swarm. Флаг --availability контролирует, доступен ли узел для планирования задач. Это особенно полезно для управления обслуживанием узла или временного вывода узла из эксплуатации без его удаления из кластера.

Флаг --availability может принимать одно из трех значений:

  • active: Узел доступен для планирования задач. Это состояние по умолчанию для вновь присоединенного узла.
  • pause: Новые задачи не будут назначаться на этот узел, но существующие задачи будут продолжать выполняться.
  • drain: Новые задачи не будут назначаться на этот узел, и существующие задачи будут остановлены и перепланированы на другие доступные узлы.

При присоединении узла вы можете указать его начальную доступность. Например, чтобы присоединить узел в качестве рабочего узла (worker) с доступностью, установленной на drain, вы можете использовать такую команду:

docker swarm join --token SWMTKN-1-abcdefghijklmnopqrstuvwxyz-1234567890abcdef --availability drain --advertise-addr <THIS_NODE_IP> <MANAGER_IP>:2377

В рамках этого практического занятия мы имитируем присоединение узла с флагом --availability drain. Опять же, в нашей среде одной виртуальной машины (VM) мы будем использовать заглушку для токена и 127.0.0.1 в качестве IP-адреса менеджера.

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

docker swarm join --token SWMTKN-1-abcdefghijklmnopqrstuvwxyz-1234567890abcdef --availability drain 127.0.0.1:2377

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

Резюме

В рамках этого практического занятия мы научились использовать команду docker swarm join для добавления узлов в существующий кластер Docker Swarm. Мы изучили процесс присоединения узла в качестве рабочего узла (worker), поняли роль токена присоединения, адреса менеджера и флага --advertise-addr. Мы также рассмотрели, как присоединить узел в качестве менеджера (manager), для чего требуется другой токен присоединения, полученный от узла-менеджера. Наконец, мы узнали о флаге --availability и о том, как его можно использовать во время процесса присоединения для управления начальной доступностью узла в кластере.