Kubernetes – Die Kunst des Container-Orchestrierens

Kubernetes – auch als K8s bezeichnet, ist ein von Google entwickeltes Open-Source-System zur Verwaltung von Container-Anwendungen. In diesem Umfeld wird die Verwaltung der technischen Container-Infrastruktur auch als Orchestrierung bezeichnet.

Was sind Container?

Container sind eine natürliche Weiterentwicklung virtueller Maschinen zur effizienten Nutzung verfügbarer Hardware-Ressourcen. Da ein Container in vielen Fällen lediglich einen kleinen Teil einer größeren Anwendung enthält (Microservices), braucht es oftmals viele Container, um eine große Anwendung vollständig bereitzustellen. Siehe hierzu auch meinen Beitrag über Docker. Während Docker eine Container-Laufzeitumgebung ist, ist Kubernetes eine Plattform für die Ausführung und Verwaltung von Containern aus vielen Container-Laufzeitsystemen. Es unterstützt zahlreiche Container-Laufzeiten, darunter Docker, containerd, CRI-O und jede Implementierung des Kubernetes CRI (Container Runtime Interface).

Im Betrieb von Container-Anwendungen spielen Verwaltungsaufgaben wie die Bereitstellung, die auf die Anfragelast bezogene automatische Skalierung, sowie das Monitoring der zum Betrieb notwendigen Anwendungscontainer und ihrer Infrastruktur eine wichtige Rolle. Es dient als Werkzeug zur Unterstützung dieser Orchestrierungsaufgaben.

Eingesetzt wird Kubernetes dabei bereits in kleinen und einfachen Containerumgebungen bis hin zu komplexen und verteilten Anwendungsfällen großer Technologieanbieter und ihrer containerbasierten Cloud-Produkte. Einige Beispiele sind hier: Microsofts Azure, IBM Cloud, Red Hat OpenShift, Amazons EKS, Googles Kubernetes Engine und Oracles OCI. Die bekannte Container-Technologie Docker wird ebenfalls unterstützt.

Kurze Zeitreise

Kubernetes (Altgriechisch für „Steuermann“) wurde ursprünglich von Joe Beda, Brendan Burns und Craig McLuckie entwickelt. Kurze Zeit später stießen weitere Google-Entwickler wie Brian Grant und Tim Hockin hinzu. 2014 stellte Google Kubernetes als Open-Source-Projekt der Öffentlichkeit vor.

Version 1.0 wurde am 21. Juli 2015 veröffentlicht. Dabei wurde auch die Gründung der Cloud Native Computing Foundation unter dem Dach der Linux Foundation angekündigt und Kubernetes wurde von Google an diese gespendet.

Was kann Kubernetes?

Kubernetes bietet eine Reihe von Möglichkeiten, die eine Orchestrierung von komplexen Container basierten Anwendungen unterstützt. Einige davon sind:

  • Starten von Containern im Bedarfsfall (Ausfall bestehender Container oder hinzufügen neuer Container bei hohem Anfragevolumen).
  • Überwachung anhand definierter Faktoren, ob Container noch erwartungsgemäß funktionieren.
  • Sinnvolle Verteilung der eingehenden Anfragelast auf die einzelnen Container.
  • Unterstützung beim Wechsel auf eine neuere Anwendungsversion.

Wie ist Kubernetes aufgebaut?

Kubernetes-Infrastrukturen können je nach Anwendungsfall hoch komplex sein. Eine Kubernetes-Installation besteht aus dem Zusammenspiel mehrerer Server. Die Server aus diesem Verbund lassen sich in zwei Kategorien einteilen: Zur ersten Kategorie gehören Server, die sich um Verwaltungsaufgaben in diesem Verbund kümmern. Sie werden als „Control Planes“ bezeichnet und führen keinen Container aus, der Teil der betriebenen Anwendung ist.

Die zweite Kategorie, die anwendungsbezogenen Container, werden auf den „Worker Nodes“ ausgeführt. Sie haben keine Verwaltungsaufgaben, sondern dienen lediglich dazu, die eigentliche Arbeitslast der Anwendung abzuarbeiten. Die notwendige Anzahl und Leistung dieser „Worker Node Server“ ermittelt sich anhand der Ressourcenanforderung der Container. Je ressourcenintensiver die Container sind, desto mehr oder performantere Worker Nodes werden benötigt.

Alle Aufgaben eines Kubernetes-Clusters werden redundant auf mehreren Servern betrieben, um die Hochverfügbarkeit auch im Störungsfall aufrechtzuerhalten.

Fazit

Kubernetes bietet als Open-Source-System zur Orchestrierung von Containern viele Vorteile. Besonders lohnt sich der Einsatz bei umfangreichen und hochskalierbaren Cloud-Anwendungen. Wenn man es einsetzt, kommt man schnell zu dem Punkt, an dem es komplex und aufwändig wird. Für ein effektives Management der Plattform brauchen Unternehmen Mitarbeitende mit Spezialwissen. Da diese Experten am Markt schwer zu finden sind und sich der Einsatz meist schon aus Kosten- und Rentabilitätsgründen nicht lohnt, lagern viele Unternehmen, die Kubernetes einsetzen, das Management und den Betrieb an diverse Managed Cloud Solution Provider aus. Man sollte aber nicht unbeachtet lassen, dass sich der Einsatz von Kubernetes nicht in jedem Fall lohnt. Letztendlich ist es immer eine Abwägung der Kosten und Aufwände gegen den Ertrag, den man sich durch den Einsatz erhofft.

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.