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 altgriechisch κυβερνήτης kybernētēs „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 Containerumgebungen 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 wird ebenfalls unterstützt.[14]

Funktionen von Kubernetes

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

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;.Vorlage:Cite web/temporär
  2. Release 1.26.0. 9. Dezember 2022 (abgerufen am 18. Dezember 2022).
  3. Google Made Its Secret Blueprint Public to Boost Its Cloud. Abgerufen am 7. Juli 2017 (amerikanisches Englisch).
  4. Cade Metz: Google Open Sources Its Secret Weapon in Cloud Computing. In: Wired. 10. Juni 2014, ISSN 1059-1028 (amerikanisches Englisch, wired.com [abgerufen am 29. Juli 2019]).
  5. Google veröffentlicht Vollversion Kubernetes 1.0. In: ZDNet.de. 22. Juli 2015, abgerufen am 7. Juli 2017.
  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