Marathon gegen Kubernetes gegen Docker Swarm unter DC / OS mit Docker-Containern


101

Ich suche nach Vor- und Nachteilen, ob ich Marathon und Chronos, Docker Swarm oder Kubernetes verwenden soll, wenn Docker-Container unter DC / OS ausgeführt werden.

Wann ist es beispielsweise besser, Marathon / Chronos als Kubernetes zu verwenden und umgekehrt?

Im Moment experimentiere ich hauptsächlich, aber hoffentlich werden wir nach dem Sommer einen dieser Dienste in der Produktion einsetzen. 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" sind und Sie nichts völlig Neues lernen müssen. Wir verwenden bereits docker-composeund das wird mit Docker Swarm (zumindest theoretisch) sofort funktionieren, also wäre das ein großes Plus. Mein Hauptanliegen bei Docker Swarm ist, ob es alle Anwendungsfälle abdeckt, die zum Ausführen eines Systems in der Produktion erforderlich sind.

Antworten:


167

Ich werde versuchen, die einzigartigen Aspekte jedes Container-Orchestrierungs-Frameworks auf Mesos aufzuschlüsseln.

Verwenden Sie Docker Swarm, wenn:

Verwenden Sie Kubernetes-Mesos, wenn:

  • Sie möchten K8s Pods starten, bei denen es sich um Gruppen von Containern handelt, die gemeinsam geplant und gemeinsam angeordnet sind und Ressourcen gemeinsam nutzen.
  • 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 kennzeichnungsbasierte Serviceerkennung, den Lastausgleich und die Replikationssteuerung von K8 verwenden.
  • Siehe http://kubernetesio.blogspot.com/2015/04/kubernetes-and-mesosphere-dcos.html

Verwenden Sie Marathon, wenn:

  • Sie möchten Docker- oder Nicht-Docker-Apps / -Dienste mit langer Laufzeit starten.
  • Sie möchten Mesos-Attribute für die auf Einschränkungen basierende Planung verwenden.
  • Sie möchten Anwendungsgruppen und Abhängigkeiten verwenden, um verwandte Dienste zu starten, zu skalieren oder zu aktualisieren.
  • Sie möchten Integritätsprüfungen verwenden, um fehlerhafte Dienste automatisch neu zu starten oder fehlerhafte Bereitstellungen / Upgrades zurückzusetzen.
  • Sie möchten HAProxy oder Consul für die Serviceerkennung integrieren.
  • Sie möchten Apps über eine Web-Benutzeroberfläche oder eine REST-API starten und überwachen.
  • Sie möchten ein Framework verwenden, das von Anfang an unter Berücksichtigung von Mesos erstellt wurde.

Verwenden Sie Chronos, wenn:

  • Sie möchten Docker- oder Nicht-Docker-Aufgaben starten, die voraussichtlich beendet werden.
  • Sie möchten eine Aufgabe so planen, dass sie zu einem bestimmten Zeitpunkt / Zeitplan (a la cron) ausgeführt wird.
  • Sie möchten einen DAG-Workflow für abhängige Aufgaben planen.
  • Sie möchten Jobs über eine Web-Benutzeroberfläche oder eine REST-API starten und überwachen.
  • Sie möchten ein Framework verwenden, das von Anfang an unter Berücksichtigung von Mesos erstellt wurde.

1
Ich wollte nur hinzufügen, dass es ab K8s 1.6 Folgendes unterstützt (einige davon schon lange): * Docker-CRI (Beta) und Cri-O, Frakti, Rkt (Alpha) für Nicht-Docker-Container. * Integritätsprüfungen, um festzustellen, wann ein Container gestartet wurde / nicht mehr reagiert. * Erholung von ungesunden Schoten. * Cron mag Jobs, sowohl wiederkehrend als auch einmal. * Stapeljobs (manuell gestartet und einmal vollständig ausgeführt). Da Mesosphere selbst sagt, dass K8s ein erstklassiger Bürger auf Mesos ist, fühlt sich das Argument "von Anfang an gebaut" auch ein bisschen verrückt an ...
Jonas Schubert Erlandsson

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.