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.