首页新闻找找看学习计划

阿里云swarm容器服务的内存限制问题

1
悬赏园豆:100 [待解决问题]

最近开始使用阿里云swarm容器服务(非swarm mode),今天在部署容器时遇到了一个让人费解的内存限制问题。

集群一共2台4核8G的节点服务器,部署了16个容器之后,无法继续部署容器,总是提示"no resources available to schedule container"。

后来才知道是编排文件的 mem_limit: 1073741824 #1G 设置引起的,8G内存的服务器只能部署8个容器。本来是想通过这个设置限制一个容器可以使用的最大内存,而阿里云容器服务似乎在调度时把这个值当作一个容器所需的最小内存处理,照这个处理逻辑,如果我要部署100个容器,就得要从阿里云购买100G内存。

我们用阿里云服务器自己搭建docker swarm集群,使用同样的内存限制值,从来没遇到这个问题。而且我们当前就有一个自己搭建的备用docker swarm集群,也是2台4核8G的节点服务器,也是每个容器限制最大1G内存,40多个容器都可以正常部署。

怎么也想不通这个问题,请帮忙解惑。。。

dudu的主页 dudu | 高人七级 | 园豆:39411
提问于:2018-03-20 21:04

吃瓜群众抢沙发

Shendu.cc 2年前

咱们自己搭建的docker swarm集群出现这种情况:四十多个容器现在都要1G的内存,显然内存不够用,docker swarm是怎么处理的?

Bluto 2年前

@Bluto: 不是“都要1G的内存”,是每个容器可以使用的最大内存不能超过1G,如果超过1G,容器会被重启

dudu 2年前

@dudu: 我假设的是最坏的情况:每个容器都到了最大内存(1G),那是不是所有容器都是不可用的状态--一直都在不停地重启,不停地竞争内存资源。

Bluto 2年前

@Bluto: 节点服务器早就挂了,对于8G内存的服务器,即使没达到1G,只要10个容器同时消耗800M内存,节点就挂了

dudu 2年前
@dudu: 所以呀,我感觉阿里云应该是避免出现这个问题才加的限制。 Bluto 2年前

@Bluto: 如果想通过为每个容器保留内存的方式来避免这个问题,可以使用mem_reservation设置

dudu 2年前

@dudu: 如果不能提高利用率,使用swarm的意义就不大了。

today4king 2年前
< >
分享
所有回答(1)
0

厉害了你们

87Super | 园豆:121 (初学一级) | 2018-03-21 19:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册