Suchen

Definition Was ist Kubernetes?

| Autor / Redakteur: Dipl.-Ing. (FH) Stefan Luber / Nico Litzel

Kubernetes ist eine ursprünglich von Google entwickelte Open-Source-Plattform. Sie wird heute von der Cloud Native Computing Foundation betreut und weiterentwickelt. Mit Kubernetes lassen sich Container orchestrieren. Die Plattform ermöglicht das automatisierte Einrichten, Bereitstellen, Betreiben, Skalieren und Warten der Container. Sie ist die Basis für viele Cloud-native Anwendungen, die aus Microservices bestehen.

Firma zum Thema

(Bild: © aga7ta - stock.adobe.com)

Die Kurzschreibweise für Kubernetes lautet „K8s“. Es handelt sich um eine Open-Source-basierte Software-Plattform zur Container-Orchestrierung. Mit Kubernetes lässt sich das Einrichten, Bereitstellen, Betreiben, Skalieren und Warten vieler einzelner Container vereinfachen und automatisieren. Die Plattform arbeitet Master-Slave-basiert mit einer Struktur bestehend aus Pods, Nodes und Clustern. Container können auf physischen oder virtuellen Rechnern betrieben werden. Kubernetes stellt eine technische Basis für moderne Cloud-native Anwendungen bestehend aus vielen einzelnen Microservices zur Verfügung.

Ursprünglich entwickelt wurde Kubernetes von Google. Im Jahr 2014 erschien die Software erstmalig. Ein Jahr später, im Jahr 2015, spendete Google die Software an die Cloud Native Computing Foundation (CNCF). Sie betreut heute die Weiterentwicklung der Plattform. Neben Kubernetes ist die CNCF für viele weitere Softwarelösungen im Umfeld des Cloud Native Computings zuständig. Kubernetes ist ein großes, schnell wachsendes Ökosystem und bietet eine große Unterstützer-Community. Die Software ist mit Container-Engines wie Docker kompatibel und auf gängigen Cloud-Plattformen verfügbar. Sie steht unter Apache-Lizenz 2.0. Die aktuelle Version (Stand Juni 2020) ist 1.18.5.

Wichtige Funktionen von Kubernetes

Die Kubernetes-Plattform bietet ein großes Funktionsspektrum zur Orchestrierung von Containern. Wichtige Funktionen von K8s sind:

  • automatisierte Einrichtung von Containern
  • automatisierter Rollout von Containern
  • automatische Skalierung von Containern
  • automatische Ressourcenzuweisung
  • Realisierung von persistentem Storage für zustandslose Container
  • Management der Verknüpfungen und der Kommunikation der Container
  • automatische Lastverteilung
  • Realisierung hochverfügbarer Umgebungen und Bereitstellung von Redundanzen

Die Funktionsweise von Kubernetes

Kubernetes arbeitet Master-Slave-basiert auf einer Architektur bestehend aus folgenden Einzelkomponenten:

  • Pods
  • Nodes (Master-Nodes und Worker-Nodes)
  • Cluster

Die kleinste Einheit der Architektur bildet der Pod. Ein Pod kann ein oder mehrere Container umfassen. Ein oder mehrere Pods laufen als Prozesse auf den Nodes. Bei den Nodes handelt es sich um physische oder virtuelle Rechner. Mehrere Nodes lassen sich zu Clustern zusammenfassen. Die Worker-Nodes eines Clusters werden von einem Master-Node gesteuert und überwacht. Master-Nodes nehmen Befehle entgegen und verwalten die Pods mit ihren Containern auf den einzelnen Worker-Nodes. Über verschiedene Prozesse kommuniziert der Master mit den Nodes und weist den Pods Konfigurationen zu, verteilt sie auf andere Nodes, startet und stoppt Container oder ersetzt ausgefallene Nodes durch einen Node mit identischer Funktion. Der Master-Node berücksichtigt die vorhandenen und benötigten Ressourcen und überwacht die Auslastung sowie den Betriebszustand der Nodes.

Abgrenzung von Kubernetes zu Docker

Oft werden Begriffe wie Kubernetes und Docker in gleichem Zusammenhang verwendet. Es handelt sich jedoch um konzeptionell unterschiedliche Softwarekomponenten mit verschiedenen Aufgaben. Kubernetes ist eine Plattform zur Orchestrierung von Containern. Bei Docker handelt es sich um eine Container-Engine zur Bereitstellung und Ausführung der eigentlichen Container. Kubernetes ist zwar in der Lage, Container auszurollen, zu betreiben, zu managen und zu skalieren, doch für die Bereitstellung und Ausführung der Container-Laufzeitumgebungen ist eine Container-Engine wie Docker notwendig. Kubernetes unterstützt Laufzeitumgebungen wie Docker, containerd, cri-o oder rktlet und weitere. Aus der Kombination der Container-Laufzeitumgebung einer bestimmten Engine und der Container-Orchestrierung durch Kubernetes entsteht die Funktionalität der Plattform.

Vorteile durch die Container-Orchestrierung mit Kubernetes

Durch die Container-Orchestrierung mit Kubernetes bieten sich zahlreiche Vorteile. Im Vergleich zu klassischen monolithischen Anwendungen lassen sich Cloud-native Microservice-Anwendungen schneller entwickeln und bereitstellen. Manuelle Prozesse für das Betreiben und Skalieren der containerisierten Anwendung entfallen, da Kubernetes viele Aufgaben automatisiert. Kubernetes stellt Container-Plattformen mit hoher Verfügbarkeit und stabilem Betrieb zur Verfügung.

Durch das Konzept mit Pods, Nodes und Clustern lassen sich nahezu beliebige Redundanzen abbilden. Benötigt ein Microservice mehr Ressourcen, stellt sie Kubernetes automatisch und ohne Service-Unterbrechung bereit. Mithilfe von Kubernetes werden Konzepte wie Rolling-Updates umsetzbar. Updates kompletter Anwendungen lassen sich ohne Außenwirkung durchführen, indem die Pods nach und nach aktualisiert werden. Dank Kubernetes und den Containern laufen Anwendungen plattformunabhängig und sind einfach migrierbar oder reproduzierbar.

Kubernetes und das Cloud Computing

Kubernetes ist mit On-Premises-Plattformen und verschiedenen Cloud-Modellen wie Private Cloud, Public Cloud, Hybrid Cloud oder Multicloud kompatibel. Dadurch bietet sich ein große Flexibilität in der Entwicklung, Bereitstellung und im Betrieb von Microservice-basierten Anwendungen. Dank der Container-Technologie können die einzelnen Microservices zur Bereitstellung optimaler Performance und Funktion mit minimalem Aufwand zwischen verschiedenen Umgebungen und Cloud-Modellen verschoben werden. Kubernetes sorgt für ein von der Cloud-Umgebung unabhängiges Management der Container mit ihren Microservices. Cloud-Lösungen verschiedener Provider können eingebunden und Abhängigkeiten von einzelnen Anbietern oder technischen Plattformen verhindert werden. Mit Kubernetes entfaltet das Cloud Computing sein volles Potenzial.

(ID:46700998)

Über den Autor