树莓派安装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即表示成功。

posted @ 2023-05-16 11:49  莫莫君不恋爱  阅读(384)  评论(0编辑  收藏  举报