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:
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.).
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.
Mesos bietet Ihnen ein Fluchtventil, wenn Sie Funktionen benötigen, die von der Community noch nicht im Kubernetes-Framework implementiert wurden.
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
quelle
aus der Readme von kubernetes-mesos
quelle
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.
quelle
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.
quelle
"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).
quelle