对于一个节点来说,如果想要加入swarm集群,需要一个加密的token.
更加重要的是,对于manger节点和worker节点使用的token是不同的。
节点,只有在加入swarm集群的时候,使用join-token。在加入集群之后,如果token发生了变化,对于节点是不会有影响。
更新token的好处时,新节点是不可以通过旧的token加入到集群中的。
接下来的内容,会分别说明,如何查看加入集群的命令,还有,如何对token进行更新.
1、查看worker节点加入集群的命令
[root@nccztsjb-node-01 ~]# docker swarm join-token worker To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1-3al94n9m4rj12p9mi4prximjm9vocg2cb2tfmkx12p6fpi7wgu-3kb6gjix9gg8ton3rc2sc955s 172.20.59.76:2377 [root@nccztsjb-node-01 ~]#
其中,是生成的加密的token
SWMTKN-1-3al94n9m4rj12p9mi4prximjm9vocg2cb2tfmkx12p6fpi7wgu-3kb6gjix9gg8ton3rc2sc955s
2、查看manager加入集群的命令
[root@nccztsjb-node-01 ~]# docker swarm join-token manager To add a manager to this swarm, run the following command: docker swarm join --token SWMTKN-1-3al94n9m4rj12p9mi4prximjm9vocg2cb2tfmkx12p6fpi7wgu-8rphxicc5jnvdv9m8z8b3qg40 172.20.59.76:2377 [root@nccztsjb-node-01 ~]#
其中,token
SWMTKN-1-3al94n9m4rj12p9mi4prximjm9vocg2cb2tfmkx12p6fpi7wgu-8rphxicc5jnvdv9m8z8b3qg40
发现,woker的token和manager的token是不同的。
3、仅打印token
使用--quiet参数
[root@nccztsjb-node-01 ~]# docker swarm join-token worker --quiet SWMTKN-1-3al94n9m4rj12p9mi4prximjm9vocg2cb2tfmkx12p6fpi7wgu-3kb6gjix9gg8ton3rc2sc955s [root@nccztsjb-node-01 ~]# [root@nccztsjb-node-01 ~]# [root@nccztsjb-node-01 ~]# docker swarm join-token manager --quiet SWMTKN-1-3al94n9m4rj12p9mi4prximjm9vocg2cb2tfmkx12p6fpi7wgu-8rphxicc5jnvdv9m8z8b3qg40 [root@nccztsjb-node-01 ~]#
token是加入的集群的秘密的凭证,需要对token进行严格的保密处理。
如果节点的加入token被泄露,其他人可以将节点加入到集群中,那么就可能会有task被运行到节点上,进而对应用上的数据进行窥视,如果是manager的加入token被泄露了,问题就更加的严重了,整个集群的控制权都被获取到了,那时,集群的处境也是极其危险的。
那么,在什么情况下,需要更新加入 token?
4、何时更新加入token
列出几个场景:
- 如果token存放在了 版本控制系统,如git上,并且在日志或者聊天中打印了出来
- 如果怀疑某个节点被入侵了
- 如果想保证,没有新节点加入集群,或者加入集群时,使用一个最新的token
此外,更加重要的是,为了保证token的安全性,建议,定期的更新token,比如6个月更新一次。
5、生成新的加入token
执行下面的命令,使得旧的token失效,与此同时,生成一个新的token
更新worker的加入token
[root@nccztsjb-node-01 ~]# docker swarm join-token --rotate worker Successfully rotated worker join token. To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1-3al94n9m4rj12p9mi4prximjm9vocg2cb2tfmkx12p6fpi7wgu-7vm6upgpiu6m37xrddrmtse0t 172.20.59.76:2377 [root@nccztsjb-node-01 ~]#
更新manager的加入token
[root@nccztsjb-node-01 ~]# docker swarm join-token --rotate manager Successfully rotated manager join token. To add a manager to this swarm, run the following command: docker swarm join --token SWMTKN-1-3al94n9m4rj12p9mi4prximjm9vocg2cb2tfmkx12p6fpi7wgu-5gjb9x4uloj5a6jclb8g8od2l 172.20.59.76:2377 [root@nccztsjb-node-01 ~]#
执行命令之后,旧的加入token失效,生成新的加入token。
试试原来的加入token,还能不能用了?
docker swarm join --token SWMTKN-1-3al94n9m4rj12p9mi4prximjm9vocg2cb2tfmkx12p6fpi7wgu-3kb6gjix9gg8ton3rc2sc955s 172.20.59.76:2377
当然不能了,执行了命令,报错:
[root@nccztsjb-node-05 ~]# docker swarm join --token SWMTKN-1-3al94n9m4rj12p9mi4prximjm9vocg2cb2tfmkx12p6fpi7wgu-3kb6gjix9gg8ton3rc2sc955s 172.20.59.76:2377 Error response from daemon: rpc error: code = InvalidArgument desc = A valid join token is necessary to join this cluster [root@nccztsjb-node-05 ~]#
使用最新的加入token,再试试
docker swarm join --token SWMTKN-1-3al94n9m4rj12p9mi4prximjm9vocg2cb2tfmkx12p6fpi7wgu-7vm6upgpiu6m37xrddrmtse0t 172.20.59.76:2377
[root@nccztsjb-node-05 ~]# docker swarm join --token SWMTKN-1-3al94n9m4rj12p9mi4prximjm9vocg2cb2tfmkx12p6fpi7wgu-7vm6upgpiu6m37xrddrmtse0t 172.20.59.76:2377 This node joined a swarm as a worker. [root@nccztsjb-node-05 ~]#
完美!
OK,到这里,我们介绍了:
- 查看worker、manager加入集群的命令
- 什么时候,需要更新加入的token
- 如何生成加入的token