docker Swarm调度策略问题

发布于 2022-09-05 08:56:07 字数 235 浏览 15 评论 0

Swarm的spread和binpack调度策略,选择节点的时候不是实时获取系统可用内存和CPU资源的麽?

我做了如下测试:

1,搭建三台docker主机的swarm集群:node-1,node-2,node-3,每个docker主机配置一样,都是4G内存,一颗2核CPU;
2,将node-1的CPU跑满(或消耗内存);
3,新建6个容器,还是会有2个容器分配到了node-1上;

有研究过的麽?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

笔落惊风雨 2022-09-12 08:56:07

经过查看一些文档,都没有找到原因,后来就猜想可能是swarm服务发现的原因(我使用的是DockerHub提供的),因为调度器是对服务发现收集的节点信息做筛选的。
将服务发现换成etcd之后,这个问题解决。

柠栀 2022-09-12 08:56:07

swarm在用命令swarm manager启动swarm manager时,可用--strategy指定调度策略。
swarm提供了三种调度策略计算节点的排名,在调度(例如选择哪一个节点运行容器时)时,取排名最前的节点

这三种调度策略是:

  • spread 默认策略,swarm优先选择占用资源(如CPU、内存等)最少的节点,能保证集群中所有节点资源的均匀使用。
    它的好处是,保证
  • binpack 与spread相反,它的目的是尽可能地填满一个节点,以保证更多空余的节点。
  • random 随机选择节点。一般用于开发测试阶段。

如果没改的话, 应该是spread的才对

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文