Was ist der Unterschied zwischen Apaches Mesos und Googles Kubernetes?


Antworten:


516

Kubernetes ist ein Open-Source-Projekt, das Clusterverwaltungsfunktionen im Google-Stil in die Welt der virtuellen Maschinen oder in "on the Metal" -Szenarien bringt. Es funktioniert sehr gut mit modernen Betriebssystemumgebungen (wie CoreOS oder Red Hat Atomic), die leichtgewichtige Rechenknoten bieten, die für Sie verwaltet werden. Es ist in Golang geschrieben und leicht, modular, tragbar und erweiterbar. Wir (das Kubernetes-Team) arbeiten mit einer Reihe verschiedener Technologieunternehmen (einschließlich Mesosphere, die das Open Source-Projekt Mesos kuratieren) zusammen, um Kubernetes als Standardmethode für die Interaktion mit Computerclustern zu etablieren. Die Idee ist, die Muster zu reproduzieren, die Menschen sehen, die Clusteranwendungen erstellen müssen, basierend auf unseren Erfahrungen bei Google. Einige dieser Konzepte umfassen:

  • Pods - eine Möglichkeit, Container zu gruppieren
  • Replikationscontroller - eine Möglichkeit, den Lebenszyklus von Containern zu verwalten
  • Labels - eine Möglichkeit, Container zu finden und abzufragen, und
  • Dienste - eine Reihe von Containern, die eine gemeinsame Funktion ausführen.

Mit Kubernetes allein haben Sie also etwas, das einfach, leicht in Betrieb zu nehmen, tragbar und erweiterbar ist und das den Dingen, die Sie auf möglichst leichte Weise verwalten, "Cluster" als Substantiv hinzufügt. Führen Sie eine Anwendung in einem Cluster aus und sorgen Sie sich nicht mehr um einen einzelnen Computer. In diesem Fall ist der Cluster genau wie eine VM eine flexible Ressource. Es ist eine logische Recheneinheit. Drehen Sie es auf, verwenden Sie es, ändern Sie die Größe, drehen Sie es schnell und einfach herunter.

Bei Mesos gibt es eine gewisse Überschneidung in Bezug auf die Grundvision, aber die Produkte befinden sich an ganz unterschiedlichen Punkten in ihrem Lebenszyklus und haben unterschiedliche Sweet Spots. Mesos ist ein verteilter Systemkern, der viele verschiedene Maschinen zu einem logischen Computer zusammenfügt. Es wurde für eine Welt geboren, in der Sie viele physische Ressourcen besitzen, um einen großen statischen Computercluster zu erstellen. Das Tolle daran ist, dass viele moderne skalierbare Datenverarbeitungsanwendungen auf Mesos (Hadoop, Kafka, Spark) gut laufen und es ist schön, weil Sie sie alle zusammen mit Ihren neuen, in Containern verpackten Apps auf demselben grundlegenden Ressourcenpool ausführen können . Es ist etwas schwerer als das Kubernetes-Projekt, wird aber dank der Arbeit von Leuten wie Mesosphere immer einfacher zu verwalten.

Was jetzt wirklich interessant wird, ist, dass Mesos derzeit angepasst wird, um viele der Kubernetes-Konzepte hinzuzufügen und die Kubernetes-API zu unterstützen. Es ist also ein Gateway, um mehr Funktionen für Ihre Kubernetes-App zu erhalten (Hochverfügbarkeits-Master, erweiterte Planungssemantik, Skalierbarkeit auf eine sehr große Anzahl von Knoten), wenn Sie diese benötigen, und eignet sich gut zum Ausführen von Produktions-Workloads (Kubernetes) befindet sich noch in einem Alpha-Zustand).

Wenn ich gefragt werde, neige ich dazu zu sagen:

  1. Kubernetes ist ein großartiger Ausgangspunkt, wenn Sie neu in der Clustering-Welt sind. Dies ist der schnellste, einfachste und leichteste Weg, um die Reifen zu treten und mit der clusterorientierten Entwicklung zu experimentieren. Es bietet ein sehr hohes Maß an Portabilität, da es von vielen verschiedenen Anbietern unterstützt wird (Microsoft, IBM, Red Hat, CoreOs, MesoSphere, VMWare usw.).

  2. Wenn Sie bereits Workloads haben (Hadoop, Spark, Kafka usw.), bietet Ihnen Mesos ein Framework, mit dem Sie diese Workloads miteinander verschachteln und einige der neuen Inhalte, einschließlich Kubernetes-Apps, mischen können.

  3. Mesos bietet Ihnen ein Fluchtventil, wenn Sie Funktionen benötigen, die von der Community noch nicht im Kubernetes-Framework implementiert wurden.


