繁体   English   中英

服务如何在docker swarm中分布

[英]How services are distributed in docker swarm

我可以以某种方式配置主节点如何在docker swarm中分配服务吗? 我认为,它应该看到工作程序节点的空闲资源并将其分发到“最空闲”节点。

目前,我有一个问题,该服务被分配到一个节点上,该节点已满(RAM占90%),开始时比较迟钝,但与此同时,第二个节点几乎没有服务,并且可以处理另一个节点。

docker node ls 
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
wdkklpy6065zxckxyuj000ei4 *   docker-master       Ready               Drain               Leader              18.09.6
sk45rol2whdr5eh2jqozy0035     docker-node01       Ready               Active              Reachable           18.09.6
o4zwwbwwcrbwo4tsd00pxkfuc     docker-node02       Ready               Active                                  18.09.6

现在我有36个(非常相似)服务,其中28个在docker-node01上运行,另外8个在docker-node02上运行。 我认为,理想状态是两个节点上都有16个服务。 两个docker-nodes都相同。

  1. docker swarm如何知道在哪里运行服务? 它使用什么算法?
  2. 是否可以更改/更新用于选择节点的算法?

根据swarmkit项目README的说法,唯一可用的策略是spread因此它以最小负载模式调度任务。

请注意,群集不会移动节点来维持此策略,因此,如果在node01已满后添加了node02,则node02将大部分保持为空。 您可以耗尽两个节点,然后激活它们以查看它是否更好地分配了负载。

您可以在项目文档中找到有关调度算法的更详细的描述:schedule -algorithm

对于较旧的群组管理器,此属性是可配置的: https : //docs.docker.com/swarm/reference/manage/#--strategy--scheduler-placement-strategy

我还找到了https://docs.docker.com/swarm/scheduler/strategy/ ,它解释了很多有关Docker群策略的信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM