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

How to run a one-off task with Apache Mesos/Marathon?

我正尝试 运行 使用 Marathon 完成一项一次性任务。我能够获取任务容器 运行ning,但在任务命令完成后,马拉松 运行s 另一个任务,依此类推。我怎样才能防止 Marathon 运行超过一个 task/command?

或者,如果 Marathon 无法做到这一点,我该如何实现所需的行为?

马拉松is designed for long running services, which means it will restart the task once it enters a terminal state. Depending on the nature of your task, you may want to take a look at other Mesos frameworks, e.g. Chronos。如果要启动单个任务,可以使用 Mesos 附带的 mesos-execute 工具。

作为黑客,您可以在最后结束马拉松任务,如这里所建议的:https://github.com/mesosphere/marathon/issues/344#issuecomment-86697361

正如 rukletsov 已经提到的 - Marathon 是为长期 运行 任务设计的:

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

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

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

@Sander Smits:@rukletsov 是如何写的,您可以使用重复间隔 ISO8601 仅执行一次服务。执行后,作业将被 chronos 自动禁用。使用"R0/.."(0次重复)进行日程设置。

自从问题得到解答后,一个名为 Eremetic 的新框架已经为马拉松开发,它允许您 运行 一次性完成任务。

https://github.com/klarna/eremetic