Was ist Kubernetes? Cloud-Container-Verwaltung einfach erklärt

Technologie

Technologie

Datum 31.05.2021
Lesezeit 6 Min.

Was ist Kubernetes? Cloud-Container-Verwaltung einfach erklärt

Mit Kubernetes (abgekürzt: K8s) lassen sich Ausfälle in Cloud-Systemen verhindern, sowie Ressourcen intelligent und effizient skalieren. Während früher Anwendungen auf jeweils einem eigens bereitgestellten, physischen Server liefen, wird diese Arbeit heutzutage von ganzen Serverfarmen erledigt. Diese stellen mit Hilfe von Systemen wie Kubernetes jedem Anwendungsmodul genau die Ressourcen zur Verfügung, die es benötigt und verbessern so die Gesamtauslastung und Leistungsfähigkeit eines Rechnerverbunds.

Erst kürzlich haben wir über das Prinzip der Virtualisierung berichtet. Eines der wichtigsten Werkzeuge hierfür ist Kubernetes. Insbesondere Public-Cloud-Anwendungen müssen ordnungsgemäß verwaltet, betrieben und aktualisiert werden können; auch dann, wenn sie von verschiedenen Kunden unterschiedlich intensiv genutzt werden. Das Open-Source-System Kubernetes hat sich hier zum defacto-Standard entwickelt. Microsoft (Azure), IBM und Red Hat unterstützen es ebenso wie Amazon, Oracle und Google. Alleine Google betreibt in seinen Online-Diensten ständig Milliarden sogenannter Kubernetes-Container.

‚Hier erfahren Sie, was es mit Begriffen wie Containern, der Containervirtualisierung, virtuellen Maschinen und verteilten Systemen auf sich hat und welche Rolle Kubernetes bei deren Zusammenspiel einnimmt.

 

Kubernetes – das steckt dahinter

Der Begriff „Kubernetes” stammt aus dem Griechischen und bedeutet übersetzt „Steuermann”. Das System zur sogenannten Containervirtualisierung (mehr dazu weiter unten) wurde von Joe Beda, Brendan Burns und Craig McLuckie entwickelt. Später kamen die Google-Entwickler Brian Grant und Tim Hockin mit an Bord und halfen, Kubernetes 2014 als Open-Source-Projekt der Öffentlichkeit anzubieten. Etwa Mitte 2015 wurde Kubernetes von Google an die neu gegründete Cloud Native Computing Foundation gespendet und seither „quelloffen” weiterentwickelt. Es handelt sich um einen flexiblen Plattformdienst (PaaS), der gleichzeitig Infrastrukturdienstleistungen (IaaS) effizient verwaltet. In der Cloud-Anbindung können sowohl Public- als auch Private- und Hybrid-Cloud-Systeme genutzt werden.

Eines der wesentlichen Prinzipien in der Informatik ist das der Abstraktion. Ziel hierbei ist es, zwischen Konzeption und konkreter Umsetzung zu trennen. Das Zusammenspiel zwischen niedrigeren (hardwarenahen) und höheren (konzeptionellen) Ebenen eines Systems wird über Schnittstellen realisiert. Die konkrete Funktionsweise eines Einzelsystems ist insoweit „egal”, als dass lediglich sichergestellt sein muss, dass dieses seine Aufgaben erfüllt. 

Das hat den großen Vorteil, dass Probleme mit einzelnen Teilaspekten einer Anwendung viel leichter behoben werden können, als wenn diese in einem Gesamtsystem integriert und obendrein auf einem bestimmten Rechner abgelegt sind. Fällt dieser Rechner einmal aus, wäre das gesamte System betroffen – und nicht nur Teile davon.

Während also noch bis vor einigen Jahren für eine einzelne Anwendung wie beispielsweise einen Webserver mit einer Homepage ein jeweils eigener Server vorgehalten wurde, fanden schon bald dank sogenannter virtueller Maschinen mehrere Webserver verschiedener Kunden auf einem einzigen physischen Rechner Platz. 

Beim Prinzip der Containervirtualisierung wird diese Idee konsequent fortgeführt, indem nicht alleine eine virtuelle Maschine immer einen bestimmten Anteil an verfügbarer Rechenleistung und Speicherkapazität oder Netzgeschwindigkeit exklusiv belegt. Stattdessen werden innerhalb sogenannter Container die eigentlichen Anwendungen als isolierte Pakete abgelegt. Diese belegen dann während ihres Betriebs jeweils nur diejenigen Ressourcen, die sie auch wirklich benötigen. 

Man spricht hier auch von einer Abkehr vom „monolithischen Prinzip”, bei dem bestimmte Eigenschaften eng an ein physisches System gekoppelt sind, hin zu modularen Strukturen. Es liegt auf der Hand, dass auf diese Art nicht nur vorhandene Hardware und Netzstrukturen viel effizienter genutzt werden können. Auch beim Thema Wartbarkeit und Ausfallsicherheit ergeben sich eine Menge Vorteile. So werden beispielsweise Software-Updates für einen bestimmten Container einfach in einem neuen Container angelegt, bis klar ist, dass alles ordnungsgemäß funktioniert. Erst dann wird der „alte” Container freigegeben und die zugehörigen Ressourcen stehen anderweitig zur Verfügung.




