未知discover token时,如何向Flynn集群添加新主机?
解决集群Discover Token丢失及新主机加入失败的问题
我来帮你搞定这个棘手的问题!找不到集群初始化时的discover token,生成新token后加新主机没反应也没任何提示,这确实挺闹心的,下面给你梳理几个关键解决步骤和排查方向:
一、先试试找回原集群的Discover Token
大部分集群工具都会把token存在主节点的某个文件里,或者提供命令直接查看,不用急着生成新的:
- 如果是K3s集群,主节点的token默认存在这个路径,直接查看就行:
cat /var/lib/rancher/k3s/server/node-token - 如果是Docker Swarm集群,直接在主节点执行下面的命令,它会输出带token的完整加入命令,比单独找token更靠谱:
# 加工作节点用这个 docker swarm join-token worker # 加管理节点用这个 docker swarm join-token manager
二、生成新Token后,这么操作才对
如果你已经生成了新token但加入失败,大概率是操作细节没做好,或者网络有问题:
- 先确认网络连通性:新主机必须能访问主节点的集群端口,比如K3s要通6443,Docker Swarm要通2377、7946、4789。先在新主机上测一下:
连不通的话,先去主节点的防火墙/安全组开端口,这是最常见的静默失败原因。# 替换成你的主节点IP和对应端口 telnet 192.168.1.100 6443 - 用完整的加入命令:生成新token时,主节点一般会输出完整的加入命令,比如K3s生成新token的命令是:
直接把这个命令复制到新主机上执行,别自己手动拼参数,很容易打错字符导致失败。k3s token create --print-join-command - 去日志里找真相:如果执行后没任何提示,别慌,后台肯定有日志记录错误。去新主机上看集群代理服务的日志:
- K3s的话看agent日志:
journalctl -u k3s-agent -f - Docker Swarm的话看docker服务日志:
journalctl -u docker -f
- K3s的话看agent日志:
三、几个容易踩的坑提醒你
- 复制token的时候一定要完整,别漏了开头的
K10(K3s)或者SWMTKN(Docker Swarm)这类前缀,少一个字符都会直接失败。 - 新主机的集群工具版本要和主节点一致,版本不兼容经常会导致没任何提示的静默失败。
- 如果是云服务器,别忘了检查主节点的安全组规则,很多时候都是安全组没开端口导致连不上。
内容的提问来源于stack exchange,提问作者Martins Untals
相关产品推荐
相关产品推荐

