Skip to content

Kubernetes

Kubernetes

Kubernetes einfach erklärt

Kubernetes, häufig als K8s abgekürzt, ist eine Open-Source-Plattform zur automatisierten Bereitstellung, Skalierung und Verwaltung containerisierter Anwendungen.

Kubernetes wurde ursprünglich von Google entwickelt und wird heute als Projekt der Cloud Native Computing Foundation, kurz CNCF, weiterentwickelt. Die Plattform kann im eigenen Rechenzentrum, in Public Clouds oder in hybriden Umgebungen betrieben werden.

Was ist Kubernetes?

Kubernetes ist ein sogenannter Container-Orchestrator. Die Plattform koordiniert Anwendungen, die in Containern verpackt sind, über mehrere Server hinweg.

Dabei übernimmt Kubernetes unter anderem:

  • Verteilung von Anwendungen auf verfügbare Systeme
  • Überwachung des gewünschten Betriebszustands
  • Neustart ausgefallener Container
  • horizontale Skalierung
  • interne Dienstauflösung
  • Lastverteilung
  • kontrollierte Updates und Rollbacks
  • Verwaltung von Konfigurationen und Zugangsdaten

Kubernetes erstellt jedoch keine Container-Images. Diese werden zuvor mit Werkzeugen wie Docker, Podman oder Build-Systemen erzeugt und in einer Container Registry gespeichert.

Wie funktioniert Kubernetes?

Ein Kubernetes-System besteht aus einem oder mehreren Servern, die gemeinsam einen Cluster bilden.

Der gewünschte Zustand einer Anwendung wird deklarativ beschrieben. Dabei wird beispielsweise festgelegt:

  • welches Container-Image verwendet wird
  • wie viele Instanzen laufen sollen
  • welche Ressourcen benötigt werden
  • über welche Netzwerkadresse die Anwendung erreichbar ist
  • welche Konfigurationen eingebunden werden
  • wie Updates durchgeführt werden

Kubernetes vergleicht diesen gewünschten Zustand kontinuierlich mit dem tatsächlichen Zustand des Clusters. Fällt beispielsweise eine Instanz aus, versucht die Plattform, automatisch eine neue bereitzustellen.

Dieses Verhalten wird häufig als Self-Healing bezeichnet. Es ersetzt jedoch weder eine fehlertolerante Anwendungsarchitektur noch ein Backup-Konzept.

Zentrale Bestandteile von Kubernetes

Cluster

Ein Cluster ist die gesamte Kubernetes-Umgebung. Er besteht aus einer Control Plane und einem oder mehreren Worker Nodes.

Control Plane

Die Control Plane verwaltet den Cluster. Sie nimmt Konfigurationen entgegen, plant Workloads ein und überwacht den Zustand der Umgebung.

Zu ihren Aufgaben gehören:

  • Verwaltung der Cluster-Konfiguration
  • Auswahl geeigneter Nodes
  • Überwachung des Sollzustands
  • Steuerung von Skalierung und Bereitstellung

Für produktive Umgebungen sollte die Control Plane hochverfügbar ausgelegt sein.

Nodes

Nodes sind physische oder virtuelle Server, auf denen die Anwendungen ausgeführt werden.

Auf jedem Worker Node laufen Komponenten, die Container starten, überwachen und mit dem Kubernetes-Cluster verbinden.

Pods

Ein Pod ist die kleinste von Kubernetes verwaltete Ausführungseinheit.

Ein Pod enthält einen oder mehrere eng zusammengehörige Container. Diese teilen sich bestimmte Netzwerk- und Speicherressourcen.

Pods sind grundsätzlich austauschbar. Anwendungen sollten deshalb nicht davon ausgehen, dass ein bestimmter Pod dauerhaft bestehen bleibt.

Deployments

Ein Deployment beschreibt, wie viele Instanzen einer Anwendung laufen sollen und welches Container-Image verwendet wird.

Es unterstützt unter anderem kontrollierte Aktualisierungen und die Rückkehr zu einer vorherigen Version.

Services

Ein Kubernetes Service stellt eine stabile Netzwerkadresse für eine Gruppe von Pods bereit.

Da Pods neu erstellt und ersetzt werden können, ermöglicht der Service den zuverlässigen Zugriff auf eine Anwendung, ohne deren wechselnde IP-Adressen kennen zu müssen.

Ingress und Gateway

Ingress-Ressourcen können HTTP- und HTTPS-Zugriffe von außerhalb des Clusters an interne Services weiterleiten. Dafür wird ein zusätzlicher Ingress Controller benötigt.

In neueren Architekturen kann alternativ die Kubernetes Gateway API für erweiterte Routing-Szenarien eingesetzt werden.

ConfigMaps und Secrets

