Docker Swarm 小服务,docker官方自带的

  • 小型编排环境(3-10台服务器)
  • 容器高可用
  • 适合集群的
  • 其中一个服务器挂了,会把服务迁移到其他服务器上 三个机器 都装docker

1.初始化#

#初始化manager(本地网卡的物理地址)
docker swarm init --advertise-addr 192.168.1.30

#获取token(获取添加命令)
docker swarm join --token SWMTKN-1-2yqc8ptjbfoynd7yzx49rtxmr1sawhawjj5nzvrx4zjnq39cj8-20x5tn1kmkmzu96gf1tv0vngt 192.168.1.30:2377

#列出swarm集群的节点
docker node ls

2.添加节点#

192.168.1.31
docker swarm join --token SWMTKN-1-2yqc8ptjbfoynd7yzx49rtxmr1sawhawjj5nzvrx4zjnq39cj8-20x5tn1kmkmzu96gf1tv0vngt 192.168.1.30:2377

192.168.1.32
docker swarm join --token SWMTKN-1-2yqc8ptjbfoynd7yzx49rtxmr1sawhawjj5nzvrx4zjnq39cj8-20x5tn1kmkmzu96gf1tv0vngt 192.168.1.30:2377 

192.168.1.30(leader)
docker node ls

3.添加label#

leader挂了集群就挂了,防止这种情况 添加label

docker node ls

192.168.1.30(原来leader)
docker node update --label-add name=swarm-master docker-master
192.168.1.31
docker node update --label-add name=swarm-node01 docker-node01
192.168.1.33
docker node update --label-add name=swarm-node02 docker-node02

4.将其他节点提升为manager角色以实现高可用#

提升权限接管节点 node02 -> Reachable node03 -> Reachable

docker node promote docker-node01
docker node promote docker-node02
docker node ls

5.查看node信息#

docker node inspect docker-node02

#查看status是不是ready

6.创建网络#

docker network create -d overlay --subnet=10.220.0.0/21 --gateway=10.220.0.1 --attachable docker-net01

docker network ls

docker inspect docker-net01

##docker network rm docker-net01

7.创建容器测试#

  • 每个节点的8888都会被监听和k8s一样
  • –replicas 2 维持容器在一个指定的服用的数量,而不会超(多了删一个),也不会少(少了添加一个)
#创建两个副本
docker service create --replicas 2 -p 8888:80 --network docker-net01 --name nginx harbor.123asd.com/docker/nginx:v1.28.0

docker service ls 
docker service ps was8wdifeaa3


#关闭一个节点(测试这里用leader)
docker node ls

192.168.1.30
systemctl stop docker 

192.168.1.31/33
docker node ls
#发现master状态是Unreachable(遥不可及的)
docker service ls 
docker service ps was8wdifeaa3

#192.168.1.30
systemctl start docker 
就算服务重新启动,leader也不会发生改变

![[image-20251008232340866.png]]