zl程序教程

您现在的位置是:首页 >  工具

当前栏目

如何设置docker swarm中的manager节点,不执行任何的task?

Docker节点执行 如何 设置 Task Manager 任何
2023-09-11 14:14:16 时间

 

在刚创建好的一个docker swarm集群中,manager节点虽然具备管理的角色,但是,还是允许task在上面运行的,那么如果就让manager节点,干一个活,就是管理,调度的任务,不让其执行任何的具体任务,不干活,该如何设置?

下面,先来看下,swarm中集群的节点信息:

[root@nccztsjb-node-07 ~]# docker node ls
ID                            HOSTNAME           STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
mjktd9is5xd8d4el2awrqby5k *   nccztsjb-node-07   Ready     Active         Leader           20.10.17
u87i9artgcnyki0osp9gvylu3     nccztsjb-node-08   Ready     Active                          20.10.17
z1x3ufsdxekrt6w5n37m7azfe     nccztsjb-node-09   Ready     Active                          20.10.17
zbsfhbwjlit8f650bqvcbtkhl     nccztsjb-node-10   Ready     Active                          20.10.17
[root@nccztsjb-node-07 ~]# 

标记起来的,就是manger节点:

在这个管理节点上,运行着service的一个服务:

[root@nccztsjb-node-07 ~]# docker service ps nginx
ID             NAME                              IMAGE                                   NODE               DESIRED STATE   CURRENT STATE          ERROR     PORTS
n9hpnz1djx1f   nginx.mjktd9is5xd8d4el2awrqby5k   172.20.58.152/middleware/nginx:1.21.4   nccztsjb-node-07   Running         Running 20 hours ago             *:8080->80/tcp,*:8080->80/tcp
z26ktqqsbj6x   nginx.u87i9artgcnyki0osp9gvylu3   172.20.58.152/middleware/nginx:1.21.4   nccztsjb-node-08   Running         Running 20 hours ago             *:8080->80/tcp,*:8080->80/tcp
m77cm6zvkq82   nginx.z1x3ufsdxekrt6w5n37m7azfe   172.20.58.152/middleware/nginx:1.21.4   nccztsjb-node-09   Running         Running 20 hours ago             *:8080->80/tcp,*:8080->80/tcp
3o0s4dekfl2v   nginx.zbsfhbwjlit8f650bqvcbtkhl   172.20.58.152/middleware/nginx:1.21.4   nccztsjb-node-10   Running         Running 20 hours ago             *:8080->80/tcp,*:8080->80/tcp
[root@nccztsjb-node-07 ~]# 

下面,就是关键了,让这个manager节点,不再执行任何的具体的task······

将manager节点,驱逐 (drain)

[root@nccztsjb-node-07 ~]# docker node update --availability drain mjktd9is5xd8d4el2awrqby5k
mjktd9is5xd8d4el2awrqby5k
[root@nccztsjb-node-07 ~]# 

节点的可用性(AVAILABILITY)更新为Drain状态,上面的task也被终止了

新建service

OK,上面的过程显示,已有的task已经终止了,新建的service是否还会在这个节点上调度呢?

docker service create \
  --replicas 6 \
  --name redis \
  --update-delay 10s \
  --update-parallelism 2 \
  172.20.58.152/middleware/redis:3.0.6

新部署的service,其中的task是没有在这个节点上运行的:

更为重要的是,不知道你注意了没有,当在manager上执行docker service命令的时候,依然可以进行任务的创建、调度等工作,也就是说,manager角色的作用还是在的!

只是,不执行具体的task了。

读到这里,你明白了没有?

  1. 如果有你任何的问题,欢迎留言······