2015-08-11 9 views
9

Ich versuche, eine einmalige Aufgabe mit Marathon zu laufen. Ich kann den Task-Container ausführen, aber nachdem der Task-Befehl abgeschlossen ist, führt Marathon eine andere Task aus und so weiter. Wie kann ich verhindern, dass Marathon mehrere Aufgaben/Befehle ausführt?Wie führe ich eine einmalige Aufgabe mit Apache Mesos/Marathon?

Oder, wenn dies mit Marathon nicht möglich ist, wie kann ich das gewünschte Verhalten erreichen?

Antwort

9

Als Hack Sie einen Marathon Aufgabe am Ende töten kann, wie hier vorgeschlagen: https://github.com/mesosphere/marathon/issues/344#issuecomment-86697361

Wie rukletsov bereits erwähnt - Marathon ist desigend für Aufgaben mit langer Laufzeit: https://stackoverflow.com/a/26647789/1047843

Wenn Chronos nicht der Fall ist in Ihrer Situation passen Sie Jenkins mit Mesos-Plugin verwenden: https://github.com/jenkinsci/mesos-plugin

Oder Sie können versuchen, mit Mesos direkt zu sprechen und schreiben Sie besitzen Rahmen: http://mesos.apache.org/documentation/latest/app-framework-development-guide/

Meiner Meinung nach wären die zwei einfachsten Optionen Chronos und Jenkins.

+0

Plus 1 für Chronos. Das sind viele verschiedene Antworten. –

+0

In Bezug auf den Suizid-Hack mit der DELETE-API mit Curl, was können wir tun, wenn wir einen Container verwenden und es keine Curl installiert hat? Das Kopieren/Installieren der Binärdatei funktioniert möglicherweise nicht, da dies vom Zielbetriebssystem abhängig sein kann. – ambuj

6

Marathon is designed für lange laufende Dienste, was bedeutet, dass es die Aufgabe neu startet, sobald es in einen Terminalstatus eintritt. Abhängig von der Art Ihrer Aufgabe können Sie sich andere Mesos-Frameworks ansehen, z. Chronos. Wenn Sie eine einzelne Aufgabe starten möchten, können Sie das Werkzeug mesos-execute verwenden, das Mesos begleitet.

+0

Ok, danke, werde ich versuchen, Chronos oder '' Mesos-execute''. –

+0

Ist es möglich, einen Dienst mit Chronos jetzt (nicht geplant) und einmal zu betreiben? –

+1

Ich bin kein Chronos Experte, aber es sollte ISO8601 gut verstehen. Versuchen Sie, "R1/..." als Wert für die "Zeitplan" -Taste in der Jobbeschreibung zu übergeben. – rukletsov

0

@Sander Smits: Wie @rukletsov schrieb Sie können die Wiederholungsintervalle ISO8601 verwenden, um Dienste nur einmal auszuführen. Nach der Ausführung wird der Job automatisch von chronos deaktiviert. Verwenden Sie "R0/.." (0 Wiederholung) für die Zeitplaneinstellung.

4

Seit der Beantwortung der Frage wurde ein neuer Rahmen namens "Eremetic" für den Marathon entwickelt, mit dem Sie einmalige Aufgaben ausführen können.

https://github.com/klarna/eremetic

Verwandte Themen