Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
docker swarm中服务的分布方式_Docker_Docker Swarm - Fatal编程技术网

docker swarm中服务的分布方式

docker swarm中服务的分布方式,docker,docker-swarm,Docker,Docker Swarm,我可以配置主节点如何在docker swarm中分发服务吗?我认为,它应该看到工作节点的空闲资源,并将其分发到“最空闲”的节点 目前我遇到的问题是,服务被分配到一个节点中,这个节点已经满了(90%的RAM),并且它开始变慢,但同时第二个节点几乎没有服务,它可以处理另一个节点 docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGE

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

目前我遇到的问题是,服务被分配到一个节点中,这个节点已经满了(90%的RAM),并且它开始变慢,但同时第二个节点几乎没有服务,它可以处理另一个节点

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节点都相同

  • docker swarm如何知道在哪里运行服务?它使用什么算法
  • 是否可以更改/更新选择节点的算法
    根据swarmkit项目,唯一可用的策略是
    spread
    ,因此它以负载最少的模式安排任务

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

    您可以在项目文档中找到有关计划算法的更详细说明:

    对于较旧的swarm manager,此属性是可配置的:

    我还发现,它解释了许多关于Docker swarm策略的问题