Как добавить ноду (worker node) в Docker Swarm кластер?

«Как добавить ноду (worker node) в Docker Swarm кластер?» — вопрос из категории Docker, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Добавление ноды в Swarm кластер — это процесс присоединения машины (физической или виртуальной) к управляемой группе Docker-демонов. Нода может быть manager (участвует в RAFT-консенсусе и управлении) или worker (исполняет задачи).

Процесс добавления worker-ноды:

  1. Инициализируйте Swarm на первой машине (manager node).

    # Выполняется на будущей manager-ноде
    docker swarm init --advertise-addr <MANAGER_IP>
    # Например: docker swarm init --advertise-addr 192.168.1.100

    Команда выведет токен для присоединения worker-нод:

    docker swarm join --token SWMTKN-1-... 192.168.1.100:2377
  2. На новой машине (worker node) выполните команду join. Скопируйте и выполните команду, выведенную на шаге 1.

    # Выполняется на машине, которую хотим добавить как worker
    docker swarm join --token SWMTKN-1-0abcde... 192.168.1.100:2377

    В случае успеха вы увидите сообщение: This node joined a swarm as a worker.

  3. Проверьте список нод на manager.

    docker node ls

    Вывод покажет всех нодов, их статус (Ready/Down) и роль (Leader, Reachable, Worker).

Управление токенами и устранение неполадок:

  • Если токен утерян, его можно посмотреть на manager-ноде:
    docker swarm join-token worker  # Для токена worker
    docker swarm join-token manager # Для токена manager
  • Порты: Убедитесь, что порт 2377/tcp открыт на firewall между нодами. Для overlay-сетей также нужны порты 7946 (UDP/TCP) и 4789 (UDP).
  • Чтобы нода покинула Swarm, выполните на ней docker swarm leave. Если нода была manager, используйте флаг --force.
  • Для production: Всегда используйте несколько manager-нод (3, 5, 7) для отказоустойчивости. Добавляйте manager-ноды, используя docker swarm join-token manager.