可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I'm trying to run a one-off task with Marathon. I'm able to get the task container running, but after the task command completes, marathon runs another task, and so on. How can I prevent Marathon from running more than one task/command?
Or, if this is not possible with Marathon, how can I achieve the desired behaviour?
回答1:
As a hack you can kill a marathon task at the end, as suggested here: https://github.com/mesosphere/marathon/issues/344#issuecomment-86697361
As rukletsov already mentioned - Marathon is desigend for long-running tasks: https://stackoverflow.com/a/26647789/1047843
If Chronos doesn't fit in your situation you can use Jenkins with Mesos plugin: https://github.com/jenkinsci/mesos-plugin
Or you can try to talk with Mesos directly and write you own framework: http://mesos.apache.org/documentation/latest/app-framework-development-guide/
In my opinion the two easiest options would be Chronos and Jenkins.
回答2:
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. If you want to start a single task, you can use mesos-execute
tool which accompanies Mesos.
回答3:
Since the question was answered a new framework called Eremetic has been developed for marathon that allows you to run one off tasks.
https://github.com/klarna/eremetic
回答4:
@Sander Smits: How @rukletsov wrote you can use the repeating intervals ISO8601 to execute services only one time. After the execution the job will be automatically disabled by chronos. Use"R0/.." (0 repetition) for schedule setting.