Linux入门教程:管理swarm(11) – swarm实践 –下线节点,swarmswarm管理器能分
Linux入门教程:管理swarm(11) – swarm实践 –下线节点,swarmswarm管理器能分
在之前的章节,所以的节点状态都为ACTIVE了。swarm管理器能分配任务到任何ACTIVE的节点,所以目前为止所有的节点都可以接收任务。
不过有时候如维护期间,你需要设置一个节点为DRAIN状态,也就是下线节点。DRAIN状态的节点不再接受来自swarm管理器发来的新任务。也意味着管理器停止DRAIN状态节点的任务然后再在ACTIVE节点上新起一个副本任务来替代之前的任务。
1.登录manager1机器。
2.查看目前所有的节点都为Active状态。
3.如果你没有运行之前滚动更新的步骤,那么先执行如下命令创建redis服务:
$ docker service create --replicas 3 --name redis --update-delay 10s redis:3.0.6 c5uo6kdmzpon37mgj9mwglcfw4.执行docker service ps redis查看swarm管理器把任务分配到了哪些节点:
$ docker service ps redis ID NAME SERVICE IMAGE LAST STATE DESIRED STATE NODE 7q92v0nr1hcgts2amcjyqg3pq redis.1 redis redis:3.0.6 Running 26 seconds Running manager1 7h2l8h3q3wqy5f66hlv9ddmi6 redis.2 redis redis:3.0.6 Running 26 seconds Running worker1 9bg7cezvedmkgg6c8yzvbhwsd redis.3 redis redis:3.0.6 Running 26 seconds Running worker2在这个示例中,swarm管理器为每个节点分配一个任务。
5.执行docker node update –availability drain
6.查看这个节点的状态:
$ docker node inspect --pretty worker1 ID: 38ciaotwjuritcdtn9npbnkuz Hostname: worker1 Status: State: Ready Availability: Drain ...snip...下线的节点显示Drain状态。
7.执行docker service ps redis来查看swarm管理器是如何重新分配redis任务到其它可用节点的:
swarm管理器停止已下线节点的redis任务并在其它Active节点创建一个新任务来维持设定redis副本数。
8.执行docker node update –availability active
9.查看上一步更新节点的状态:
$ docker node inspect --pretty worker1 ID: 38ciaotwjuritcdtn9npbnkuz Hostname: worker1 Status: State: Ready Availability: Active ...snip...当设置节点重新为Active状态时,在以下几种情况会重新接收新任务:
在增大服务规模期间 在滚动更新期间 当设置另一个节点为Drain状态时 当一个任务在另一个Active节点失败时
评论暂时关闭