Docker Swarm(七)Scale 扩(缩)容服务
扩(缩)容服务
- 扩容服务
Service还提供了复制(类似kubernetes里的副本)功能。可以通过 docker service scale 命令来设置服务中容器的副本数:
docker service scale masl=4
和创建服务一样,增加scale数之后,将会创建新的容器,这些新启动的容器也会经历从准备到运行的过程,过一分钟左右,服务应该就会启动完成,这时候可以再来看一下 masl 服务中的容器
可以看到,之前masl
容器在manager-node和node1节点上各有一个实例,而现在又增加了2个实例。
特别需要清楚的一点:
如果一个节点宕机了(即该节点就会从swarm集群中被踢出),则Docker应该会将在该节点运行的容器,调度到其他节点,以满足指定数量的副本保持运行状态。
比如:
将node1宕机后或将node1的docker服务关闭,那么它上面的task实例就会转移到别的节点上。当node1节点恢复后,它转移出去的task实例不会主动转移回来,
只能等别的节点出现故障后转移task实例到它的上面。使用命令
"docker node ls"
,发现node1节点已不在swarm集群中了。
在 node1 节点上关闭docker服务:
systemctl stop docker
过1分钟左右后,在 manager-node 节点上查看服务:
发现,node1节点关闭后,它上面之前的两个task任务已经转移到 manager-node 节点上了。
- 缩容服务
docker service scale masl=2
发现,有2个task已经关闭了.
除了上面使用scale进行容器的扩容或缩容之外,还可以使用docker service update 命令。 可对 服务的启动 参数 进行 更新/修改。
[root@manager-node ~]# docker service update --replicas 3 masl masl
- 删除服务
把所有节点上的所有容器(task任务实例)全部删除了
docker service rm masl