排干群上的节点
预计阅读时间:3分钟
在本教程的较早步骤中,所有节点均已在ACTIVE
可用性下运行。群管理器可以将任务分配给任何ACTIVE
节点,因此到目前为止,所有节点都可用于接收任务。
有时,例如计划的维护时间,您需要将节点设置为DRAIN
可用性。DRAIN
可用性阻止节点从群集管理器接收新任务。这也意味着管理器停止在节点上运行的任务,并在具有ACTIVE
可用性的节点上启动副本任务。
重要提示:一个节点设置为
DRAIN
不删除从该节点独立的容器,如那些具有创建docker run
,docker-compose up
或泊坞窗引擎API。节点的状态(包括DRAIN
)仅影响节点调度群集服务工作负载的能力。
-
如果还没有,请打开一个终端并SSH到运行管理器节点的计算机中。例如,本教程使用名为的计算机
manager1
。 -
验证所有节点均处于活动状态。
$ docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS 1bcef6utixb0l0ca7gxuivsj0 worker2 Ready Active 38ciaotwjuritcdtn9npbnkuz worker1 Ready Active e216jshn25ckzbvmwlnh5jr3g * manager1 Ready Active Leader
-
如果您仍未
redis
从滚动更新教程中运行该服务 ,请立即启动它:$ docker service create --replicas 3 --name redis --update-delay 10s redis:3.0.6 c5uo6kdmzpon37mgj9mwglcfw
-
运行
docker service ps redis
以查看群管理器如何将任务分配给不同的节点:$ docker service ps redis NAME IMAGE NODE DESIRED STATE CURRENT STATE redis.1.7q92v0nr1hcgts2amcjyqg3pq redis:3.0.6 manager1 Running Running 26 seconds redis.2.7h2l8h3q3wqy5f66hlv9ddmi6 redis:3.0.6 worker1 Running Running 26 seconds redis.3.9bg7cezvedmkgg6c8yzvbhwsd redis:3.0.6 worker2 Running Running 26 seconds
在这种情况下,群管理器将一个任务分配给每个节点。您可能会看到任务在环境中的节点之间的分布不同。
-
运行
docker node update --availability drain <NODE-ID>
以耗尽为其分配了任务的节点:docker node update --availability drain worker1 worker1
-
检查节点以检查其可用性:
$ docker node inspect --pretty worker1 ID: 38ciaotwjuritcdtn9npbnkuz Hostname: worker1 Status: State: Ready Availability: Drain ...snip...
耗尽的节点显示
Drain
为AVAILABILITY
。 -
运行
docker service ps redis
以查看群管理器如何更新服务的任务分配redis
:$ docker service ps redis NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR redis.1.7q92v0nr1hcgts2amcjyqg3pq redis:3.0.6 manager1 Running Running 4 minutes redis.2.b4hovzed7id8irg1to42egue8 redis:3.0.6 worker2 Running Running About a minute \_ redis.2.7h2l8h3q3wqy5f66hlv9ddmi6 redis:3.0.6 worker1 Shutdown Shutdown 2 minutes ago redis.3.9bg7cezvedmkgg6c8yzvbhwsd redis:3.0.6 worker2 Running Running 4 minutes
群集管理器通过在具有
Drain
可用性的节点上结束任务并在具有可用性的节点上创建新任务来维护所需状态Active
。 -
运行
docker node update --availability active <NODE-ID>
以将耗尽的节点返回到活动状态:$ docker node update --availability active worker1 worker1
-
检查节点以查看更新状态:
$ docker node inspect --pretty worker1 ID: 38ciaotwjuritcdtn9npbnkuz Hostname: worker1 Status: State: Ready Availability: Active ...snip...
将节点重新设置为
Active
可用时,它可以接收新任务:- 在进行服务更新以扩大规模时
- 在滚动更新期间
- 当您将另一个节点设置为
Drain
可用性时 - 当任务在另一个活动节点上失败时
下一步是什么?
了解如何使用群体模式路由网格。
教程,集群管理,群,服务,耗