如上图所示,
三台主机:恢复到docker的快照;
然后上传到三台服务器所需的镜像;
同步会话。执行导入脚本将镜像导入到系统中;
然后取消会话的同步,设置各个主机的主机名;
然后同步会话修改hosts文件;
查看防火墙和内核安全机制;
实验环境永久关闭即可;
生产环境需添加相应的策略;tcp/udp
然后在任意一个节点创建集群,在哪个节点创建,哪个节点就是manager;
其他节点如何成为manager,提升权限即可;
先将swarm初始化;
会提示如下语句:
大概意思就是当前101节点成为了集群的manager;
如果其他节点也想添加到集群,要执行以下指令:
利用2377/tcp端口加入到manager节点的集群中;
docker swarm join --token SWMTKN-1-5i733918jgh6glcmae1afkr5mhafyjocyv6kn7o68gmlc6l4io-9dt4s9otn66zsecgxfdk6muy1 192.168.10.101:2377
复制提示的命令在其他节点执行一下;
提示这个节点加入到了一个集群且是worker;
查看docker主机的信息,从中找到集群的信息;
节点的ID
集群的ID
节点数量:3
数据通信端口:4789
其他节点也可以查看相关的信息,只不过会显示不是manager;
以及可以列出集群节点;
AVAILABILITY栏的三种状态:
active:能运行容器的。
pause:当前容器继续运行,新调度来的容器不进行接收。
drain:新调度的容器不接收,且原有的容器迁移到其他节点。
如何修改manager节点的工作方式:
如果想要容器运行在指定的节点上,那么就要针对该节点打一个标签;
标签是一个键值对的格式;适用于docker和k8s中。
然后查看swarm中指定节点的详细信息;
通过查看到Labels为复数,就可以得知每一个节点可以有多个标签;
然后尝试在swarm中运行容器给指定的节点;
其中要访问可信镜像站拉取一个nginx的镜像;
如何获取?可以查看之前的博文;
通过查看命令可以看出,于compose中的概念基本相同,都是以服务的方式运行一组容器;
查看指定的服务;
在指定运行的节点上查看运行的容器:
红色框框中是最终运行起来的容器的名字;
但是在worker节点查看服务会提示该节点不是swarm的manager;
请提升当前节点到manager;
然后可以在manager节点上提升另外两个节点为manager;
再查看就有权限了;
如何降权???
然后在manager节点上查看节点的信息;
但是leader仍然是创建swarm时所在的主机,即101;
其他节点也可以成为管理的入口;
如何解散集群和脱离集群;
了解即可不需要使用,如果使用了还要重新搭建集群,或者重新加入到集群中;
解散集群要在leader主机上执行;
而脱离集群在需要脱离集群的节点上执行即可;
如何创建副本;
查询:
查询跑在了哪个节点上;
查询服务的详细信息;
默认是json格式的;
可以使用--pretty(漂亮)的选项显示更直观的方式查看;
对服务进行扩容;
对服务缩容:
移除服务:
滚动更新:
先创建redis的服务,三个副本;
如何滚动更新:
针对镜像进行替换;
可高可低;
OverLay:
先创建网络;
然后创建容器的时候,加入网络;
数据卷管理:
单纯的数据卷的方式:
先创建数据卷;
在创建容器的时候加入到数据卷中;
但是这种方式;同一个服务中的两个副本的数据不能共享;
NFS的方式:
在manager节点作为服务器端,worker节点作为客户端;
然后同步会话,安装nfs的包;
之后创建共享目录;
然后取消回话同步,在manage节点上书写nfs的配置文件;