[英]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都相同。
根据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.