Was macht Kubernetes eigentlich? [geschlossen]

133

Kubernetes wird als Container-Cluster "Scheduler / Orchestrator" in Rechnung gestellt, aber ich habe keine Ahnung, was dies bedeutet. Nachdem ich die Kubernetes-Site und das (vage) GitHub-Wiki gelesen habe, kann ich am besten feststellen, dass es irgendwie herausfindet, welche VMs verfügbar sind / Ihren Docker-Container ausführen können, und sie dann dort bereitstellt. Aber das ist nur meine Vermutung, und ich habe in ihrer Dokumentation keine konkreten Worte gesehen, um dies zu unterstützen.

Was genau ist Kubernetes und welche spezifischen Probleme löst es?

smeeb
quelle
Angesichts der Tatsache, dass alle Docker-World-Projekte (Kubernetes / Flotte / Schwarm / usw.) Schwierigkeiten haben, zu erklären, was sie tun und was sie auszeichnet, denke ich, dass wir nur eine etwas verwaschene Frage stellen können ... Eine fragt "Was ist der Unterschied zwischen Flotte und Kubernetes?" und die Antwort lautet "Sie können Flotte verwenden, um Kubernetes zu starten". Schade. ;-)
Torsten Bronger
3
Ich denke, es ist eine absolut gültige Frage und weist auf einige Mängel im Dokument hin. Es als zu breit zu schließen, ist ein schlechter Dienst. Der beste Ansatz für mich war einfach, die k8s-Codebasis herunterzuladen und dort beispielsweise nachzuschauen, um herauszufinden, was ein Pod ist. Das hat mir sehr geholfen.
Beezer

Antworten:

112

Der Zweck von Kubernetes besteht darin, die Organisation und Planung Ihrer Anwendung auf einer Maschinenflotte zu vereinfachen. Auf hoher Ebene ist es ein Betriebssystem für Ihren Cluster.

Grundsätzlich können Sie sich keine Gedanken darüber machen, auf welchem ​​bestimmten Computer in Ihrem Rechenzentrum jede Anwendung ausgeführt wird. Darüber hinaus bietet es allgemeine Grundelemente für die Integritätsprüfung und Replikation Ihrer Anwendung auf diesen Computern sowie Dienste für die Verkabelung Ihrer Anwendung mit Mikrodiensten, sodass jede Schicht in Ihrer Anwendung von anderen Schichten entkoppelt ist, damit Sie sie skalieren / aktualisieren / warten können unabhängig.

Während es möglich ist, viele dieser Dinge in der Anwendungsschicht zu erledigen, sind solche Lösungen in der Regel einmalig und spröde. Es ist jedoch viel besser, Bedenken zu trennen, wenn ein Orchestrierungssystem sich Gedanken über die Ausführung Ihrer Anwendung macht und Sie sich Sorgen machen der Code, aus dem Ihre Anwendung besteht.

brendan
quelle
3
Danke @brendan (+1) - Ihre Antwort hilft definitiv. Eine Folgefrage: Ist es nicht das, was Apache Mesos tut? Sind Kubernetes und Mesos Konkurrenten miteinander? Wenn nicht, könnten sie zusammen verwendet werden (und wenn ja, wie)? Danke noch einmal!
Smeeb
2
@smeeb Mesos und Kubernetes ergänzen sich (letzteres wird als Mesos-Framework unterstützt). Mesos bietet ein komplexeres Ressourcenmanagement. Mit anderen Worten, mit Kubernetes kann Mesos anhand der verfügbaren Kapazität entscheiden, welcher Host verwendet wird. Mesos unterstützt andere Frameworks. Wenn Sie die Dokumente lesen, werden Sie feststellen, dass Marathon eine weitere Möglichkeit ist, Container auf einem von Mesos verwalteten Servercluster zu starten.
Mark O'Connor
18

Wie Sie von seiner Github-Seite lesen :

Kubernetes ist ein Open Source-System zur Verwaltung containerisierter Anwendungen auf mehreren Hosts und bietet grundlegende Mechanismen für die Bereitstellung, Wartung und Skalierung von Anwendungen.

Kubernetes ist:

lean: lightweight, simple, accessible
portable: public, private, hybrid, multi cloud
extensible: modular, pluggable, hookable, composable
self-healing: auto-placement, auto-restart, auto-replication

Kubernetes baut auf anderthalb Jahrzehnten Erfahrung bei Google auf, in der Produktions-Workloads in großem Maßstab ausgeführt werden, kombiniert mit den besten Ideen und Praktiken der Community.

Für mich ist Kubernetes ein Container-Orchestrierungs-Tool von Google. Aufgrund seines Designs können Sie die Kompatibilität mit jeder Container-Engine implementieren, aber ich denke, jetzt ist sie auf Docker beschränkt. Es gibt einige wichtige Konzepte in seiner Architektur:

Kubernetes arbeitet mit folgenden Konzepten:

Cluster sind die Rechenressourcen, auf denen Ihre Container aufgebaut sind. Kubernetes können überall laufen! Anweisungen zu verschiedenen Diensten finden Sie in den Anleitungen für die ersten Schritte.

