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.

Johan
quelle

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.
Adam
quelle
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
15

Obwohl es etwas veraltet ist, kann es hilfreich sein, den Unterschied zwischen Apaches Mesos und Googles Kubernetes zu lesen , um einige der Grundlagen richtig zu machen. Beachten Sie auch, dass Mesos auf einer anderen Ebene als Kubernetes / Marathon / Chronos arbeitet. Zu guter Letzt sehen Sie Docker Swarm + Mesos von Timothy Chen, wobei Sie berücksichtigen, dass Marathon und Swarm gleichzeitig auf demselben Mesos-Cluster arbeiten können.

Michael Hausenblas
quelle