【问题标题】:Marathon constraints for mutually exclusive docker containers互斥 docker 容器的马拉松约束
【发布时间】:2015-10-15 22:16:41
【问题描述】:

我正在尝试使用 mesos/marathon 实现一个 lizardfs 集群。为此,我创建了一些 docker 镜像。

我需要获取某个类型的 docker 容器(lizardfs-master),而不是在已经运行另一种类型的容器(lizardfs-shadow 或 lizardfs-metalogger)的同一节点上运行。也就是说,我需要运行这三种容器中的每一种的实例,但它们不能同时在同一个节点上运行。它们是相互排斥的。

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

有没有办法在马拉松比赛中做到这一点,即使用约束?会怎么样?

谢谢。

【问题讨论】:

    标签: docker mesosphere marathon


    【解决方案1】:

    我可以想象有几种方法可以解决这个问题。 :)

    我会做以下事情..

    设置 3 个应用程序,每个应用程序用于您的特定 docker 映像(master、shadow、metalogger)。 然后,您可以在应用程序上创建一个约束,将应用程序与特定节点联系起来:

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

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

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

    我没有对此进行测试,但对我来说它看起来很合理。 ;)

    【讨论】:

    • 理想情况下,我的想法不是将 docker 容器绑定到特定节点,而是马拉松可以“意识到”它无法在已经运行某些其他容器类型的节点上运行某个容器。我想要一个“扁平”集群,如果一个节点被破坏,马拉松可以决定在哪里运行那个“死”容器,选择另一个不运行互斥容器的节点:)
    • 是的,您还可以将集群拆分为组,然后使用 LIKE 或 UNLIKE 约束将您的容器分配给节点组并相互排除它们。
    • 有道理。因此,我可以将集群节点拆分为不相交的集合,并强制每个互斥容器在不同的节点子集中运行。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-21
    • 2016-02-27
    • 1970-01-01
    • 1970-01-01
    • 2015-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多