2020-04-21 更新:
更一下群晖Swarm的配置,unraid怎么搞的有木有大佬指教下,实在搜不到了。
参考链接:
portainer安装:
docker run \
-d \
--restart always \
--name portainer \
-p 9010:9000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /volume1/docker/portainer:/data \
portainer/portainer
注意映射文件夹位置和端口,群晖docker的json配置位置:
/var/packages/Docker/etc/dockerd.json
修改原有配置,10.16.100.150
为我的dsm的IP:
{
"data-root" : "/var/packages/Docker/target/docker",
"log-driver" : "db",
"hosts" : [ "tcp://10.16.100.150:2375","unix:///var/run/docker.sock"],
"registry-mirrors" : [ "https://xxxxxxx.mirror.aliyuncs.com" ]
}
保存退出,
synoservicecfg --list #查看群晖服务
可以看到群晖的docker服务包名是pkgctl-Docker
,,重启群晖的docker服务:
synoservice --restart pkgctl-Docker
加入我自己的管理节点:
docker swarm join --token SWMTKN-1-2jli1ua5wodh7d97io9q1jr53o3inrmyljvr1ina3tdofnsca5-tgwcbb4i4krggxo0d37b17nebzi3ohe 10.16.100.157:2377
在管理节点增加群晖的IP和hosts。
群晖Done
以下为原文:
需求
家里小设备多,Docker玩法多样,所以’‘机’'手一个,每个设备上都安装了Portainer来监测管理容器,非常的不方便,狠下心来爬爬大佬们的帖子玩下多主机Docker容器的集群式管理。
以下是流水账笔记,请自动忽略所有不准确用词。
参考
主要参考第一篇文章内容,大佬写的非常详细。
材料
安装了Docker服务和Portainer管理面板的(debian、unbuntu、armbian、centos等)linux系统服务器。
操作步骤
用2台安装armbian(Debian系)的N1走一遍参考教程的流程。
基本信息
- manager node,即管理节点,部署Swarm服务,同时也作为工作节点接入,基本信息:
IP: 10.16.100.157
hostname: phicomm-n1-armbian
- worker node为工作节点:
IP: 10.16.100.215
hostname: PhicommN1
N1一般都会直接使用root
账户,所以以下命令均是在root
用户下操作,如果是非root
、提示你无权限的话别忘了在命令加sudo
提权(毕竟是系统级层面上的修改)。
编辑器我用的nano。
Swarm搭建
hosts设置
我没有修改原教程中说到的主机hostname。
- 修改用于安装管理节点的157机器hosts
nano /etc/hosts
打开编辑界面,在原文件最后增加下面的代码
10.16.100.157 phicomm-n1-armbian
10.16.100.215 PhicommN1
更改后的内容:
127.0.0.1 localhost phicomm-n1-armbian
::1 localhost phicomm-n1-armbian ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
10.16.100.157 phicomm-n1-armbian
10.16.100.215 PhicommN1
然后CTRL+X
,Y
,保存退出。
- 修改工作节点的215机器hosts
操作及内容同上。
配置管理节点2375端口
同样SSH进入157:
nano /lib/systemd/system/docker.service
将ExecStart这行
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
加#注释掉,加上:
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375
保存退出。
重载系统配置及重启docker服务:
systemctl daemon-reload
systemctl restart docker #或者使用service docker restart 后者更好一点,毕竟docker通用命令
配置工作节点2375端口
操作同上,注意IP地址
初始化Swarm
运行命令
docker swarm init --advertise-addr 10.16.100.157
输出内容:
root@phicomm-n1-armbian:~# docker swarm init --advertise-addr 10.16.100.157
Swarm initialized: current node (lb55fej7rwxg4p73808vwpa3z) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-2jli1ua5wodh7d97io9q1jr53o3inrmyljvr1ina3tdofnsca5-tgwcbb4i4krggxo0d37b17nebzi3ohe 10.16.100.157:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
原教程描述:
上面命令执行后,该机器自动加入到swarm集群。这个会创建一个集群token,获取全球唯一的 token,作为集群唯一标识。
后续将其他节点加入集群都会用到这个token值。
添加集群节点
在215机器上运行以下命令:
docker swarm join --token SWMTKN-1-2jli1ua5wodh7d97io9q1jr53o3inrmyljvr1ina3tdofnsca5-tgwcbb4i4krggxo0d37b17nebzi3ohe 10.16.100.157:2377
输出:
root@PhicommN1:~# docker swarm join --token SWMTKN-1-2jli1ua5wodh7d97io9q1jr53o3inrmyljvr1ina3tdofnsca5-tgwcbb4i4krggxo0d37b17nebzi3ohe 10.16.100.157:2377
This node joined a swarm as a worker.
root@PhicommN1:~#
如后续要加入其他更多的节点,添加操作也是执行这个命令.
查看集群节点
在157(管理主机)机器SSH输入:
docker node ls
输出:
root@phicomm-n1-armbian:~# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
5xqa5lobjvlwv46ofb5ymujd0 PhicommN1 Ready Active 19.03.7
lb55fej7rwxg4p73808vwpa3z * phicomm-n1-armbian Ready Active Leader 19.03.8
做Leader的感觉棒不?
查看端口状态
最后查看下两个机器上的2375端口是否都已经开启了
管理主机输入
lsof -i:2375
主机输出状态:
root@phicomm-n1-armbian:~# lsof -i:2375
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
dockerd 11591 root 3u IPv6 339177 0t0 TCP *:2375 (LISTEN)
工作节点机器输入:
lsof -i:2375
输出:
root@PhicommN1:~# lsof -i:2375
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
dockerd 29218 root 3u IPv6 1405356 0t0 TCP *:2375 (LISTEN)
Portainer配置
因为我的机器都已经安装完Portainer
并且均是选择的Local
模式,所以操作和原帖不太一样,副作用未知。
- 原帖步骤
主机新创建portainer
容器之后选择remote
模式,具体看原贴的贴图。
- 我的步骤:
进入管理节点把需要进行集群管理的工作节点portainer
服务添加进来:
登入管理节点主机的Portainer
的WEB界面;
点击左侧面板菜单,SETTINGS
下面的Endpoints
选项卡,然后+Add endpoint
,选择Docker
选项,输入工作节点的相关信息:
Name
:好像可以随意、跟hostname并没啥关系?
Endpoint URL
: 工作节点的IP+2375
Public IP
: 工作节点的IP(可以不用输入)
其他的采用缺省配置就行,然后点击下方的Add endpoint
,操作基本结束且教程无坑。
按步骤添加其他的满足条件的设备,当然别忘了在管理主机添加该设备对应的host,同时替换修改被集群节点主机中hosts信息、然后重载重启相关操作,最终效果图:
Swarm高阶操作不会玩、暂时也不会用到,玩法倒是很多,随便来一个链接:
https://blog.csdn.net/weixin_34384557/article/details/92022451
搞完了才发现这个教程对于群晖和unraid是不适用的,其他方式我也没接触,衰!!!
奇葩的需求都是源于蛋疼的折腾
感谢互联网上无私分享的大佬们。
这是最好的时代,这是最坏的时代,
这是智慧的时代,这是愚蠢的时代;
这是信仰的时期,这是怀疑的时期;
这是光明的季节,这是黑暗的季节;
这是希望之春,这是失望之冬;
人们面前有着各样事物,人们面前一无所有;
人们正在直登天堂;人们正在直下地狱。—狄更斯 《双城记》
这书我没看过。