Suchen

Definition: Orchestrierung von Containern mit K8s Was ist Kubernetes (K8s)?

Kubernetes ist eine ursprünglich von Google entwickelte Open-Source-Plattform zur Orchestrierung von Containern. Sie gestattet das automatisierte Einrichten, Skalieren, Betreiben und Warten containerisierter Anwendungen und unterstützt Container-Engines wie Docker und zahlreiche Cloud-Computing-Plattformen.

Firma zum Thema

Container-Orchestrierung mit Kubernetes - von Google entworfen und an die Cloud Native Computing Foundation gespendet. Funktionen und Vorteile der Open-Source-Plattform im Überblick.
Container-Orchestrierung mit Kubernetes - von Google entworfen und an die Cloud Native Computing Foundation gespendet. Funktionen und Vorteile der Open-Source-Plattform im Überblick.
(Bild: gemeinfrei (geralt) / Pixabay )

Kubernetes wird oft mit "K8s" abgekürzt. Es handelt sich um eine Open-Source-Plattform, mit der sich Container orchestrieren lassen. Kubernetes vereinfacht und automatisiert das Einrichten, Skalieren, Betreiben und Warten containerisierter Anwendungen. Die Plattform fasst die Container-Einheiten zu Clustern bestehend aus virtuellen oder physischen Nodes zusammen und arbeitet Master-Slave-basiert.

Das Steuer in der Hand: K8s zur Automatisierung, Bereitstellung, Skalierung und Verwaltung von containerisierten Anwendungen.
Das Steuer in der Hand: K8s zur Automatisierung, Bereitstellung, Skalierung und Verwaltung von containerisierten Anwendungen.
(Bild: Kubernetes)

Ursprünglich wurde Kubernetes von Google entworfen. Die erste Version der Software wurde im Jahr 2015 veröffentlicht. Später spendete Google Kubernetes an die Cloud Native Computing Foundation (CNCF), die heute für die Weiterentwicklung der Plattform zuständig ist und weitere Projekte aus dem Cloud Native Computing Umfeld betreut. Kubernetes steht unter Apache-Lizenz 2.0 und unterstützt verschiedene Container-Engines wie Docker sowie gängige Cloud-Plattformen wie Microsoft Azure, Amazon Web Services oder Oracle Cloud Infrastructure und viele mehr.

Zentrale Funktionen von Kubernetes

Kubernetes bietet ein riesiges Leistungsspektrum und stellt zahlreiche Funktionen zum Einrichten, Skalieren, Betreiben, Verwalten und Warten von Container-basierten Anwendungen zur Verfügung. Wichtige Funktionen sind:

  • automatisierte Container-Einrichtung und automatisierter Rollout der Software
  • Berücksichtigung der Ressourcenanforderung des Deployments hinsichtlich Rechenzeit und Speicherplatz
  • Bereitstellung von persistentem Storage für die zustandslosen Container
  • automatische Skalierung des Containerbetriebs
  • intelligente Erkennung von Netzwerkverbindungen und automatische Lastverteilung
  • Bereitstellung von Redundanzen für hochverfügbare Systeme

Die Funktionsweise von Kubernetes

Um die Funktionsweise von Kubernetes zu verstehen, ist die Kenntnis der grundlegenden von Kubernetes verwendeten Begrifflichkeiten notwendig. Kubernetes nutzt folgende Begriffe:

  • Pods
  • Nodes (auch teilweise als Minions bezeichnet)
  • Cluster

Ein Pod ist die kleinste Einheit innerhalb der Kubernetes-Architektur. Die Pods beinhalten ein oder mehrere Container. Nodes sind virtuelle oder physische Systeme, auf denen die Pods als Prozesse laufen. Mehrere Nodes werden zu einem Cluster zusammengefasst.

Grundsätzlich arbeitet Kubernetes in einer Master-Slave-Architektur. Eine zentrale Rolle innerhalb dieser Architektur übernimmt der Kubernetes-Master. Er nimmt die Befehle des Administrators entgegen und steuert die Nodes mit ihren Pods und Containern. Hierfür weist er Ressourcen zu und bestimmt die Pods eines Nodes, die eine bestimmte Aufgabe ausführen sollen. Um die Container zu verwalten, existieren auf dem Kubernetes-Master folgende Prozesse:

  • API Server
  • etcd
  • Controller Manager
  • Scheduler

Ein zentraler Prozess des Masters ist der API Server. Er kommuniziert über eine REST-Schnittstelle und bedient alle weiteren Komponenten und externen oder internen Dienste. etcd ist eine Key-Value-Datenbank, in der sich Konfigurationsdaten speichern lassen. Unter anderem nutzt der API Server etcd als persistenten Speicher. Der Controller Manager stellt Kontrollmechanismen zur Verfügung und kann über den API Server Stati lesen oder schreiben. Mithilfe des Schedulers legt Kubernetes fest, auf welchem Node welcher Pod laufen soll. Er berücksichtigt die vorhandenen Ressourcen und überwacht die Auslastung der Nodes.

