关于Docker的Mesos和Marathon的局限性

时间:2015-08-24 15:39:31

标签: docker containers mesos mesosphere marathon

我们有这种情况。

我们为Mesos提供了3/3主/从弓。

每个套管都是相同的,4GB RAM和4个核心CPU。

我们已经开始使用1核CPU和1GB RAM的10个马拉松应用程序。我们启动了容器,但没有使用它们,根据系统它说97%的CPU是免费的。

现在,我们正在尝试使用3Core CPU和2GB RAM启动另一个容器。

不幸的是,我们无法启动容器,根据Mesos日志,它说马拉松已经拒绝了提议,但是所有从属节点都没有做任何事情。 Marathon应用程序本身就处于部署状态。

如果mesos无法为马拉松应用程序分配资源(如果容器没有使用资源),那么Doc​​ker集成的用途是什么。

根据我的理解:

一旦马拉松应用程序接受了一个提议,即使docker没有使用该资源,mesos也会认为应用程序已经在使用资源。但是如果容器没有使用任何资源,则mesos需要收集可用资源并分配给下一个马拉松应用程序。

而不是一旦将报价分配给马拉松App,Mesos就会从总资源中减去分配的资源。

我们没有充分利用Mesos / Marathon中的Docker功能。

让我知道任何建议和答案。

谢谢

2 个答案:

答案 0 :(得分:2)

Mesos跟踪“分配”而不是实际使用情况。如果您的应用没有做任何事情,并不意味着它不会在下一刻做任何事情。这意味着,如果您的应用请求1个CPU,则此CPU将保留给该应用。

现在,如果您不想精确估算应用所使用的资源,您可能需要查看oversubscription in Mesos。但是,您必须记住,一旦应用程序请求超额订阅的资源(已为其分配了这些资源),使用超额订阅资源的应用程序可能会被终止。

答案 1 :(得分:1)

Mesos / Marathon实际上考虑分配的10 *(1GB + 1CPU),因为这是您的应用程序允许使用的最大值。 所以是的,你的理解是正确的。

在我看来,你至少有两个选择

  1. 为您的任务分配更少的资源。
  2. 实际上有一个有趣的新功能似乎适合您的用例:oversubscription基本上尝试利用分配的和实际使用的资源之间的差异。