4
Toller Überblick. Zwei kurze Gedanken: 1) Ich glaube, Kubernetes ist jetzt eher Beta als Alpha? 2) Informationen über Marathon hinzufügen?
Stricken

57
Zusammenfassend (zum schnellen Lesen - ich hoffe, ich verstehe es richtig): kubernetes ist ein Cluster-Manager für Container (nur?), Während mesos ein verteilter Systemkern ist, der Ihren Cluster für alle unterstützten Frameworks wie ein riesiges Computersystem aussehen lässt und Apps, die für die Ausführung auf Mesos erstellt wurden. Kubernetes ist jedoch ein (unter anderem) Framework, das auf Mesos ausgeführt werden kann. Wenn Sie also beide kombinieren, erhalten Sie einen Cluster, der kein Cluster ist, und einen Cluster-Manager, der keinen zu verwaltenden Cluster hat. Tolle neue Welt :-) (J / K, es gibt eine Menge Vorteile, die man daraus ziehen kann, da kub. Mehr als clst. Phys. Res.
Ist

7
Hier spricht Mesosphere genau darüber beim Kubernetes 1.0 Launch Event: youtube.com/… - Haftungsausschluss: Das bin ich.
Air

68

Beide Projekte sollen die Bereitstellung und Verwaltung von Anwendungen in Containern in Ihrem Rechenzentrum oder Ihrer Cloud vereinfachen.

Um Anwendungen auf Mesos bereitzustellen, können Marathon oder Kubernetes für Mesos verwendet werden.

Marathon ist ein clusterweites Init- und Steuerungssystem zum Ausführen von Linux-Diensten in Gruppen und Docker-Containern. Marathon verfügt über eine Reihe verschiedener Funktionen zur Bereitstellung von Kanarienvögeln und ist ein sehr ausgereiftes Projekt.

Der Marathon läuft auf Mesos, einem hoch skalierbaren, kampferprobten und flexiblen Ressourcenmanager. Marathon ist nachweislich skalierbar und läuft in vielen Produktionsumgebungen.

Der Mesos and Mesosphere-Technologie-Stack bietet eine Cloud-ähnliche Umgebung zum Ausführen vorhandener Linux-Workloads, aber auch eine native Umgebung zum Erstellen neuer verteilter Systeme.

Mesos ist ein Kernel für verteilte Systeme mit einer vollständigen API für die Programmierung direkt im Rechenzentrum. Es abstrahiert die zugrunde liegende Hardware (z. B. Bare Metal oder VMs) und macht nur die Ressourcen verfügbar. Es enthält Grundelemente zum Schreiben verteilter Anwendungen (z. B. Spark war ursprünglich eine Mesos-App, Chronos usw.) wie Nachrichtenübergabe, Aufgabenausführung usw. Somit werden völlig neue Anwendungen ermöglicht. Apache Spark ist ein Beispiel für ein neues Framework (im Mesos-Jargon genannt), das ursprünglich für Mesos erstellt wurde. Dies ermöglichte eine sehr schnelle Entwicklung - die Entwickler von Spark mussten sich keine Gedanken über das Netzwerk machen, um Aufgaben auf Knoten zu verteilen, da dies ein zentrales Element in Mesos ist.

Meines Wissens wird Kubernetes heute in Produktionsbereitstellungen nicht mehr in Google verwendet. Für die Produktion verwendet Google Omega / Borg, das dem Mesos / Marathon-Modell viel ähnlicher ist. Das Tolle an Mesos als Grundlage ist jedoch, dass sowohl Kubernetes als auch Marathon darauf laufen können.

Weitere Ressourcen zu Marathon:

https://mesosphere.github.io/marathon/

Video: https://www.youtube.com/watch?v=hZNGST2vIds


37

Kubernetes und Mesos sind ein Match, das im Himmel gemacht wurde. Kubernetes ermöglicht die Pod-Abstraktion (Gruppe von am selben Standort befindlichen Containern) zusammen mit Pod-Labels für die Serviceerkennung, den Lastenausgleich und die Replikationssteuerung. Mesos bietet die detaillierten Ressourcenzuweisungen für Pods über Knoten in einem Cluster hinweg und kann Kubernetes dazu bringen, gut mit anderen Frameworks zu spielen, die auf denselben Clusterressourcen ausgeführt werden.

aus der Readme von kubernetes-mesos


18

Mesos und Kubernetes können beide verwendet werden, um einen Cluster von Maschinen zu verwalten und die Hardware zu abstrahieren.

Mesos bietet Ihnen von Natur aus keinen Planer (um zu entscheiden, wo und wann Prozesse ausgeführt werden sollen und was zu tun ist, wenn der Prozess fehlschlägt). Sie können beispielsweise Marathon oder Chronos verwenden oder einen eigenen schreiben.

Kubernetes erledigt die Planung sofort für Sie und kann als Planer für Mesos verwendet werden (bitte korrigieren Sie mich, wenn ich mich hier irre!). Hier können Sie sie zusammen verwenden. Mesos kann mehrere Scheduler haben, die denselben Cluster gemeinsam nutzen. Theoretisch können Sie also Kubernetes und Chronos zusammen auf derselben Hardware ausführen.

Ganz einfach: Wenn Sie die Kontrolle über die Planung Ihrer Container haben möchten, entscheiden Sie sich für Mesos, andernfalls rockt Kubernetes.


1
Diese Antwort ist ungenau und verwirrend. Es gibt keine einfache Möglichkeit, Mesos auf Kubernetes auszuführen - und tatsächlich wäre dies eine Umkehrung der Architektur. Da Kubernetes weniger allgemein fokussiert ist als Mesos, ist es sinnvoller, es auf Mesos auszuführen.
SSK2

1
Ja, ich meinte, Kubernetes laufen auf Mesos. Kubernetes liefert die Planungslogik für das Mesos-Framework und Mesos kümmert sich um die Ausführung des Jobs usw. Entschuldigung, wenn das nicht klar war.
user2851943

2
@air Ich bin interessiert zu wissen, wie Sie Scheduler hier definieren würden? Mesos selbst scheint keine Planungslogik bereitzustellen? Dies wird alles in Chronos / Marathon / etc behandelt? (Vielleicht habe ich etwas verpasst! :))
user2851943

