我已经在这个问题上做了一些探索,没有运气,所以我认为我会在这里发布。简短的故事是我在Azure上运行Docker群。直到几天前,一切都进展顺利,并且运行良好。
那时,工作节点开始无法自动加入群集。我可以使用shell进入工作节点并“手动”加入(即:执行docker swarm join
命令)。
这是我目前的群居
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
y71cqwt9emeah5h8xihke7ev0 swarmm-agent-1395761400008N Ready Active 18.09.0
aju31jt00o83bwar9ecib47ai swarmm-agent-1395761400008R Ready Active 18.09.0
822fetitn9ipzkfnk19u1jbl5 * swarmm-master-13957614-0 Ready Active Leader 18.05.0-ce
道歉的格式,但也许要注意ENGINE VERSION
。这是唯一更改的东西-工人曾经是18.05-ce
(现在是18.09.0
)。
对于后台,Leader节点是预配置的VM(具有可用性集),而worker节点来自预配置的VMSS。
如果我缩放VMSS来添加另一个VM,则VM 可以启动,但是 not 不能加入群集。我必须在Azure资源浏览器中从{Leader节点中查找新虚拟机的IP地址,ssh
到该IP地址,然后手动运行join
命令(带有连接令牌) )。
因此,您可能会想象这并不理想。就像join命令不再在VM启动时运行一样……但是我在日志中找不到达到此效果的任何内容(也没有任何错误)。
leader节点上的docker版本为:
Docker版本18.05.0-ce,内部版本f150324
在节点上是:
Docker版本18.09.0,构建4d60db4
不确定这是否与它有任何关系,但是我听闻有评论说,一群不同的Docker版本会导致不稳定。
最后,节点加入集群后,它将定期进入“关闭”状态,然后在几分钟后恢复正常。我不清楚发生这种情况时节点正在做什么……也许要离开并重新加入?
任何人都可以理解的亮光将不胜感激!
干杯, 本
编辑:我想出了如何查看worker docker初始化日志的方法。一切都很好(它安装了Docker等),但是当节点尝试加入群集时,将出现以下错误:
parse <ip address>:2375: first path segment in URL cannot contain colon
执行的命令是:
docker -H <ip address>:2375 swarm join-token -q worker
我可以使用以下命令手动加入群集:
docker swarm join --token <token> <ip address>:2377