Ich bin relativ neu in all diesen Bereichen, aber ich habe Probleme, mir ein klares Bild unter den aufgeführten Technologien zu machen.
Alle diese versuchen zwar, verschiedene Probleme zu lösen, haben aber auch Gemeinsamkeiten. Ich würde gerne verstehen, was die Dinge sind, die gemeinsam sind und was anders ist. Es ist wahrscheinlich, dass die Kombination von wenigen gut passt, wenn ja, was sind sie?
Ich liste einige von ihnen zusammen mit Fragen auf, aber es wäre großartig, wenn jemand sie alle detailliert auflisten und die Fragen beantworten würde.
Kubernetes gegen Mesos:
Dieser Link
Was ist der Unterschied zwischen Apaches Mesos und Googles Kubernetes?
bietet einen guten Einblick in die Unterschiede, aber ich kann nicht verstehen, warum Kubernetes auf Mesos laufen sollte. Hat es mehr damit zu tun, zwei OpenSource-Lösungen zusammenzubringen?
Kubernetes gegen Core-OS-Flotte:
Wenn ich Kubernetes benutze, ist eine Flotte erforderlich?
Wie passt Docker-Swarm in all das?
Antworten:
Offenlegung: Ich bin leitender Ingenieur bei Kubernetes
Ich denke, dass Mesos und Kubernetes hauptsächlich darauf abzielen, ähnliche Probleme beim Ausführen von Clusteranwendungen zu lösen. Sie haben unterschiedliche Historien und unterschiedliche Lösungsansätze.
Mesos konzentriert seine Energie auf eine sehr allgemeine Planung und das Anschließen mehrerer verschiedener Planer. Dies bedeutet, dass Systeme wie Hadoop und Marathon in derselben Planungsumgebung nebeneinander existieren können. Mesos konzentriert sich weniger auf den Betrieb von Containern. Mesos existierte vor dem weit verbreiteten Interesse an Containern und wurde in Teilen umgestaltet, um Container zu unterstützen.
Im Gegensatz dazu wurde Kubernetes von Grund auf als Umgebung für die Erstellung verteilter Anwendungen aus Containern konzipiert. Es enthält Grundelemente für die Replikation und Serviceerkennung als Kerngrundelemente, wobei solche Dinge über Frameworks in Mesos hinzugefügt werden. Das Hauptziel von Kubernetes ist ein System zum Erstellen, Ausführen und Verwalten verteilter Systeme.
Flotte ist ein untergeordneter Aufgabenverteiler. Es ist nützlich, um ein Clustersystem zu booten. CoreOS verwendet es beispielsweise, um die Kubernetes-Agenten und Binärdateien an die Computer in einem Cluster zu verteilen, um einen Kubernetes-Cluster aufzurufen. Es ist nicht wirklich beabsichtigt, die gleichen Probleme bei der Entwicklung verteilter Anwendungen zu lösen. Stellen Sie sich das eher wie systemd / init.d / upstart für Ihren Cluster vor. Wenn Sie Kubernetes ausführen, ist dies nicht erforderlich. Sie können andere Tools (z. B. Salt, Puppet, Ansible, Chef, ...) verwenden, um dieselbe Binärverteilung zu erzielen.
Swarm ist ein Versuch von Docker, die vorhandene Docker-API so zu erweitern, dass ein Computercluster wie eine einzelne Docker-API aussieht. Grundsätzlich zeigen unsere Erfahrungen bei Google und anderswo, dass die Knoten-API für eine Cluster-API nicht ausreicht. Eine Reihe von Diskussionen hierzu finden Sie hier: https://github.com/docker/docker/pull/8859 und hier: https://github.com/docker/docker/issues/8781
Hoffentlich hilft das! Besuchen Sie uns auf IRC @ # google-container, wenn Sie mehr darüber sprechen möchten.
quelle
Ich denke, die einfachste Antwort ist, dass es keine einfache Antwort gibt. Der rasche Anstieg der Leistung von Containern und insbesondere von Docker hat ein Machtvakuum für "Container Scheduling and Orchestration" hinterlassen, was auch immer dies bedeuten mag. In Wirklichkeit bedeutet dies, dass Sie über eine Reihe von Technologien verfügen, die auf einigen Ebenen harmonisch funktionieren können, jedoch mit bestimmten Aspekten im Wettbewerb. Kubernetes kann beispielsweise als One-Stop-Shop für die Bereitstellung und Verwaltung von Containern in einem Computercluster verwendet werden (wie Google es ursprünglich entworfen hat), kann aber auch auf der Flotte sitzen und die Ausfallsicherheitsstufe nutzen, die Fleet unter CoreOS bereitstellt.
Wie in diesem Google-Video angegeben Kubernetes keine Komplettlösung für die Skalierung von Containern, sondern eine gute Aussage für den Anfang. Auf die gleiche Weise würde man erwarten, dass Apache Mesos irgendwann mit Kubernetes arbeiten kann, aber nicht mit Marathon, da Marathon die gleiche Rolle wie Kubernetes zu spielen scheint. Irgendwo denke ich, dass ich gelesen habe, dass dies Teil derselben Bemühungen werden könnte, aber ich könnte mich darin irren - es geht wirklich um die strategische Ausrichtung der Mesosphäre und die entsprechende Übernahme der Kubernetes-Prinzipien.
In der DockerCon-Keynote schlug Solomon Hykes vor, Swarm sei eine Ebene, die eine gemeinsame Schnittstelle zu den vielen Orchestrierungs- und Planungsframeworks bieten könnte. Soweit ich sehen kann, ist Swarm so konzipiert, dass es einen reibungslosen Docker-Bereitstellungsworkflow bietet, der mit einigen vorhandenen Container-Workflow-Frameworks wie Deis zusammenarbeitet, aber flexibel genug ist, um einer "schweren" Bereitstellung und Ressourcenverwaltung wie Mesos nachzugeben.
Hoffe das hilft - das könnte ein enormer Beitrag sein. Ich denke, der Schlüssel ist, dass es sich um junge, sich weiterentwickelnde Dienste handelt, die wahrscheinlich zusammengeführt und interoperabel werden, aber wir müssen die nächsten 12 Monate ausfahren, um zu sehen, wie sie sich entwickeln. Es gibt einige sehr kluge Leute, die sich mit dem Problem befassen, daher sieht die Zukunft sehr rosig aus.
quelle
Soweit ich es verstehe:
Mesos, Kubernetes und Fleet versuchen alle, ein sehr ähnliches Problem zu lösen. Die Idee ist, dass Sie Ihre gesamte Hardware von Entwicklern abstrahieren und das 'Cluster Management Tool' alles für Sie erledigt. Dann müssen Sie dem Cluster nur noch einen Container geben, ihm einige Informationen geben (ihn dauerhaft laufen lassen, skalieren, wenn X passiert usw.), und der Cluster-Manager wird dies ermöglichen.
Mit Mesos übernimmt es die gesamte Clusterverwaltung für Sie, enthält jedoch nicht den Scheduler. Der Scheduler ist das Bit, das sagt, ok, dieser Prozess benötigt 2 Prozesse und 512 MB RAM, und ich habe dort einen Computer mit diesem freien, also werde ich ihn auf diesem Computer ausführen. Es gibt einige Plugin-Scheduler für Mesos: Marathon und Chronos, und Sie können Ihre eigenen schreiben. Dies gibt Ihnen viel Leistung bei der Ressourcenverteilung und Cluster-Skalierung usw.
Fleet und Kubernetes scheinen diese Art von Details zu abstrahieren (so dass Sie im Grunde keinen eigenen Scheduler schreiben müssen). Dies bedeutet, dass Sie Ihre Aufgaben definieren und in dem von Fleet oder Kubernetes definierten Format / der von Fleeres Kubernetes festgelegten Form einreichen müssen. Anschließend übernehmen sie die Aufgaben (Container) und planen sie für Sie.
Ich denke also: Die Verwendung von Mesos bedeutet möglicherweise etwas mehr Arbeit beim Schreiben Ihres eigenen Schedulers, bietet jedoch möglicherweise bei Bedarf mehr Flexibilität.
Ich denke, die Idee, Kubernetes auf Mesos auszuführen, ist, dass Kubernetes als Scheduler für Mesos fungiert. Persönlich bin ich mir nicht sicher, welche Vorteile dies bringt, wenn man das eine oder andere alleine laufen lässt (hoffentlich springt jemand ein und erklärt es!)
Wie MikeB sagte ... es ist noch früh, und es ist alles zu gewinnen (behalten Sie auch das ECS von Amazon im Auge), also gibt es viele konkurrierende Standards und viele Überschneidungen!
-edit- Ich habe Docker Swarm nicht erwähnt, da ich nicht wirklich viel Erfahrung damit habe.
quelle
Für alle, die nach 2017 dazu kommen, ist die Flotte veraltet. Benutze es nicht mehr.
Flottendokumente besagen, dass "Flotte von CoreOS nicht mehr aktiv entwickelt oder gewartet wird" und eine Verbindung zur Container-Orchestrierung: Übergang von der Flotte zu Kubernetes . Die Flotte wurde aus Container Linux ( früher bekannt als CoreOS Linux ) entfernt und durch Kubernetes kubelet (Agent) ersetzt. Dies fiel mit einem Unternehmensschwerpunkt zusammen, Tectonic (eine Kubernetes-Distribution) als Hauptprodukt anzubieten .
quelle