如何使用Apache Mesos / Marathon运行一次性任务?

时间:2015-08-11 09:25:18

标签: mesos marathon

我试图与Marathon一起完成一次性任务。我能够让任务容器运行,但在任务命令完成后,马拉松运行另一个任务,依此类推。如何防止Marathon运行多个任务/命令?

或者,如果Marathon无法做到这一点,我怎样才能达到预期的行为?

4 个答案:

答案 0 :(得分:9)

作为一个黑客,你可以在最后杀死一个马拉松任务,如下所示:https://github.com/mesosphere/marathon/issues/344#issuecomment-86697361

正如鲁克莱索夫已经提到的那样 - 马拉松是长期任务的代名词:https://stackoverflow.com/a/26647789/1047843

如果Chronos不适合您的情况,您可以将Jenkins与Mesos插件一起使用:https://github.com/jenkinsci/mesos-plugin

或者您可以尝试直接与Mesos交谈并编写自己的框架:http://mesos.apache.org/documentation/latest/app-framework-development-guide/

在我看来,两个最简单的选择是Chronos和Jenkins。

答案 1 :(得分:6)

Marathon is designed用于长时间运行的服务,这意味着它将在进入终端状态后重新启动任务。根据任务的性质,您可能需要查看其他Mesos框架,例如Chronos。如果要启动单个任务,可以使用Mesos附带的mesos-execute工具。

答案 2 :(得分:5)

自问题得到解答后,为马拉松开发了一个名为Eremetic的新框架,允许您执行一次性任务。

https://github.com/klarna/eremetic

答案 3 :(得分:0)

@Sander Smits:@rukletsov如何写你可以使用重复间隔ISO8601只执行一次服务。执行后,chronos将自动禁用该作业。使用“R0 / ..”(0重复)进行时间表设置。