Pods sind eine kolokalisierte Gruppe von Docker-Containern mit gemeinsam genutzten Volumes. Sie sind die kleinsten bereitstellbaren Einheiten, die mit Kubernetes erstellt, geplant und verwaltet werden können. Pods können einzeln erstellt werden. Es wird jedoch empfohlen, einen Replikationscontroller zu verwenden, auch wenn Sie einen einzelnen Pod erstellen. Mehr über Pods.

Replikationscontroller verwalten den Lebenszyklus von Pods. Sie stellen sicher, dass eine bestimmte Anzahl von Pods zu einem bestimmten Zeitpunkt ausgeführt wird, indem sie Pods nach Bedarf erstellen oder beenden. Weitere Informationen zu Replikationscontrollern.

Die Dienste bieten einen einzigen, stabilen Namen und eine Adresse für eine Reihe von Pods. Sie fungieren als Grundlastausgleicher. Mehr über Dienstleistungen.

Beschriftungen werden verwendet, um Gruppen von Objekten basierend auf Schlüssel: Wert-Paaren zu organisieren und auszuwählen. Mehr über Etiketten.

Sie haben also eine Gruppe von Computern, die einen Cluster bilden, auf dem Ihre Container ausgeführt werden. Sie können auch eine Gruppe von Containern definieren, die einen Dienst bereitstellen, ähnlich wie Sie es mit anderen Tools wie fig tun (dh: webapp pod kann ein Rails-Server und eine Postgres-Datenbank sein). Sie haben auch andere Tools, um sicherzustellen, dass mehrere Container / Pods eines Dienstes gleichzeitig ausgeführt werden, ein Schlüsselwertspeicher, eine Art integrierter Load Balancer ...

Wenn Sie etwas über Coreos wissen, ist es eine sehr ähnliche Lösung, aber von Google. Algo Kubernetes hat eine gute Integration mit Google Cloud Engine.

Javier Cortejoso
quelle
2
Danke @jcortejoso (+1) - ich habe jedoch ein paar weitere Fragen, wenn Sie nichts dagegen haben: (1) Sie sagen, dass Kubernetes CoreOS ähnlich ist, aber von Google. Dies bedeutet, dass Kubernetes und CoreOS das gleiche Problem lösen. Auf [Kubernetes 'eigener Website] () heißt es jedoch, dass Sie Kubernetes unter CoreOS installieren können . Also was ist es?!? Ist Kubernetes dasselbe wie CoreOS oder läuft Kubernetes unter CoreOS und löst ein bestimmtes Problem?
Smeeb
1
Auch (2) Ich sehe den Wert in Kubernetes '"Orchestrierung" hier immer noch nicht. Sie geben an, dass Sie Kubernetes verwenden können, um eine Gruppe von Containern zu definieren, die einen Dienst bereitstellen. Ich frage mich daher, ob ich diese Art von Clustering nicht einfach auf App-Ebene durchführen und meine App hinter a stellen kann Nginx Load Balancer? Und (2b) ist das alles, was es zur "Orchestrierung" gibt? Wiederum scheint es mir nur ein Lastausgleich zu sein, der auf App-Ebene leicht erreicht werden kann. Gedanken? Nochmals vielen Dank für die wundervolle Antwort!
Smeeb
1
Wenn Kubernetes "leicht" ist, frage ich mich, was die Fettlösung wäre.
Torsten Bronger
@smeeb Ich bin mit Nginx nicht so vertraut (also vergib mir meine Naivität), aber ich glaube nicht, dass Nginx einen Server neu starten wird, der abgestürzt ist. und wenn ein Computer (oder das gesamte Rechenzentrum) ausfällt, startet nginx Ihre App nicht auf einem anderen Computer neu. kubernetes stellt sicher, dass immer n "Pods" irgendwo laufen, und es spielt keine Rolle, wo oder wie.
kgreenek
10

Kubernetes bietet weitgehend die gleiche Funktionalität wie Infrastructure as a Service-APIs, zielt jedoch eher auf dynamisch geplante Container als auf virtuelle Maschinen und als Platform as a Service-Systeme ab, jedoch mit größerer Flexibilität, einschließlich:

  • Montage von Speichersystemen,
  • Geheimnisse verbreiten,
  • Überprüfung des Anwendungszustands,
  • Replizieren von Anwendungsinstanzen,
  • horizontale automatische Skalierung,
  • Benennung und Entdeckung,
  • Lastverteilung,
  • fortlaufende Updates,
  • Ressourcenüberwachung,
  • Protokollzugriff und Aufnahme,
  • Unterstützung für Introspektion und Debugging und
  • Identität und Autorisierung.

Wenn Sie bereits andere Mechanismen für die Diensterkennung, die geheime Verteilung, den Lastausgleich, die Überwachung usw. verwenden, können Sie diese natürlich weiterhin verwenden. Wir möchten jedoch den Übergang von vorhandenen IaaS- und PaaS-Systemen zu Kubernetes vereinfachen, indem wir diese bereitstellen Funktionalität.

https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/#why-do-i-need-kubernetes-and-what-can-it-do

Briangrant
quelle