2015-10-15 71 views
0

我试图用mesos/marathon实现lizardfs集群。我为此创建了一些码头图像。我需要得到一个特定类型的docker容器(lizardfs-master)而不是在已经运行另一种类型的容器(lizardfs-shadow或lizardfs-metalogger)的同一个节点上运行。也就是说,我需要运行这三种类型容器中的每一种的实例,但它们不能同时在同一个节点上运行。它们是相互排斥的。相互排斥的码头集装箱的马拉松限制

我不想限制可以运行每个容器的节点。我只是想让它们独占。

有没有什么办法可以在马拉松中完成这个,即使用约束?它会怎样?

谢谢。

回答

0

我可以想象有几种方法可以实现这一点。 :)

我会做下列..

设置3个应用程序,每一个为您的具体泊坞窗图像(主,阴影,metalogger)。 然后,你可以对捆绑的应用程序特定节点的应用程序创建一个约束:

"constraints": [["hostname", "CLUSTER", "a.specific.node.com"]] 

https://github.com/mesosphere/marathon/blob/master/docs/docs/constraints.md#cluster-operator

我想你也可以定义多个节点。

我没有测试这个,但它对我来说看起来很合理。 ;)

+0

理想情况下,我的想法并不是将docker容器绑定到特定节点,但marathon可以“实现”它不能在已经运行其他容器类型的节点上运行某个容器。我想要一个“扁平”的集群,其中马拉松,如果节点损坏,可以决定在哪里运行该“死”容器,选择另一个不运行互斥容器的节点:) –

+0

是的,你可以额外拆分将群集分组,然后使用LIKE或UNLIKE约束将您的容器分配给节点组并将它们相互排斥。 –

+0

有道理。因此,我可以将群集节点拆分为不相交的集合,并强制每个互斥容器运行在不同的节点子集中。谢谢! –