Работник не может подключиться к Docker Swarm Manager - PullRequest
0 голосов
/ 23 января 2019

Я настроил менеджер роя Docker на одной машине с IP 192.168.XXX.XXX с помощью этой команды:

docker swarm init --advertise-addr = 192.168.XXX.XXX и я получил это сообщение:

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

docker swarm join --token SWMTKN-1- 
0jpgak7bm7t4mzluz48gdub06f5036q8yaoo99awkjmlz48vtb- 
1eutz0k1vp37ztmiuxdnglka2 192.168.XXX.XXX:2377

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

В другой машине я попробовал следующую команду:

docker swarm join --token SWMTKN-1- 
0jpgak7bm7t4mzluz48gdub06f5036q8yaoo99awkjmlz48vtb- 
1eutz0k1vp37ztmiuxdnglka2 192.168.XXX.XXX:2377

и результат был:

error response from daemon : rpc error : code = Unavailable desc = all 
SubConns are in TransientFailure, latest connection error: connection error 
: desc = "transport: Error while dialing dial tcp 192.168.XXX.XXX:2377 : 
connect: connection refused 

Версия Docker:

Client: Docker Engine - Community
 Version:           18.09.0
 API version:       1.39
 Go version:        go1.10.4
 Git commit:        4d60db4
 Built:             Wed Nov  7 00:47:51 2018
 OS/Arch:           windows/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.0
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.4
  Git commit:       4d60db4
  Built:            Wed Nov  7 00:55:00 2018
  OS/Arch:          linux/amd64
  Experimental:     false

1 Ответ

0 голосов
/ 29 мая 2019

Это ошибка соединения, с которой вы столкнулись. Скорее всего, другая машина не может подключиться к диспетчеру, поскольку она не находится в той же сети. Решение: чтобы исправить это, две машины должны иметь возможность общаться друг с другом. Если машины находятся в облаке, например Azure или AWS, создайте виртуальную сеть и добавьте в нее две машины.

Ошибка отладки соединения:

Чтобы убедиться, что машины не могут общаться друг с другом, попробуйте пропинговать диспетчер с другой машины. Скорее всего, он потерпит неудачу в вашей текущей установке

$ ping 192.168.XXX.XXX

Если это удастся, проверьте, открыт ли порт 2377 и прослушивает ли менеджер. Запустите ниже с другой машины:

$ nc -vz 192.168.XXX.XXX 2377

Еще один инструмент, который может помочь при отладке, - запустить netstat на менеджере:

$ netstat -tuplen
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode      PID/Program name    
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      101        51772227   -                   
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      0          25361290   -                   
tcp6       0      0 :::2377                 :::*                    LISTEN      0          1423965    -                   
tcp6       0      0 :::7946                 :::*                    LISTEN      0          1423980    -    

Убедитесь, что вы видите :::2377 и :::7946 и что их состояние установлено на LISTEN, так как эти порты требуются Docker Swarm [ 1 ]

...