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上;有研究過的麼?
2 回答

MMTTMM
TA貢獻1869條經驗 獲得超4個贊
swarm在用命令swarm manager啟動swarm manager時,可用--strategy指定調度策略。
swarm提供了三種調度策略計算節點的排名,在調度(例如選擇哪一個節點運行容器時)時,取排名最前的節點
這三種調度策略是:
spread 默認策略,swarm優先選擇占用資源(如CPU、內存等)最少的節點,能保證集群中所有節點資源的均勻使用。
它的好處是,保證binpack 與spread相反,它的目的是盡可能地填滿一個節點,以保證更多空余的節點。
random 隨機選擇節點。一般用于開發測試階段。
如果沒改的話, 應該是spread的才對

海綿寶寶撒
TA貢獻1809條經驗 獲得超8個贊
經過查看一些文檔,都沒有找到原因,后來就猜想可能是swarm
服務發現的原因(我使用的是DockerHub
提供的),因為調度器是對服務發現收集的節點信息做篩選的。
將服務發現換成etcd
之后,這個問題解決。
- 2 回答
- 0 關注
- 1654 瀏覽
添加回答
舉報
0/150
提交
取消