Farbiges Geflecht aus miteinander verbundenen Quadraten
Cloud & Hosting

Kubernetes einfach erklärt

Kubernetes ist eine portable, erweiterbare Open-Source-Plattform zur Verwaltung von Arbeitslasten und Services, die in Containern organisiert sind. Der Begriff Kubernetes leitet sich vom griechischen „kybernetes“ für Steuermann ab. Die beliebte Cloud-Technologie steuert dabei die Bereitstellung, Skalierung und Verwaltung von Containern. Diese enthalten beispielsweise Anwendungen, Bibliotheken, Frameworks oder Quellcode.

Doch was steckt genau dahinter und was sind die Vorteile einer solchen Steuerung?

Inhaltsverzeichnis

Was ist Kubernetes?

Kubernetes wird in Beschreibungen häufig als K8s oder Kube in Anlehnung an den Begriff Cube abgekürzt. Die Schreibweise K8s kommt von dem Anfangsbuchstaben K bei Kubernetes, dem dann acht Zeichen folgen und das Wort mit einem s abschließen. Der gute Ruf, den Kube unter Entwickler:innen genießt, dürfte seine Ursachen in der von Google gelegten Basis des Projektes haben. Viele sprechen davon, dass Kubernetes Teil von Googles Bemühungen ist, die Cloud zu konsolidieren.2014 wurde Kubernetes an die eigens dafür gegründete Cloud Native Computing Foundation (CNCF) gespendet. Die CNCF sorgt seitdem für die Weiterentwicklung und Betreuung – auch von anderen Open-Source-Projekten wie beispielsweise Prometheus und Envoy.
2015 wurde Kubernetes in der Version 1 veröffentlicht, im März 2022 erschien das Release 1.23.5. Kubernetes ist inzwischen mit vielen anderen Cloud-basierten Plattformen wie Azure oder AWS kompatibel und wird auf diesen als Ergänzung eingesetzt. Dreh- und Angelpunkt sind dabei die Automatisierung von Prozessen und der Einsatz von sogenannten Containern für Anwendungen und Software-Umgebungen. Umfassende Unterstützung bei der Entwicklung leisten neben der Cloud Native Computing Foundation (CNCF) führende Tech-Unternehmen wie (weiterhin) Google, AWS, Microsoft, IBM, Intel, Cisco und Red Hat.
Kubernetes wird häufig auch als „Betriebssystem für die Cloud” bezeichnet. Für Kubernetes geschriebene Anwendungen können überall dort laufen, wo es Kubernetes gibt. Was bei Linux und anderen plattformunabhängigen Betriebssystemen auf Desktop- und Serverebene zum Erfolg führte, passiert aktuell im Cloud-Bereich mit Kubernetes.
Und so verwundert es nicht, dass sich Kubernetes innerhalb weniger Jahre zum De-facto-Standard für Container-Orchestrierung entwickelt hat.
Das Container-Konzept bringt Flexibilität in Software-Entwicklungsprozesse. Dynamische Container-Umgebungen brauchen leistungsfähige Monitoring-Lösungen, die in der Lage sind, Daten zusammenzuführen. Kubernetes bietet in diesem Zusammenhang eine containerzentrierte Managementumgebung und koordiniert die Computer-, Netzwerk- und Speicherinfrastruktur in Abhängigkeit von den Workloads durch Benutzer:innen.
Empfohlener externer Inhalt
Hier ist ein Video-Inhalt von YouTube. Er ergänzt die Informationen auf dieser Seite.
Sie können ihn mit einem Klick anzeigen und wieder ausblenden.
Ich bin einverstanden, dass externe Inhalte angezeigt werden. So können personenbezogene Daten an Drittplattformen übermittelt werden. Mehr in unserer  Datenschutzerklärung.
Datenschutzerklärung

Container-Technologie und Server als Basis von Kubernetes