Die Kubernetes Nodes sind virtuelle oder physische Systeme, auf denen die Container in Pods laufen. Wichtige Komponenten jedes Nodes sind:

  • Kubelet
  • Kube-Proxy
  • cAdvisor

Das Kubelet ist für das Starten und Stoppen von Containern zuständig und kommuniziert mit dem Controller Manager des Masters. Plant der Master beispielsweise einen Pod für einen Node ein, weist der Controller Manager über den Kubelet die Container-Engine an, den Container zu starten. Kubelet sendet die Stati der Container zum Master. Der Master kann aufgrund dieser Informationen Container anhalten, neu starten oder ersetzen. Meldet sich ein Kubelet eines Nodes nicht mehr, kann der Master über den Controller Manager einen anderen Node beauftragen, die ausgefallenen Pods mit ihren Containern dort zu starten. Der Kube-Proxy stellt Lastausgleichsfunktionen zur Verfügung. Über den cAdvisor lassen sich die aufgezeichneten Ressourceninformationen eines Containers abfragen.

Abgrenzung von Kubernetes zu Docker oder anderen Container-Engines

Die Begriffe Kubernetes und Docker oder die Bezeichnungen anderer Container-Engines werden oft in ähnlichen Zusammenhängen verwendet. Kubernetes lässt sich als Container-Orchestrierungsplattform jedoch deutlich von den Container-Engines abgrenzen. Zwar kann Kubernetes Container deployen, betreiben und verwalten, doch ist K8s nicht in der Lage, die eigentlichen Container bereitzustellen. Hierfür ist immer eine Container-Engine wie Docker notwendig. Die Engine stellt die Container bereit, Kubernetes steuert und verwaltet sie. Die Kombination macht es also aus.

Vorteile durch den Einsatz von Kubernetes

Durch den Einsatz von Kubernetes zur Orchestrierung von Containern ergeben sich zahlreiche Vorteile. Neue Funktionen oder Services lassen sich im Vergleich zu monolithisch arbeitenden herkömmlichen Systemen wesentlich schneller ausrollen. Manuelle Prozesse, die für die Bereitstellung und Skalierung der Container-basierten Anwendungen notwendig sind, werden überflüssig und durch Kubernetes automatisiert.

Ein mit Kubernetes realisiertes System arbeitet stabil und mit hoher Ausfallsicherheit. Es kann festgelegt werden, wie viele Pods für besonders kritische Services vorzuhalten sind. Fällt ein Pod mit seinen Containern aus, ist der direkte Weiterbetrieb in einem bereitgehaltenen Pod möglich.

Ein weiterer Vorteil ergibt sich in der Skalierung. Benötigen bestimmte Anwendungen mehr Ressourcen, kann Kubernetes diese schnell und einfach zur Verfügung stellen.

Update-Prozesse lassen sich dank sogenannter Rolling Updates ohne Außenwirkung durchführen. Hierbei werden die Softwarestände der Pods nach und nach aktualisiert. Für den Anwender bleibt der Service durchgängig verfügbar.

Die Pods mit ihren Container stellen sicher, dass Anwendungen plattformunabhängig laufen. Dies sorgt für eine hohe Reproduzierbarkeit und den problemlosen Transfer von Anwendungen in andere Umgebungen.

Volle Ausschöpfung des Cloud-Potenzials mit Kubernetes

Mit Kubernetes und Containern lässt sich das volle Potenzial des Cloud Computings ausschöpfen. Kubernetes arbeitet mit privaten, öffentlichen, hybriden oder Multi-Cloud-Umgebungen zusammen und bietet eine große Flexibilität bei der Realisierung von Anwendungen. Die Container mit ihren Anwendungen sind mit geringem Aufwand zwischen verschiedenen Systemen und Cloud-Umgebungen verschiebbar. Alle gängige Cloud-Plattformen unterstützen Kubernetes.

Dank der Orchestrierungsplattform ist die Steuerung der Container mit ihren Anwendungen unabhängig von der zugrundeliegenden Cloud-Umgebung möglich. Je nach Anforderung und benötigten Ressourcen können Anwendungen in die jeweils optimale Umgebung verlagert werden. Durch die Einbindung der Cloud-Lösungen verschiedener Anbieter werden Abhängigkeiten vermieden. Kubernetes organisiert für Anwendungen mit großen Ressourcenanforderungen den Zugriff auf die Funktionen und Leistungen verschiedener Anbieter.

Cloud Native, Microservices, Serverless Computing & Co.: Weitere Definitionen im Cloud Computing Wiki

Definitionen rund um Cloud ComputingVon AWS bis XaaS: Alle relevanten Schlagworte aus dem Bereich Cloud Computing finden Sie verständlich erklärt in unseren Definitionen. Ganz im Sinne eines kleinen, aber feinen Glossars lesen Sie hier neutral verfasste Erklärungen zu den wichtigsten Begriffen. Als Service für Sie haben wir die hier erklärten Begriffe in unseren Beiträgen auch direkt mit den zugehörigen Lexikoneinträgen verlinkt. So können Sie die wichtigsten Begriffe direkt dort nachschlagen, wo sie im Text auftauchen.  

Zum Special: Definitionen rund um Cloud Computing

(ID:45862509)

Über den Autor