Video: YouTube / predic8

 

Kubernetes orchestriert virtualisierte Container und schützt vor Ausfällen

Bei Cloud Services „sieht” der Anwender üblicherweise nicht, auf welchem konkreten Rechner seine Anwendung gerade läuft. Man spricht vielmehr von sogenannten „Nodes” und „Clustern”, also physischen beziehungsweise virtuellen Maschinen, die zu Rechnerverbünden zusammengeschlossen sind. Ähnlich wie bei einem Festplattenverbund im sogenannten RAID-System ist es kein Problem, wenn dabei einzelne Komponenten ausfallen – andere Teilsysteme übernehmen umgehend deren Aufgaben und das kaputte Teilsystem kann in Ruhe repariert oder getauscht werden. 

Das Kubernetes-Kontrollsystem arbeitet nach dem sogenannten Master-Slave-Prinzip: Ein (Master-)System bestimmt, was passieren soll und weitere (Slave-Systeme) folgen. Der Kubernetes-Master läuft dabei auf einem eigenen Rechner, dem sogenannten „Kubernetes Control Plane”. Diese steuert über sogenannte „Kubelets” die einzelnen Nodes (auch „Minions” genannt), welche wiederum verschiedene Kubernetes-Elemente beinhalten. Bei einem Kubelet handelt es sich um ein spezielles System in jeder Node, das in der Lage ist, Container innerhalb sogenannter „Pods” zu starten oder zu beenden, sollte es zu Fehlfunktionen kommen, oder dies gewünscht sein.

Der Kube-Proxy wiederum sorgt für einen „gerechten” Lastausgleich zwischen verschiedenen Nodes und verwaltet die Verbindung zwischen diesen. Die einzelnen Nodes (und somit Cluster) wiederum sind über Cloud-Networking-Toolkits wie beispielsweise Weave Net verbunden.

Im „etcd”-Modul des Kubernetes-Master wird der Status der Cluster zentral verwaltet, während das „cAdvisor”-Modul die Ressourcen eines Containers überwacht (beispielsweise CPU- und Speicherauslastung). Der sogenannte „Scheduler” wiederum teilt neu erzeugte Pods denjenigen Nodes zu, die noch freie Kapazitäten besitzen.

Ausklappbare Informationsgrafik

Kubernetes arbeitet nach dem Master-Slave-Prinzip.

Originalgrafik: Khtan66 / Wikimedia Commons / CC BY-SA 4.0

 

Diese Vorteile bietet Kubernetes

Neben der beschriebenen Möglichkeit, einzelne Container bei Problemen neu zu starten, bietet Kubernetes noch weitere Vorteile:


  • Automatische Containerverteilung: In Kubernetes werden üblicherweise administratorseitig Cluster angegeben, die dem System zur Verfügung stehen. Anschließend verteilt Kubernetes die Container mithilfe von Docker so auf die einzelnen Nodes, dass die Ressourcen möglichst effizient genutzt werden.
  • Lastausgleich: Es kommt immer wieder vor, dass einzelne Container mit zu vielen Daten konfrontiert werden. Hier sorgt Kubernetes dafür, dass ein Lastausgleich geschieht und insbesondere die Netzlast ausgeglichen verteilt bleibt.
  • Skalierbarkeit: Mit Kubernetes lassen sich schnell und einfach zusätzlich benötigte Ressourcen hinzuschalten oder wieder entfernen.
  • Automatische Selbstheilung: Fallen einzelne Container aus, ist Kubernetes in der Lage, diese neu zu starten oder gänzlich zu stoppen. Während dieser Zeit sind diese Container für den Anwender nicht verfügbar und er nutzt nahtlos andere Container mit derselben Funktion.
  • Speicherabstraktion: Ob eine lokale Festplatte oder ein Speichersystem in einer öffentlichen Cloud eingesetzt werden, ist mit Kubernetes nicht länger von (großer) Bedeutung, da die Container lediglich entsprechenden Bedarf anmelden.
  • Rollouts und Rollbacks möglich: Wird eine neue Software(version) installiert, wird in Kubernetes einfach der gewünschte Ziel-Zustand definiert. Die einzelnen Nodes passen sich dann nach und nach hieran an. Ähnliches gilt bei einem Rollback: Hier werden fehlgeschlagene Änderungen automatisiert im gesamten Node-System wieder zurückgenommen, bis der alte Stand wiederhergestellt ist.
  • Fortlaufende Updates: Das Kubernetes-System wird ständig weiterentwickelt. Davon profitiert automatisch jeder, der Kubernetes nutzt.

 

In welcher Form haben Sie schon Bekanntschaft mit Kubernetes gemacht? Wir freuen uns auf Ihren Kommentar.

 

 


Ihre Digitalisierungs-Berater für den Mittelstand

Sie haben Fragen rund um die Digitalisierung? Unser Experten-Team steht ihnen gerne kostenlos
und unverbindlich im Chat (Mo.-Fr. 8-20Uhr) oder telefonisch unter 0800 5054512 zur Verfügung.

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Facebook Twitter WhatsApp LinkedIn Xing E-Mail