6
Ich glaube, ich verstehe, worauf Sie hinaus wollen - Mesos ist ein Framework, mit dem Scheduler angeschlossen werden können. Ich war verwirrt über den Wortlaut, der darauf hindeutet, dass Mesos etwas Wichtiges weggelassen hat ("Mesos bietet Ihnen nichts"), wenn das vorbei ist Design. Ich habe meine Ablehnung entfernt.
Air

5
Diese Antwort ist richtig. Mesos konzentriert sich auf das Ressourcenmanagement und entkoppelt die Planung, indem steckbare Frameworks zugelassen werden. Ein gutes Beispiel ist, was Netflix getan hat, indem es ein Planungsframework geschrieben hat: Fenzo techblog.netflix.com/2015/08/…
Camilo Crespo

5

Ich mag dieses kurze Video hier Mesos Lernmaterial

Bei Bare-Metal-Clustern müssten Sie Stapel wie HDFS, SPARK, MR usw. erzeugen. Wenn Sie also Aufgaben im Zusammenhang mit diesen nur mit Bare-Metal-Cluster-Management starten, wird es viel Kaltstartzeit geben.

Mit Mesos können Sie diese Dienste auf den blanken Metallen installieren und die Startzeit dieser Basisdienste vermeiden. Das macht Mesos gut. und kann von darauf aufbauenden Kubernetes genutzt werden.


3

"Ich verstehe, dass beide Server-Cluster-Verwaltungssoftware sind."

Diese Aussage ist nicht ganz richtig. Kubernetes verwaltet keine Servercluster, sondern orchestriert Container so, dass sie mit minimalem Aufwand und Aufwand zusammenarbeiten. Mit Kubernetes können Sie Teile Ihrer Anwendung als "Pods" (einen oder mehrere Container) definieren, die von "Bereitstellungen" oder "Daemon-Sets" (und einigen anderen) bereitgestellt und über Dienste der Außenwelt ausgesetzt werden. Kubernetes verwaltet den Cluster jedoch nicht selbst (es gibt Tools, die Cluster für Sie bereitstellen, konfigurieren und skalieren können, die jedoch nicht Teil von Kubernetes selbst sind).

Mesos hingegen kommt dem "Cluster-Management" insofern näher, als es steuern kann, was wo läuft, aber nicht nur in Bezug auf die Planung von Containern. Mesos verwaltet auch eigenständige Software, die auf den Clusterservern ausgeführt wird. Obwohl es meistens als Alternative zu Kubernetes verwendet wird, kann Mesos problemlos mit Kubernetes arbeiten, da sich die Funktionalität in vielen Bereichen überschneidet, Mesos jedoch mehr kann (aber bei den überlappenden Teilen ist Kubernetes tendenziell besser).

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.