Kubernetes ist aus der Entwicklungspraxis im Bereich Prozessautomation und Entwicklungsvereinfachung entstanden und wurde dann als Open-Source-Projekt zu einer der wichtigsten Säulen im Bereich cloud-nativer Anwendungen weiterentwickelt. Um die Vorteile einer Cloud auszuschöpfen, bedarf es einer cloud-nativen (also vollständig in der Cloud verankerten) Architektur, die für genau diesen Einsatzort konzipiert ist.
Dabei werden Container als zentraler Bestandteil verwendet. Sie sorgen dafür, dass die Anwendung unabhängig von Betriebssystemen oder Programmen (Apps) laufen. Kubernetes ist dafür geschaffen worden, containerbasierte Cloud-Anwendungen zu entwickeln. In diesem Zusammenhang wird Kubernetes häufig als ein System zur Orchestrierung von Software-Containern bezeichnet.
Ein weiteres herausragendes Merkmal von Kubernetes ist die Fähigkeit, manuelle Prozesse zu automatisieren, die im Zusammenhang mit der Bereitstellung und Skalierung von containerbasierten Applikationen stehen. Es automatisiert die Verwaltung und die Steuerung der Container. Im Detail bedeutet das: So muss kein:e Administrator:in jeden einzelnen Container manuell starten, stoppen, überwachen und aktualisieren, sondern Kubernetes übernimmt diese Aufgaben automatisch.
Schaubild über unterschiedliche Formen von Komponenten einer Applikation, die alle in einem Kubernetes-Container enthalten sein können
Ein Kubernetes-Container kann alle für die Programmausführung notwendigen Komponenten einer Applikation aufnehmen.

Wie funktioniert Kubernetes?

Der Einstieg in Kubernetes wird durch eine lebendige Community gefördert, die mit Kubernetes-Tutorials und Dokumentationen Entwickler unterstützt und bei Problemen Lösungshilfen anbietet. Kubernetes ist in erster Linie eine containerzentrierte Plattform, die Platform as a Service (PaaS) mit der Flexibilität von Infrastructure as a Service (IaaS) kombiniert. So ermöglicht Kubernetes den Austausch zwischen Infrastrukturanbietern und ein systemunabhängiges Management von Hard- und Software-Ressourcen.
Im Bereich der Softwareentwicklung lassen sich damit beispielsweise anwendungsspezifische Workflows optimieren, um die Entwicklungsgeschwindigkeit zu steigern. Kubernetes bietet dementsprechend alle Tools, Komponenten und Funktionen, um die Bereitstellung, Skalierung und Verwaltung von Anwendungen zu erleichtern.
Das Container-Verwaltungssystem (Orchestrierungssystem) erlaubt das Deployment und den Betrieb von Anwendungen in einer Microservice-Architektur über Abstraktions-Layer, die über mehrere Hosts gelegt (verteilt) sind. Kubernetes ermöglicht dabei die Verwaltung und Steuerung folgender Aspekte:
  • Steuerung der Ressourcenauslastung und automatisches Load Balancing
  • Gleichmäßige Verteilung des Applikations-Loads über die Host-Infrastruktur
  • Überwachung der Ressourcenauslastung
  • Verschiebung einer Anwendungsinstanz zu einem anderen Host bei Ressourcenmangel oder Host-Ausfall
  • Automatische Nutzung zusätzlicher Ressourcen bei Verfügbarkeit durch Cluster-Erweiterung um einen Host
  • Rollbacks
Zentraler Bestandteil jeder Kubernetes-Implementierung sind so genannte Cluster. Unter Clustern versteht man im technischen Sprachgebrauch eine Gruppe von Elementen, und so ist es auch in der Kubernetes-Welt. Ein Cluster besteht aus einer Vielzahl an virtuellen oder auch physisch real existierenden Servern beziehungsweise Systemen. Jedes einzelne System übernimmt dabei eine Funktion als „Master“ oder „Node“, über die der Kubernetes-Aufbau stattfindet.
Geschäftsmann arbeitet am Notebook

Mit Vodafone in der Multi-Cloud durchstarten

Kaum ein Cloud-Dienst deckt sämtliche unternehmerischen Anforderungen aus einer Hand ab. Mit Vodafone gelingt die Steuerung Ihres Multi-Cloud-Ansatzes optimal: Neben den Angeboten von Azure, Alibaba und AWS bieten wir professionellen Support und optimale Konnektivität aus einer Hand.

  • Umfassende Bedarfsanalyse im Vorfeld
  • Individueller Roll-out-Plan basierend auf Ihren Anforderungen
  • Gemeinsame Optimierung der Infrastruktur und Services
