Estou trabalhando na criação de um Docker Swarm de 3 gerenciadores usando o Docker CE 19.03 e três máquinas CentOS 7.
Instalei o docker via yum, habilitei o serviço e o iniciei.
Eu criei um 'serviço' firewalld e permiti (por docker docker):
- Porta TCP 2377 para comunicações de gerenciamento de cluster
- Porta TCP e UDP 7946 para comunicação entre nós
- Porta UDP 4789 para tráfego de rede de sobreposição
Consegui iniciar o enxame e me juntar a um trabalhador. O terceiro servidor que tentei entrar como gerente no entanto e falhou com
Resposta de erro do daemon: gerenciador parado: não é possível inicializar nó de jangada: erro de rpc: código = Desconhecido desc = não foi possível conectar ao novo membro de cluster potencial usando seu endereço anunciado: erro de rpc: código = Prazo Excedido desc = prazo de contexto excedido
Então eu desisti docker swarm leave
e tentei entrar como trabalhador. Deu certo sem problemas. Agora, por que eu não entraria como gerente, mas entraria com sucesso como trabalhador?
Eu tentei permitir 2376/tcp (por https://www.digitalocean.com/community/tutorials/how-to-configure-the-linux-firewall-for-docker-swarm-on-centos-7 ) e desabilitar firewalld em o único gerente para ver se era um problema de firewall, mas recebi o mesmo erro.
Portanto, lição aprendida, confie nas mensagens de erro.
Eu apliquei meu modelo de serviço firewalld e esqueci de recarregar o firewalld para que as portas não estivessem realmente abertas. Aparentemente, todas essas portas não eram realmente obrigadas a ingressar como trabalhadores, mas sim como gerentes.
Eu havia notado no meu balanceador de carga que meus contêineres estavam frequentemente mostrando como falhados nesse host quando não estavam, o que me levou a verificar tudo novamente.
Há um limite de tempo padrão para o token de enxame. Você pode criar o token novamente para participar