ConfigMaps speichern allgemeine Konfigurationswerte. Secrets sind für vertrauliche Angaben wie Kennwörter, Schlüssel oder Zertifikate vorgesehen.

Secrets sind allerdings nicht automatisch umfassend geschützt. Verschlüsselung, Berechtigungen und externe Secret-Management-Lösungen müssen entsprechend konfiguriert werden.

Welche Vorteile bietet Kubernetes?

Kubernetes kann den Betrieb moderner Anwendungen vereinheitlichen und automatisieren.

Mögliche Vorteile sind:

  • standardisierte Anwendungsbereitstellung
  • automatisierte Skalierung
  • kontrollierte Updates
  • Wiederherstellung ausgefallener Pods
  • bessere Ressourcennutzung
  • Unterstützung von CI/CD-Prozessen
  • Betrieb auf unterschiedlichen Infrastrukturen
  • umfangreiches Cloud-Native-Ökosystem
  • Trennung von Anwendung und Infrastruktur

Die Plattform verbessert die Portabilität, macht Anwendungen aber nicht automatisch vollständig unabhängig von einem Cloud-Anbieter. Abhängigkeiten können beispielsweise durch Datenbanken, Speicherlösungen oder proprietäre Cloud-Dienste entstehen.

Welche Herausforderungen gibt es?

Kubernetes ist leistungsfähig, bringt aber zusätzliche Komplexität mit sich.

Zu den Herausforderungen gehören:

  • Einrichtung und Wartung des Clusters
  • Netzwerk- und Speicherkonfiguration
  • Absicherung von Rollen und Berechtigungen
  • Überwachung und Protokollierung
  • Verwaltung von Updates
  • Schutz der Software-Lieferkette
  • Fehlersuche in verteilten Anwendungen
  • Sicherung zustandsbehafteter Daten
  • benötigtes Spezialwissen

Für kleinere oder einfache Anwendungen kann eine weniger komplexe Plattform wirtschaftlicher sein.

Kubernetes und virtuelle Maschinen im Vergleich

Container und virtuelle Maschinen sind keine vollständigen Gegensätze. Kubernetes-Cluster werden häufig selbst auf virtuellen Maschinen betrieben.

Eine virtuelle Maschine enthält ein vollständiges Gastbetriebssystem. Container verwenden dagegen den Kernel des zugrunde liegenden Betriebssystems und isolieren die ausgeführten Prozesse.

Container bieten dadurch häufig:

  • kürzere Startzeiten
  • geringeren Ressourcenbedarf
  • standardisierte Bereitstellung
  • hohe Anwendungsdichte

Virtuelle Maschinen bieten dagegen eine stärkere Trennung auf Betriebssystemebene und eignen sich häufig besser für:

  • klassische Serveranwendungen
  • unterschiedliche Betriebssysteme auf einem Host
  • ältere oder nicht containerfähige Software
  • Workloads mit besonderen Isolationsanforderungen

In vielen Infrastrukturen werden beide Technologien kombiniert.

Typische Einsatzbereiche

Kubernetes wird unter anderem eingesetzt für:

  • Microservices
  • Webanwendungen und APIs
  • cloud-native Anwendungen
  • DevOps- und CI/CD-Umgebungen
  • hybride Cloud-Infrastrukturen
  • Edge Computing
  • skalierbare Plattformdienste
  • Entwicklungs- und Testumgebungen

Zustandsbehaftete Anwendungen wie Datenbanken können ebenfalls in Kubernetes betrieben werden. Sie erfordern jedoch eine besonders sorgfältige Planung von Speicher, Verfügbarkeit, Datensicherung und Wiederherstellung.

Fazit

Kubernetes automatisiert die Bereitstellung und Verwaltung containerisierter Anwendungen über mehrere Systeme hinweg. Die Plattform sorgt dafür, dass der definierte Zustand einer Anwendung möglichst dauerhaft eingehalten wird.

Kubernetes eignet sich besonders für dynamische, skalierbare und automatisierte Anwendungslandschaften. Der Nutzen muss jedoch gegen den erhöhten Betriebs-, Sicherheits- und Schulungsaufwand abgewogen werden.

Neue Beiträge

NIS2 erklärt

NIS2 einfach erklärt NIS2 bezeichnet die zweite europäische Richtlinie zur Sicherheit von Netzwerk- und Informationssystemen. Ihr Ziel ist

Reverse Proxy

Reverse Proxy einfach erklärt Ein Reverse Proxy ist ein Server oder Dienst, der eingehende Anfragen entgegennimmt und an

HellBa Success Story

Die HellBa Kunststoffe GmbH hat sich seit ihrer Gründung im Jahr 2009 von einem reinen Händler zu einem