Nodes sind Hosts für je einen oder mehrere Container, in denen die Anwendungen laufen. Der Master kommuniziert mit den Nodes und weist sie zur Erstellung oder Auflösung von Containern an. Ebenso definiert er Anpassungen beim Traffic-Routing. Nodes werden häufig als Worker Server oder Worker Nodes bezeichnet. Die Kubernetes-API bietet ein Frontend zur Steuerung der Anfragen und Interaktionen mit dem Kubernetes-Cluster.
Überschrift: Kubernetes-Architektur. Darunter Icons für Kubernetes Master wie Kalender und Controller, Pfeile führen zu Containern mit Nodes
In einer Kubernetes-Architektur ist der Kubernetes-Master gleichbedeutend mit dem Access Point, über den Benutzer:innen interagieren, um Container-Scheduling und -Deployment zu verwalten.

Kubernetes im Unternehmen: Wann ist es sinnvoll?

Wenn Softwareentwickler:innen Programme cloud-native entwickeln lassen, führt bei der Planung der Cloud-Architektur kaum ein Weg an Kubernetes vorbei. Um die Vorteile einer Cloud wirklich auszuschöpfen, ist eine cloud-native Architektur gefragt. Es handelt sich hierbei um eine Architektur, welche explizit für den Einsatz in der Cloud konzipiert ist. Diese sorgt vereinfacht ausgedrückt dafür, dass Anwendungen vollkommen unabhängig von Betriebssystemen oder Programmen laufen.
Die Entwicklung von Cloud-Anwendungen besteht aus vielen Teilbereichen, die im Entwicklungsalltag eng miteinander verzahnt sind. Kubernetes übernimmt dabei die Verteilung und Konfiguration von Softwarepaketen auf Servern und Endgeräten (Deployment).
Dieses System zur Container-Orchestrierung lohnt sich immer dort, wo Anwendungen und alle ihre Komponenten jederzeit und ohne Unterbrechungen verfügbar sein müssen. Bei Software-Unternehmen kommt es täglich zum Deployment tausender Container-Instanzen. Dazu kommen signifikante Skalierungsanforderungen bei gleichzeitiger Plattformunabhängigkeit. Für all diese Anforderungen bietet Kubernetes die passende Lösung.
Das Foto zeigt eine Frau mit Smartphone

Whitepaper: Ihr Weg in die Cloud

Cloud-Lösungen sind entscheidend für die digitale Transformation. Mit unserem ausführlichen Leitfaden erwerben Sie das notwendige Wissen für die Migration auf moderne(re) Systeme. 

  • Die wesentlichen Migrationsschritte im Überblick
  • Spannende Fallbeispiele
  • Aktuelle Studienergebnisse
Jetzt kostenlos downloaden

Kubernetes und Docker im Vergleich

Die Frage nach dem Unterschied zwischen Kubernetes und Docker ist nicht einfach zu beantworten, denn eigentlich ist es eher ein Zusammenspiel als ein konkurrierender Wettbewerb dieser beiden Systeme. Vereinfacht dargestellt ist Docker ist eine Laufzeitumgebung für Container, wobei die Laufzeitumgebung mit einem Betriebssystem vergleichbar ist. Dabei gibt es einen Server- und einen Client-Teil. Der Serverteil – als Daemon bezeichnet – verwandelt Images in Container und überwacht deren Ausführung. Der Client sorgt für die Ansteuerung des Servers. Auf jedem System, das Docker-Container ausführen soll, ist daher eine Docker-Engine als Client zu installieren. Dabei können Daemon und Client auf einem einzelnen Server laufen, oder aber auf unterschiedliche Systeme verteilt sein. So ist es möglich, über das Kommandozeilen-Toolkit des Clients gleich mehrere Server im Netzwerk anzusteuern.
Ein Docker-Daemon bezieht sich immer auf eine einzelne Maschine, auf der sich Container ausführen lassen. Diese Fokussierung ist im Entwicklungsbetrieb problemlos, kann jedoch im Produktivbetrieb zu Problemen führen. Sicherer wäre ein hochverfügbares Cluster von Docker-Servern, die sich lastabhängig die Prozesse teilen. Fällt einer dieser Server aus, sollten automatisch andere die Arbeit übernehmen. Docker bringt mit Docker Swarm eine Lösung für dieses Problem, die im Vergleich zu Docker jedoch Nachteile in der Performance bringt und sich bislang nur als Nischenlösung etabliert hat. Und genau hier kommt Kubernetes ins Spiel.
Kubernetes übernimmt im Zusammenspiel mit Docker die Rolle eines Clusters für Docker-Container. Ein Kubernetes-Cluster verhält sich wie ein riesiger Rechner, der über Unmengen an CPU-Leistung, RAM und Speicherplatz verfügt. Durch Hinzufügen weiterer Knoten lässt sich diese Leistungsfähigkeit weiter steigern. Bei Wegfall eines Knotens reduziert sich die Leistung entsprechend, ohne Ausfälle.
Die Client-Server-Architektur von Kubernetes unterscheidet sich dabei von der Docker-Architektur in der Weise, dass die Server mit der Aufteilung in Master- und Worker-Servern (Nodes) im Unterschied zu Docker zweigeteilt sind. Die Steuerung kann dabei über die API-Server von außen erfolgen. Analog zu Docker verfügt auch Kubernetes über ein Kommandozeilen-Toolkit namens Cube Control (Cube CTL). Dieses spricht letztendlich aber nur die API zur Steuerung an.

