前两天学习docker集群 用刚买的树莓派3B和zero 2w搭建了一个集群,然后从某鱼的二手平台上又淘了个3B+ 。我把zero 2w和3b的配置做了一些更改,想尝试能不能用zero 2w 和 0.96屏幕结合一下,搞个屏幕驱动,改完设置发现需要重启这俩小可爱~~~
刚搭建好的docker集群,万一重启了,断开了咋办,断开了我又连不上咋办~
百度了好些内容,众说纷纭,本着折腾的想法,颤抖的手,在我的俩小可爱上都键入了:
sudo shutdown -h now
俩都关机了以后,从新上电,开机,由于zero 2w 我配置是是无线上网,就在我旁边,看了看正常开机,ssh连接后也正常连接了。3b那边出现了点小问题,连不上网了,最后把路由器的网线接口重新调换了一下,才解决问题。
俩小可爱都开机后,3b键入命令:
sudo docker node ls //查看一下docker集群的连接情况
主机反馈
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
w9pgbmfyn1o5607l59ggzpm70 * kali-raspberry-pi Ready Active Leader 20.10.25+dfsg1
kxwqa0er49rhktfg58td5bp15 kali-raspberry-pi-zero-2-w-pitail Down Active 20.10.25+dfsg1
这里可以看到 我的zero 2w小可爱 Down掉了/(ㄒoㄒ)/~~
庆幸的是 3b小可爱依然坚挺 开机直接上线,因为是主机,也不需要额外的配置了。
那么现在需要解决的问题就变成了怎么把从机zero 2w给从新加入了集群中。
远程ssh zero 2w后 键入命令
┌──(kali㉿kali-raspberry-pi-zero-2-w-pitail)-[~]
└─$ sudo docker swarm join --token SWMTKN-1-2bbbw4thkydxy5g1ws7dmyqp5in28ytb2vfb9cybmynznuwbqz-25en512ntzq431fp2y7927srl 192.168.2.31:2377
Error response from daemon: This node is already part of a swarm. Use "docker swarm leave" to leave this swarm and join another one.
告诉我说已经是节点的一部分了 不能再加入了 可是明明刚才我在主机3b是发现是没有上线撒
突然反应过来,哦,对了 这是加入的命令,之前已经加入过了,应该是不能重复加入。
解决思路是,如何让他重新上线呗~~
各种百度后,结果不尽人意,还是解决不了办法。
换个思路吧,我把这个节点删掉他,从新再加入试试~
sudo docker swarm leave //从机运行 离开当前所处节点
主机运行
sudo docker node rm kxwqa0er49rhktfg58td5bp15 //主机删除当前节点
删除的时候 用的命令里 rm后面跟的ID 在前面执行 sudo docker node ls 这个命令的时候能看到。
接着主机执行
sudo docker swarm ca --rotate //主机旋转根CA证书
sudo docker swarm join-token worker //主机获取新的加入令牌
sudo docker swarm join-token manager //将新的加入令牌提供给要加入集群的节点
给大家展示下执行结果
┌──(kali㉿kali-raspberry-pi)-[~]
└─$ sudo docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
w9pgbmfyn1o5607l59ggzpm70 * kali-raspberry-pi Ready Active Leader 20.10.25+dfsg1
┌──(kali㉿kali-raspberry-pi)-[~]
└─$ sudo docker swarm ca --rotate
desired root digest: sha256:a86f289098581e1f08b2929c6e5342dfb507e04d8d3b4f091c13eb4a1c966680
rotated TLS certificates: [==================================================>] 1/1 nodes
rotated CA certificates: [==================================================>] 1/1 nodes
-----BEGIN CERTIFICATE-----
MIIBajCCARCgAwIBAgIULp7Pn/5ogAwAZ4awjhCv6oQ23TYwCgYIKoZIzj0EAwIw
EzERMA8GA1UEAxMIc3dhcm0tY2EwHhcNMjQwMzAxMDI1MzAwWhcNNDQwMjI1MDI1
MzAwWjATMREwDwYDVQQDEwhzd2FybS1jYTBZMBMGByqGSM49AgEGCCqGSM49AwEH
A0IABJq6qnKptFdpoL5aNtMR1nAMN6TbTto816l97hI0Dov2pJ+kl6RdOamR1YIq
8drN2O1Mm5FyQKkVkgMIKwaDFiGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMB
Af8EBTADAQH/MB0GA1UdDgQWBBSJFsWNqiZcVaoiDVkYDC7J3pmKDDAKBggqhkjO
PQQDAgNIADBFAiAim9GDp3tfnZtWdb3VfbHxTsG7tLYcmcbCAGlNRTdujgIhAPn3
6KSiyEHHpfBBYnesTzMCPCKWWvhIc72LPUK+FGg/
-----END CERTIFICATE-----
┌──(kali㉿kali-raspberry-pi)-[~]
└─$ sudo docker swarm join-token worker
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-474nt6yj0504bgn8zt8pf4vq2vfxuvk2qntduki5vzf1en07sw-8j704q4heoa3bnv9to5mlyijf 192.168.2.31:2377
┌──(kali㉿kali-raspberry-pi)-[~]
└─$ sudo docker swarm join-token manager
To add a manager to this swarm, run the following command:
docker swarm join --token SWMTKN-1-474nt6yj0504bgn8zt8pf4vq2vfxuvk2qntduki5vzf1en07sw-exmdfck0lvaagv6qycszrqdzs 192.168.2.31:2377
然后我去从机执行加入命令
┌──(kali㉿kali-raspberry-pi-zero-2-w-pitail)-[~]
└─$ sudo docker swarm join --token SWMTKN-1-474nt6yj0504bgn8zt8pf4vq2vfxuvk2qntduki5vzf1en07sw-exmdfck0lvaagv6qycszrqdzs 192.168.2.31:2377
Error response from daemon: error while validating Root CA Certificate: x509: certificate has expired or is not yet valid: current time 2023-09-30T11:06:22Z is before 2024-03-01T02:53:00Z
咋回事 ???
突然想起来,是不是时间不是当前时间啊!!!
┌──(kali㉿kali-raspberry-pi)-[~]
└─$ date
Fri Mar 1 03:01:50 AM UTC 2024
看吧 果然不是当前时间 咱也不管时区啥的了 直接手动改了吧
┌──(kali㉿kali-raspberry-pi)-[~]
└─$ sudo date -s "2024-03-01 11:03"
Fri Mar 1 11:03:00 AM UTC 2024
然后从机也改一下 同样的命令 用 date -s 做到主机和从机的时间统一
再次执行加入命令
┌──(kali㉿kali-raspberry-pi-zero-2-w-pitail)-[~]
└─$ sudo docker swarm join --token SWMTKN-1-474nt6yj0504bgn8zt8pf4vq2vfxuvk2qntduki5vzf1en07sw-exmdfck0lvaagv6qycszrqdzs 192.168.2.31:2377
This node joined a swarm as a manager.
嘿嘿 好像成了
主机看一下
┌──(kali㉿kali-raspberry-pi)-[~]
└─$ sudo docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
w9pgbmfyn1o5607l59ggzpm70 * kali-raspberry-pi Ready Active Leader 20.10.25+dfsg1
kb43fkjfsc961c9xtj0q5qtjt kali-raspberry-pi-zero-2-w-pitail Ready Active Reachable 20.10.25+dfsg1
哈哈 果然都成了 已经都是 Ready 状态啦 哈哈哈 开心 又解决一个问题 ~~