Kubernetes

Kubernetes (auch als K8s bezeichnet, deutsche Aussprache: [ˌkuːbɐˈneːtəs]) 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.

Geschichte

Kubernetes (von griechisch κυβερνήτης ‚Steuermann‘) wurde ursprünglich von Joe Beda, Brendan Burns und Craig McLuckie entwickelt.[3] 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.[4]

Version 1.0 wurde am 21. Juli 2015 veröffentlicht.[5] 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.[6]

Einführung

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.

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

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

Analogie zur musikalischen Orchestrierung

Vergleich traditioneller Ansatz vs. virtuelle Maschinen vs. Containerisierung von Anwendungen

Folgende Analogie aus dem Bereich der Musik soll die Aufgabe von Kubernetes als Orchestrierungswerkzeug verdeutlichen.

Jeder Musiker im Orchester eines Musicals spielt einen Teil im Rahmen einer Vorstellung. Bei einem kleinen Orchester und einfachen Stücken funktioniert das Zusammenspiel aller Musiker ohne einen Dirigenten als kontrollierende und steuernde Instanz. Ab einer Gewissen Größe des Orchesters ist ein Dirigent erforderlich um sicherzustellen, dass alle Musiker die richtigen Töne zur richtigen Zeit spielen um die Qualität des Gesamtwerkes aufrechtzuerhalten. Die Rolle des Dirigenten wird umso wichtiger, falls unvorhergesehene Ereigenisse eintreten wie beispielsweise eine Darstellerpanne auf der Bühne oder der Ausfall eines Musikers.

Im Zusammenspiel vieler Container übernimmt Kubernetes die Rolle des Dirigenten. Es stellt sicher, dass alle Anwendungsteile, die auf unterschiedlichen Containern laufen können, gemeinsam zusammenspielen. Auch im Fehlerfall, wie dem Ausfall eines oder mehrerer Container, kann Kubernetes Maßnahmen ergreifen um das Gesamtwerk aufrechtzuerhalten. Sollte ein Container aufgrund von hohem Anfragevolumen die angefragte Information nicht mehr schnell liefern können, so kann Kubernetes zur zeitweisen Unterstützung weitere Container starten, welche die gleiche Aufgabe erfüllen. Eine funktionierende Orchestrierung stellt einen wichtigen Baustein für den reibungslosen Betrieb komplexer und verteilter Anwendungen dar.

Funktionen von Kubernetes

Kubernetes bietet eine Reihe von Möglichkeiten die Orchestrierung von komplexen Container basierten Anwendungen zu unterstützen. 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.

Aufbau

Schematischer Aufbau

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, wird auf den „Worker Nodes“ ausgeführt. Sie haben keine Verwaltungsaufgaben, sondern dienen 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.

Literatur

  • Kelsey Hightower: Kubernetes : eine kompakte Einführung. dpunkt.verlag, Heidelberg 2018, ISBN 978-3-86490-542-1.
  • Sébastien Goasguen: Kubernetes Cookbook : Building Cloud Native Applications. O'Reilly, 2018, ISBN 978-1-4919-7968-6.
  • Bilgin Ibryam, Roland Huß: Kubernetes Patterns : Reusable Elements for Designing Cloud-Native Applications. O'Reilly, 2019, ISBN 978-1-4920-5028-5.

Weblinks

Einzelnachweise

  1. First GitHub commit for Kubernetes. In: github.com. 7. Juni 2014.
  2. Kubernetes v1.25: Combiner.
  3. Google Made Its Secret Blueprint Public to Boost Its Cloud (en-US) Abgerufen am 7. Juli 2017.
  4. Cade Metz: Google Open Sources Its Secret Weapon in Cloud Computing. In: Wired. 10. Juni 2014, ISSN 1059-1028 (wired.com [abgerufen am 29. Juli 2019]).
  5. Google veröffentlicht Vollversion Kubernetes 1.0. In: ZDNet.de. 22. Juli 2015.
  6. Cloud Native Computing Foundation soll Container-Technologien zusammenbringen. In: pro-linux.de. 22. Juni 2015. Abgerufen am 7. Juli 2017.
  7. Kubernetes on Microsoft’s Azure Container Service is now generally available auf techcrunch.com vom 21. Februar 2017.
  8. Kubernetes now available on IBM Bluemix Container Service auf ibm.com vom 19. März 2017.
  9. Why Red Hat Chose Kubernetes for OpenShift auf blog.openshift.com vom 7. November 2016.
  10. Highly available and scalable Kubernetes service
  11. Googles Kubernetes Engine
  12. Überblick über Container Engine for Kubernetes, auf docs.cloud.oracle.com
  13. Avi Miller: Announcing Oracle Container Services 1.1.9 for use with Kubernetes. (oracle.com [abgerufen am 23. April 2018]).
  14. What is Kubernetes? – Kubernetes