Herausforderungen bei der Einführung von Kubernetes

Durch das rasante Wachstum von Kubernetes sind gewisse Hürden entstanden, die Sie bei der Einführung dieses Systems beachten sollten. Die Pläne von Dev- und IT-Teams im dynamischen Open-Source-Umfeld sind nicht immer mit den Unternehmenszielen vereinbar. Open-Source-Technologien wie Kubernetes finden bei Entwickler:innen enormen Anklang, führen aber häufigeren Innovationszyklen. Community-getriebene Entwicklung ist meist dynamischer und erfolgt in kürzeren Abschnitten, als dies bei vergleichbarer konzerngetriebener Softwareentwicklung der Fall ist.
Ein Grund hierfür: Vielen IT-Teams fehlt es aktuell an der für Kubernetes wichtigen Expertise. Erst vor wenigen Jahren mussten Entwickler:innen und IT-Ops ihre Methodik und Frameworks an Container anpassen. Nun kommt noch das Thema Container-Orchestrierung hinzu. Wer Kubernetes implementieren möchte, braucht hochqualifizierte Allround-Profis, die programmieren können, in operativen Belangen versiert sind und sich mit Themen rund um Anwendungs-, Speicher- und Daten-Workflows auskennen.
Dazu kommt die recht komplexe Systemverwaltung von Kubernetes, die eine echte Herausforderung für Administrator:innen darstellt. Die Kubernetes Failure Stories im GitHub Repository bieten eine ganze Sammlung an möglichen Herausforderungen, vom DNS-Ausfall bis hin zu Systemfehlern. Die Ursachen dafür lassen sich jedoch vermeiden und sind in den Fallbeschreibungen klar hervorgehoben. Die Kubernetes-Einführung verlangt professionelle Vorbereitung und IT-Expertise bei der Umsetzung. Ist beides vorhanden, stellt die Einrichtung keine außergewöhnliche Herausforderung dar.

Sicherheitsaspekte von Kubernetes

Die in GitHub beschriebenen Ausfallszenarien dokumentieren gut, was passieren kann, wenn Unternehmen bei der Einführung und dem Betrieb von Kubernetes das Thema Datensicherheit nicht ernst nehmen.
Bei einer Sicherheitsanalyse von Kubernetes ist das gesamte System zu beachten – mit Containern, Netzwerk und Zugriffsrechten. Applikationen, die gemeinsam auf einer Node laufen, müssen sich durch Linux-Namespaces isolieren lassen. Container müssen aus zuverlässigen Registries kommen, wenn diese nicht selbst gebaut und über eine eigene Registry verteilt werden. Zum sicheren Betrieb sollten Prozesse im Container nicht als Root laufen. Der Einsatz von Pod Security Policies kann derartige Fehler verhindern.
Das Netzwerk in Kubernetes kennt Container-Implementierungen wie Calico oder Weave, die Network Policies implementieren. Damit ist es möglich, Kubernetes-Pods und -Services zu isolieren, wobei die Network Policies praktisch Firewallregeln für die Kubernetes-Namespaces sind und für sicheren Betrieb sorgen.
Geschäftsmann arbeitet am Notebook

