2015-03-22 16 views
83

Ich bin auf der Suche nach einigen Vor-und Nachteile von Marathon und Chronos, Docker Swarm oder Kubernetes bei Docker Container auf DC/OS.Marathon vs Kubernetes vs Docker Swarm auf DC/OS mit Docker Containern

Zum Beispiel, wann ist es besser, Marathon/Chronos als Kubernetes zu verwenden und umgekehrt?

Im Moment experimentiere ich hauptsächlich, aber hoffentlich werden wir einen dieser Dienste nach dem Sommer in der Produktion verwenden. Dies kann Docker Swarm disqualifizieren, da ich nicht sicher bin, ob es bis dahin produktionsbereit sein wird.

Was ich an Docker Swarm mag, ist, dass es im Wesentlichen nur "Docker-Befehle" ist und man nicht etwas völlig Neues lernen muss. Wir verwenden bereits docker-compose und das funktioniert mit Docker Swarm (zumindest in der Theorie) out of the box, also wäre das ein großes Plus. Mein Hauptanliegen bei Docker Swarm ist, dass es alle Anwendungsfälle abdeckt, die für den Betrieb eines Systems in der Produktion erforderlich sind.

Antwort

151

Ich werde versuchen, die einzigartigen Aspekte der einzelnen Container Orchestrierung Framework auf Mesos zu brechen.

Verwenden Docker Swarm wenn:

Verwenden Kubernetes-Mesos wenn:

  • wollen Sie K8S Pods starten, die Gruppen von Behältern zusammen geplant und zusammen, Ressourcen-Sharing-co-located sind.
  • Sie möchten einen Dienst neben einem oder mehreren Sidekick-Containern (z. B. Protokollarchivierer, Metrikmonitor) starten, die sich neben dem übergeordneten Container befinden.
  • Sie möchten die Label-basierte Service-Erkennung, Lastverteilung und Replikationskontrolle von K8s verwenden.
  • Siehe http://kubernetesio.blogspot.com/2015/04/kubernetes-and-mesosphere-dcos.html

Verwenden Marathon wenn:

  • Sie wollen Docker oder nicht-Docker lang laufende Anwendungen/Dienste starten.
  • Sie möchten Mesos-Attribute für die Constraint-basierte Planung verwenden.
  • Sie möchten Anwendungsgruppen und Abhängigkeiten zum Starten, Skalieren oder Aktualisieren verwandter Dienste verwenden.
  • Sie möchten Health Checks verwenden, um ungesunde Services automatisch neu zu starten oder ungesicherte Implementierungen/Upgrades rückgängig zu machen.
  • Sie möchten HAProxy oder Consul für Service Discovery integrieren.
  • Sie möchten Apps über eine Web-Benutzerschnittstelle oder eine REST-API starten und überwachen.
  • Sie möchten ein Framework verwenden, das von Anfang an mit Mesos erstellt wurde.

Verwenden Chronos wenn:

  • Sie wollen Aufgaben Docker oder nicht-Docker starten, beenden erwartet.
  • Sie möchten planen, dass eine Aufgabe zu einem bestimmten Zeitpunkt ausgeführt wird (a la cron).
  • Sie möchten einen DAG-Workflow abhängiger Aufgaben einplanen.
  • Sie möchten Jobs über eine Webbenutzerschnittstelle oder eine REST-API starten und überwachen.
  • Sie möchten ein Framework verwenden, das von Anfang an mit Mesos erstellt wurde.
+1

Ich wollte nur hinzufügen, dass, wie von K8S 1.6 es die folgenden Punkte (ein Teil davon für eine lange Zeit) unterstützt: * Docker-CRI (beta) und cri-o, frakti, rkt (alpha) für Nicht Docker Container. * Health überprüft, ob ein Container gestartet wurde/nicht mehr reagiert. * Erholung von ungesunden Schoten. * Cron wie Jobs, wiederkehrend und einmal. * Batch-Jobs (wird manuell gestartet und wird einmal vollständig ausgeführt). Seit [Mesosphere selbst] (https://messosphere.com/blog/2015/09/25/kubernetes-and-the-dcos/) sagen K8s ist ein erstklassiger Bürger auf Mesos das "von Anfang an" Argument gefühlt ein bisschen wague auch ... –