Докер Рой выдает ошибку "Рой уже часть Роя" - PullRequest
0 голосов
/ 16 мая 2018

рой Docker выдавал ошибку «Рой уже является частью роя», когда я присоединяю новый узел к существующему узлу

Я запускаю Docker Swarm на своем локальном компьютере и пытаюсь инициировать Swarm и выполняется очень хорошо, но когда я пытаюсь добавить нового работника или узел в существующий узел менеджера, он выдает ошибку, подобную Swarm, уже часть узла вы должны покинуть узел. $ docker swarm init Рой инициализирован: текущий узел (fn405d6jtk8mxbpvdrftr0np1) теперь является менеджером.

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

docker swarm join --token SWMTKN-1-5tyw8ux789wpa7yyt75qbilb669tiw53pxriyxu48niznpmaka-7u63l4hom3h60myvtyw8p1mcj 192.168.2.219:2377

Чтобы добавить менеджера в этот рой, запустите 'docker swarm join-token manager' и следуйте инструкциям.

=> И снова я использую вышеуказанный токен в качестве работника и присоединяюсь, тогда я получаю ошибку, подобную этой.

$    docker swarm join --token SWMTKN-1-5tyw8ux789wpa7yyt75qbilb669tiw53pxriyxu48niznpmaka-7u63l4hom3h60myvtyw8p1mcj 192.168.2.219:2377

Error response from daemon: This node is already part of a swarm. Use "docker swarm leave" to leave this swarm and join another one.

Ответы [ 4 ]

0 голосов
/ 11 октября 2018

выполните шаги по добавлению узла в рой. Теперь у вас есть 1 master1 и 3 подчиненных узла.

  $ docker-machine create -d virtualbox master1
  $ docker-machine create -d virtualbox slave1
  $ docker-machine create -d virtualbox slave2
  $ docker-machine create -d virtualbox slave3

теперь ssh к master1

  $ docker ssh master1

теперь инициализируйте кластер рояс master1 в качестве Лидера

  $ docker swarm --init <master1-ip>  // get the ip as $ docker-machine ip master1
  $ exit

вышеупомянутая команда дает токен для рабочих, чтобы присоединиться к ройу.
, чтобы использовать этот токен SSH в подчиненных узлах.теперь выйдите из master1 ssh

  $ docker-machine ssh slave1 
  $ docker swarm join-token <token> <ip>:<port>
  $ exit

теперь аналогично для других подчиненных узлов

  $ docker-machine ssh slave2
  $ docker swarm join-token <token> <ip>:<port>
  $ exit

  $ docker-machine ssh slave3
  $ docker swarm join-token <token> <ip>:<port>
  $ exit

, чтобы лучше узнать о текущих основных и подчиненных узлах
ssh в масте1узел

  $ docker-machine ssh master1
  $ docker node ls

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

  $ docker swarm leave --force
0 голосов
/ 30 мая 2018

Узел, на котором вы запускаете docker swarm init, автоматически становится Swarm Manager.Эти токены соединения создаются для добавления новых узлов в рой, чтобы обеспечить максимально доступную среду с высокой доступностью.

Основываясь на комментариях, которые я прочитал выше, вы подтвердили, что работали с рабочим объединениемтокен на узле, который вы запустили docker swarm init.Я бы посоветовал вам прочитать основы Docker и Docker Swarm .

0 голосов
/ 21 сентября 2018

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

Введите информацию о докере и посмотрите состояние роя, вы можете найти состояние роя.

От рабочего (другого узла), если вы столкнетесь с «Этот узел уже является частью роя»,Вы должны уйти от роя "Docker Swarm Leave --force".и попробуйте подключиться снова.

0 голосов
/ 17 мая 2018

Docker swarm - это набор из одной или нескольких машин (физических или виртуальных, называемых узлами), которые могут запускать ваши контейнеры как сервисы.Узлами в рое могут быть менеджеры или рабочие.Только на узлах менеджера вы можете видеть / изменять статус роя.Рабочие узлы запускают только контейнеры.Чтобы запустить контейнер в рое, вы должны создать сервис;эта служба будет иметь ноль или более контейнеров в зависимости от scale, который вы установили для службы.

Чтобы создать рой, вы запускаете docker swarm init на машине, которая будет управляющим узлом.Затем, на других принадлежащих вам компьютерах , вы запускаете команду docker swarm join, чтобы добавить их в рой.Вы не можете добавить в рой машину, которая уже есть в рое.В вашем случае вы пытаетесь добавить в рой менеджера, который создал рой.

Когда вы запускаете рой (с помощью docker swarm init), машина, с которой вы инициировали рой, уже подключена к рое.Вам не нужно ничего делать, чтобы подключить его к рою.

После запуска роя вы можете (и должны) добавлять другие машины в качестве менеджеров или рабочих.

В любой момент после создания роя вы можете создавать сервисы и / или сети или развертывания стеков .

...