Mit Vodafone in der Multi-Cloud durchstarten

Kaum ein Cloud-Dienst deckt sämtliche unternehmerischen Anforderungen aus einer Hand ab. Mit Vodafone gelingt die Steuerung Ihres Multi-Cloud-Ansatzes optimal: Neben den Angeboten von Azure, Alibaba und AWS bieten wir professionellen Support und optimale Konnektivität aus einer Hand.

  • Umfassende Bedarfsanalyse im Vorfeld
  • Individueller Roll-out-Plan basierend auf Ihren Anforderungen
  • Gemeinsame Optimierung der Infrastruktur und Services

Relevante Begriffe der Kubernetes-Technologie

K8s (Kubernetes) versus K3s (Kubernetes Light)

In Anlehnung an K8s als Abkürzung für Kubernetes kursiert auch eine alternative, linuxbasierte Kubernetes-Distribution namens K3s. Die Nutzung auf anderen Plattformen ist jedoch über Anpassungen möglich. Diese ursprünglich von Rancher Labs entwickelte Light-Version von K8s fehlen einige Funktionen (Legacy, Alpha, Nicht-Standard, In-Tree-Plugins). Außerdem wurden schwergewichtige Komponenten gegen einfachere Module ausgetauscht. So ersetzt dort beispielsweise sqlite3 das voluminöse etcd3. Derart optimiert liegt der Umfang des K3s-Binaries unter 100 MB. 2020 wurde K3s an die Cloud Native Computing Foundation (CNCF) gespendet. Bewährt hat sich K3s besonders für die Ausführung von Workloads an ressourcenarmen dezentralen Standorten oder auf IoT-Geräten.

Im Kubernetes-Umfeld haben sich viele Fachbegriffe zur Beschreibung von Features und Funktionen etabliert. Die meisten davon entstammen aus dem Server- und Cloud-Umfeld. Einige wie beispielsweise der „Service“ haben eine ganz spezifische Bedeutung in der Kubernetes-Welt. Wer als Entwickler tiefer in die in die Materie einsteigen und sich beispielsweise mit den Kubernetes-Erfahrungsberichten im GitHub Repository auseinandersetzen möchte, sollte die Bedeutung dieser Fachterminologie kennen:
  • Image: Es bezieht sich meist auf ein Docker-Image und enthält den kompletten Code des Services sowie all seine Abhängigkeiten.
  • Container: Ein Software-Container enthält alle für die Programmausführung notwendigen Komponenten einer Applikation.
  • Pod: Eine Gruppe von Containern, die alle auf derselben Node laufen und über localhost miteinander kommunizieren können, werden als Pod bezeichnet.
  • ReplicaSet: Diese definieren die Anzahl von Pod-Instanzen im Cluster. Dabei übernimmt Kubernetes die Verteilung der Pods.
  • Deployment: Es steuert Rolling Updates (fortlaufende Aktualisierungen) und Rollbacks (Rücknahmen) der einzelnen Sicherungsstufen (Replica Sets). Dies ermöglicht es, neue Versionen von Services ohne Downtime (Ausfallzeit) live zu stellen (zu deployen).
  • Service: Dieser definiert Ports eines Pods (Containereinheit) innerhalb des Kubernetes-Clusters, um diesen für andere Pods erreichbar zu machen. Gleichzeitig übernimmt er die Lastenverteilung.
  • Ingress Ressource: Veröffentlicht einen Service über eine öffentliche URL.
  • Node: Beschreibt einen physischen oder virtuellen Server. Nodes werden auch als Worker Server oder Worker Nodes bezeichnet.
  • ConfigMap und Secret: In ConfigMaps und Secrets wird die Anwendungs-Konfiguration für einen Service gespeichert.
  • Persistent Volume: Um Daten persistent und somit langfristig zu speichern ist es möglich, in Kubernetes sogenannte Persistent Volumes zu erstellen, die man in einen Container mounten kann.
  • CronJob: Kubernetes erleichtert die Erstellung von wiederkehrenden CronJobs. Kubernetes kann dabei die Steuerung übernehmen und entscheiden, wann es Zeit ist, einen Job zu starten und auf welchem Server im Cluster dieser Job ausgeführt werden soll.
  • DaemonSet: Durch DaemonSets lässt sich in Kubernetes festlegen, welche Pods auf jedem Server nur einmal starten sollen.
  • StatefulSet: Ein StatefulSet erlaubt es, mehrere Instanzen eines Pods in einer festgelegten Reihenfolge zu starten.

