【云原生 | 58】Docker三剑客之Docker Swarm中的调度器

博主简介
        云计算领域优质创作者
        2022年CSDN新星计划python赛道第一名

        2022年CSDN原力计划优质作者
        阿里云ACE认证高级工程师
        阿里云开发者社区专家博主

交流社区:CSDN云计算交流社区欢迎您的加入!

目录

1、spread调度策略 

2、binpack调度策略 

 结束语​


调度是集群十分重要的功能,Swarm目前支持三种调度策略:spread、binpack和random。
在执行swarm manage命令启动管理服务的时候,可以通过--strategy参数指定调度策略,默认的是spread。

简单来说,这三种调度策略的优化目标如下:

❤️spread:如果节点配置相同,选择一个正在运行的容器数量最少的那个节点,即尽量平摊容器到各个节点;
❤️binpack:跟spread相反,尽可能地把所有的容器放在一台节点上运行,即尽量少用节点,避免容器碎片化。
❤️random:直接随机分配,不考虑集群中节点的状态,方便进行测试使用。

1、spread调度策略 

仍然以之前创建好的集群为例,来演示spread策略的行为。 在192.168.0.2节点启动管理服务,管理 token://946d65606f7c2f49766e4dddac5b4365的集群。
$ docker run -d -p 12375:2375 swarm manage --strategy "spread" token://946d6560
6f7c2f49766e4dddac5b4365
c6f25e6e6abbe45c8bcf75ac674f2b64d5f31a5c6070d64ba954a0309b197930

列出集群中的节点:

$ docker run --rm swarm list token://946d65606f7c2f49766e4dddac5b4365
192.168.0.3:2375
192.168.0.2:2375

此时,两个节点上除了Swarm外都没有运行其他容器。启动一个ubuntu容器:

$ docker -H 192.168.0.2:12375 run -d ubuntu:14.04 ping 127.0.0.1
bac3dfda5306181140fc959969d738549d607bc598390f57bdd432d86f16f069
查看发现它实际上被调度到了192.168.0.3节点(当节点配置相同时,初始节点随机选择)。
再次启动一个ubuntu容器:
$ docker -H 192.168.0.2:12375 run -d ubuntu:14.04 ping 127.0.0.1
8247067ba3a31e0cb692a8373405f95920a10389ce3c2a07091408281695281c
查看它的位置,发现被调度到了另外一个节点:192.168.0.2上:
$ docker -H 192.168.0.2:12375 ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8247067ba3a3 ubuntu:14.04 "ping 127.0.0.1" 1 minutes ago Up 1 minutes
Host-2/sick_galileo
bac3dfda5306 ubuntu:14.04 "ping 127.0.0.1" 2 minutes ago Up 2 minutes
Host-3/compassionate_ritchie

当节点配置不同的时候,spread会更愿意分配到配置较高的节点上。

2、binpack调度策略 

现在来看看binpack策略下的情况。直接启动若干ubuntu容器,并查看它们的位置:
$ docker -H 192.168.0.2:12375 run -d ubuntu:14.04 ping 127.0.0.1
$ docker -H 192.168.0.2:12375 ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4c4f45eba866 ubuntu:14.04 "ping 127.0.0.1" 3 minutes ago Up 3 minutes
Host-3/hopeful_brown
5e650541233c ubuntu:14.04 "ping 127.0.0.1" 3 minutes ago Up 3 minutes
Host-3/pensive_wright
99c5a092530a ubuntu:14.04 "ping 127.0.0.1" 3 minutes ago Up 3 minutes
Host-3/naughty_engelbart
4ab392c26eb2 ubuntu:14.04 "ping 127.0.0.1" 3 minutes ago Up 3 minutes
Host-3/thirsty_mclean

可以看到,所有的容器都是分布在同一个节点(192.168.0.3)上运行的

 结束语

你可能感兴趣的:(云原生,docker,容器)