树莓派安装docker,并在PC端监控,启动swarm集群
0.前期准备
硬件及OS:
路由器,
笔记本wifi ,
虚拟机Centos 7,
6个树莓派3B: OS为Raspberry Pi,node1是64位的aarch64,剩下都是32位armv7l ,使用wifi。
软件:
docker:v23.0.6 、
portainer-ce
1. 虚拟机和主机同网段
首先在控制面板 -> 网络和Internet -> 网络连接里查看目前使用的是哪个网卡,如图:
在虚拟机编辑列表中选择虚拟网络编辑器,
打开后点击更改设置,
选择桥接模式,桥接至的列表中选择刚刚查看的网卡名称,最后点确定。
这样虚拟机就和PC一个网段了。
2. 安装docker
虚拟机centos7 安装docker的过程略,查看其它博客。
树莓派安装docker:
sudo curl -sSL https://get.docker.com | sh
本来想离线安装的,但是因为arm架构,尤其是aarch64版本的OS,总是报各种错误,只能选择在线安装。
设置自启动docker:
sudo systemctl enable docker
3. 安装portainer
默认版本:
docker run -d \
--name portainer \
-p 9000:9000 \
-v /var/run/docker.sock:/var/run/docker.sock \
--restart always \
portainer/portainer
中文版本:
docker run -d \
--name=portainer-zh \
-p 9100:9000 \
-v /var/run/docker.sock:/var/run/docker.sock \
--restart=always \
6053537/portainer-ce
4. 创建Swarm环境
在此之前最好关闭 linux 的防火墙,重启docker,以免报错。
1. 初始化swarm集群,Swarm 模式下的操作默认运行于 2337 端口。虽然它是可配置的,但 2377/tcp 是用于客户端与 Swarm 进行安全(HTTPS)通信的约定俗成的端口配置。
docker swarm init --advertise-addr 192.168.0.108:2377
2. 其他manager和worker节点加入集群
#给manager节点加入集群使用
[root@manager1 ~]# docker swarm join-token manager
To add a manager to this swarm, run the following command:
docker swarm join --token SWMTKN-1-0zzpk3xqq2ykb5d5jcd6hqeimckhrg5qu82xs7nw2wwnwyjmzg-9tmof9880m9r92vz5rygaa42e 192.168.0.108:2377
#给worker节点加入集群使用
[root@manager1 ~]# docker swarm join-token worker
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-0zzpk3xqq2ykb5d5jcd6hqeimckhrg5qu82xs7nw2wwnwyjmzg-9tmof9880m9r92vz5rygaa4aa 192.168.0.108:2377
3. 打开portainer,添加环境
选择docker swarm,点击启动向导。
选择代理,将下面的命令复制到虚拟机centos7上执行,
执行完毕之后,填入环境名称和地址即可,9001是上面命令执行完毕之后输出信息中显示的端口号,最后点击连接。
环境创建完成。
4. 将6个树莓派通过token加入swarm集群,作为工作节点。
5. 问题汇总
1. 当整个项目移动到内网时,portainer 打不开,卡在加载页面进不去。
解决方法:通过笔记本连外网打开了。
2. portainer应该在chrome浏览中打开,edge浏览器无法访问。
3. 在内网时,子节点加入docker swarm集群时,报错:
Error response from daemon:error while validating Root CA Certificate:x509: certificate has expired or is not yet valid current time xxxxx.
出现这个问题的原因是树莓派的时间和虚拟机的时间不一致,需要将虚拟机设置为时间服务器,让树莓派和虚拟机时间同步。
过程:
虚拟机:
yum install -y ntp
--添加开机自启
systemctl enable ntpd
--启动
systemctl start ntpd
vi /etc/ntp.conf
--注释掉配置文件自带的时间同步。
--添加项目整个IP网段。
restrict XXX.XXX.XXX.0 mask 255.255.255.0 nomodify notrap
--用本地时间作为同步时间。
server 127.127.1.0
fudge 127.127.1.0 stratum 8
:wq
--重启NTP服务
systemctl restart ntpd
--系统时间写入BIOS时间
hwclock -w
--查看BIOS时间
hwclokc -r
--查看同步情况
ntpq -p #这个好像没用
树莓派:
#安装ntp
#apt-get install -y ntp
apt-get install -y ntpdate
#时间同步
ntpdate 虚拟机IP
#查看当前时间
date
出现 step time server ... offset即表示成功。
突然有一天假期结束,时来运转,人生才是真正开始了。