Vorteile von Kubernetes auf einen Blick

Unternehmen und deren IT-Infrastrukturen profitieren in vielfältiger Weise durch den Einsatz von Kubernetes. Neue Funktionen lassen sich schneller zur Verfügung stellen, die Stabilität der Infrastruktur wird verbessert und der Aufbau und Betrieb von Container-Umgebungen lässt sich automatisieren. Das bewirkt eine größere Stabilität sowie weniger Aufwand beim Incident Management und der Fehlersuche.
Für Softwareentwickler:innen bietet Kubernetes ein ausgeklügeltes System, um die Prozesse in der Entwicklung und im Betrieb von anspruchsvollen Software-Projekten zu unterstützen. Im Betrieb von umfangreichen Cloud-Anwendungen leistet es einen erheblichen Mehrwert für das gesamte Projekt und die Arbeitsprozesse der Entwickler:innen.
Kubernetes und Container ermöglichen homogene Entwicklungs-, Test- und Live-Umgebungen und helfen dabei, das Deployment zu automatisieren. Beim Deployment ermöglicht es eine optimale Packungsdichte containerbasierter Applikationen und sorgt so für eine effizientere Auslastung und Nutzung von Ressourcen.
Bei all den gebotenen Möglichkeiten darf jedoch nicht übersehen werden, dass ein Kubernetes-Cluster schnell die Komplexität eines Rechenzentrums erreichen kann. Je komplexer die Applikationen, umso wichtiger ist es, vor der Implementierung Zeit in die Planung und Architektur des Netzwerks zu investieren.
Das könnte Sie auch interessieren:
Cloud & Hosting
Hände auf der Tastatur eines Notebooks, davor ein symbolisiert ein interaktives Dashboard mit Icons, die Anwendungsfälle von Cloud Computing symbolisieren

AWS Lambda: Effizient, flexibel und serverlos in der Cloud arbeiten

Effizient, flexibel und leistungsfähig – kann Ihr Unternehmen dieses Dreierpack für seine digitalen Dienste sicherstellen? Falls nicht: Dank Cloud-Computing-Plattformen können Sie diese Hürde problemlos überspringen. Mit den Amazon Web Services (AWS) lagern Sie wie bei Microsoft Azure Functions einfach wichtige Ressourcen sicher und bedarfsgerecht aus. Dazu gehören etwa Rechenleistung, Serverkapazitäten und Softwarelösungen. Durch AWS Lambda erhalten Sie zudem die Möglichkeit, Ihre Cloud-Infrastruktur automatisch zu verwalten und viele weitere Dinge ohne eigene Server-Infrastruktur zu erledigen. So treiben Sie in Ihrem Unternehmen die Digitalisierung gezielt voran und können sich weiterhin auf Ihr Kerngeschäft konzentrieren. Bei Lambda handelt es sich um einen serverlosen Cloud-Dienst, der sich seit seiner Einführung im Jahr 2014 zu einem essenziellen Bestandteil des Ökosystems von Amazons erfolgreichem AWS-Angebot entwickelt hat. Mittlerweile unterstützt Lambda eine Vielzahl von Anwendungsfällen und Backend-Umgebungen für Unternehmen und sonstige Nutzer:innen. Das Besondere: Lambda skaliert, verwaltet und wartet die Infrastruktur automatisch. Wie das funktioniert, welche weiteren Vorteile AWS Lambda bietet und in welchen Bereichen Unternehmen den Service nutzen können, erfahren Sie hier.

Telefon

Digitalisierungs-Beratung

Sie haben Fragen zur Digitalisierung? Jetzt kostenlos beraten lassen. Montag-Freitag von 8-20 Uhr, außer an Feiertagen.

0800 505 4539

Hilfe und Service

Montag bis Freitag von 8 bis 20 Uhr, außer an Feiertagen.

0800 172 1234
Online
Vor Ort