Container und Kubernetes | Teil 1
Container und Kubernetes - Die Basics
Container und Kubernetes sind heute zentrale Bausteine der modernen IT. Während Kubernetes die Container-Orchestrierung übernimmt, ist die Verwaltung von Clustern in großem Maßstab nach wie vor komplex.
In der Welt der Cloud-nativen Anwendungen für industrielle Edge-Anwendungen kommt immer wieder eine Debatte auf: Container-Management versus Anwendungsorchestrierung über Edge-Geräte hinweg. Reichen Container allein aus oder benötigen Unternehmen ein Tool wie Kubernetes, um Container in der Produktion verwalten zu können? Die Antwort lautet: beides. Das Verständnis, wie sich diese Technologien ergänzen, ist entscheidend für den effizienten Betrieb moderner Infrastrukturen.
Was sind Container?
Container sind eine schlanke Methode, Software so zu verpacken, dass sie in verschiedenen Umgebungen konsistent ausgeführt werden kann. Container nutzen die Isolierung auf Betriebssystemebene und stützen sich dabei auf Kernel-Funktionen des Host-Systems, anstatt Hardware zu virtualisieren. In der Praxis bündelt ein Container eine Anwendung zusammen mit allem, was sie zum Ausführen benötigt – ihrem Code, ihrer Laufzeitumgebung, ihren Bibliotheken und ihren Systemtools – in einem portablen Image. Da die Laufzeitumgebung mit der Anwendung mitwandert, verhalten sich Container in Entwicklungs-, Test- und Produk-tionsumgebungen konsistent. Diese Portabilität ist ein wesentlicher Grund dafür, dass Container ein zentraler Bestandteil der modernen Softwarebereitstellung sind.
Container versus virtuelle Maschinen
Container werden oft mit virtuellen Maschinen (VMs) verglichen, aber sie arbeiten auf unterschiedlichen Ebenen. Virtuelle Maschinen emulieren komplette Computer. Jede VM führt ihr eigenes Betriebssystem mit einem dedizierten Kernel und virtualisierten Hardware-Ressourcen aus. Container hingegen teilen sich den Kernel des Host-Betriebssystems und isolieren gleichzeitig Prozesse, Netzwerke und Dateisysteme. Dadurch sind sie deutlich leichter und schneller zu starten als VMs. Das Ergebnis ist eine Umgebung, in der Anwendungen schnell bereitgestellt, einfach repliziert und effizient skaliert werden können, ohne dass der Overhead für den Betrieb mehrerer vollständiger Betriebssysteme anfällt.
Die Rolle von Kubernetes
Kubernetes ist eine Open-Source-Plattform, die für die Orchestrierung containerisierter Anwendungen entwickelt wurde. Sie automatisiert die Bereitstellung, Skalierung und den Betrieb von Containern über Maschinencluster hinweg. Kubernetes, oft als "k8s" abgekürzt, fungiert als Kontrollschicht, die bestimmt, wo Container ausgeführt werden, wie sie kommunizieren und wie sie auf Änderungen der Nachfrage oder Ausfälle der Infrastruktur reagieren. Anstatt einzelne Container oder Server zu verwalten, definieren Ingenieure den gewünschten Zustand einer Anwendung, und Kuber-netes arbeitet kontinuierlich daran, diesen Zustand aufrechtzuerhalten.
Kubernetes gruppiert die Infrastruktur in Clustern, also Sammlungen von Maschinen, auf denen containerisierte Workloads ausgeführt werden. Ein Cluster umfasst in der Regel eine Steuerungsebene und Worker-Knoten. Die Steuerungsebene verwaltet den Gesamtzustand des Clusters. Sie stellt die Kubernetes-API bereit und plant Workloads, während sie sicherstellt, dass das System weiterhin der gewünschten Konfiguration entspricht. Worker-Knoten führen die von der Steuerungsebene zugewiesenen containerisierten Anwendungen aus. Durch diese Organisation der Infrastruktur kann Kubernetes Anwendungen auf vielen Maschinen verwalten und gleichzeitig eine einheitliche Betriebsschnittstelle bereitstellen.
Warum Kubernetes benötigt wurden
Container lösten das Problem der Anwendungspaketierung, aber der Betrieb einer großen Anzahl von Containern brachte neue betriebliche Herausforderungen mit sich. Moderne Anwendungen bestehen oft aus vielen verteilten Diensten, die auf mehreren Maschinen laufen. Die manuelle Verwaltung dieser Workloads würde die Koordination von Planung, Vernetzung, Skalierung, Updates und Fehlerbehebung erfordern. Kubernetes wurde entwickelt, um diese betrieblichen Aufgaben zu automatisieren. Durch die Abstraktion der Infrastruktur in Cluster und die Verwaltung von Containern über eine Steuerungsebene bietet es eine konsistente Möglichkeit, containerisierte Anwendungen in großem Maßstab zu betreiben.
Kernfunktionen von Kubernetes
Dank mehrerer Funktionen eignet sich Kubernetes besonders gut für den Betrieb großer Containerumgebungen. Ein Vorteil ist die automatische Skalierung. Anwendungen können horizontal skaliert werden, indem die Anzahl der ausgeführten Container erhöht oder verringert wird. Selbstheilende Systeme sorgen dafür, dass ausgefallene Container neu gestartet und Workloads neu geplant werden, wenn Knoten nicht mehr verfügbar sind. Durch Service Discovery und Lastenausgleich erhalten Dienste stabile Netzwerkidentitäten und der Datenverkehr wird auf verschiedene Instanzen verteilt. Mittels Speicherorchestrierung kann Kubernetes persistenten Speicher von verschiedenen Anbietern anbinden. Dank Infrastrukturabstraktion können Cluster in Cloud-, On-Premises- oder Hybrid-Umgebungen ausgeführt werden, wobei ein konsistentes Betriebsmodell beibehalten wird. Unternehmen profitieren von einer de-facto-Industriestandard-API, die von der Open-Source-Community definiert und in der herkömmlichen IT aktualisiert wird. Zudem steht ein großes bestehendes Open-Source-basiertes Ökosystem zur Verfügung, das von der Cloud Native Computing Foundation (CNCF) bereitgestellt wird. Eine Übersicht findet sich unter CNCF Landscape.
Zusammen ermöglichen diese Funktionen Unternehmen, Kubernetes als operatives Rückgrat der containerisierten Infrastruktur einzusetzen und die Ausführung von Anwendungen über verteilte Systeme hinweg zu koordinieren.
Container vs. Kubernetes: Eine falsche Dichotomie
Lange Zeit wurden Container und Kubernetes fälschlicherweise als konkurrierende Technologien dargestellt. Container lösen das Problem der Paketierung und Ausführung von Anwendungen in konsistenten Umgebungen. Kubernetes löst das Problem des Betriebs dieser Container in großem Maßstab. Mit anderen Worten: Container definieren, wie eine Anwendung ausgeführt wird, während Kubernetes definiert, wie viele, wo und unter welchen Bedingungen diese Container in einer verteilten Infrastruktur ausgeführt werden sollen.
Dieser Unterschied wird deutlich, sobald Container nicht mehr nur auf einem einzigen Rechner verwendet werden. Die lokale Ausführung von einem oder zwei Containern ist unkompliziert, aber in Produktionsumgebungen treten schnell Herausforderungen auf: die Verteilung von Workloads auf verschiedene Knoten, der Austausch ausgefallener Container, die bedarfsgerechte Skalierung von Anwendungen, die Verwaltung der Vernetzung zwischen Diensten und die Einführung von Updates ohne Ausfallzeiten.
Genau diese betrieblichen Probleme sollen mit Container-Orchestrierungssystemen gelöst werden. Kubernetes hat sich als die am weitesten verbreitete Lösung durchgesetzt, da es ein deklaratives Modell für die Verwaltung containerisierter Anwendungen über Maschinencluster hinweg bietet. Anstatt Container manuell zu starten und zu stoppen, definieren die Betreiber den gewünschten Zustand des Systems, beispielsweise, dass ein Dienst immer drei Replikate ausführen soll und Kubernetes arbeitet kontinuierlich daran, diesen Zustand aufrechtzuerhalten.
Wie Container und Kubernetes zusammenarbeiten
In der Praxis bilden Container und Kubernetes zwei Schichten desselben Betriebsmodells. Container verpacken Anwendungen und ihre Abhängigkeiten in portable Images. Kubernetes plant und verwaltet diese Images dann über einen Cluster hinweg mithilfe von Abstraktionen wie Pods, Deployments und Services.
Während Kubernetes die Container-Orchestrierung übernimmt, ist die Verwaltung von Clustern in großem Maßstab nach wie vor komplex. Unternehmen verlassen sich zunehmend auf Container-Plattformen, um den Betrieb zu vereinfachen. Diese Plattformen bieten eine zentrale Schnittstelle für die Bereitstellung, Überwachung und Skalierung von Containern und lassen sich gleichzeitig in CI/CD-Pipelines integrieren, Sicherheitsrichtlinien durchsetzen und konsistente Umgebungen über Cloud- und lokale Infrastrukturen hinweg gewährleisten. Plattformen wie die ‚Kubermatic Kubernetes Platform (KKP)‘ abstrahieren einen Großteil der betrieblichen Komplexität und verwandeln Cluster in verwaltbare Umgebungen, die umfangreiche Anwendungen effizient unterstützen können.
Die Zukunft von Containern und Kubernetes
Container und Kubernetes sind heute zentrale Bausteine der modernen IT, aber die Landschaft entwickelt sich weiter. Mehrere Trends prägen die nächste Stufe der Cloud-nativen Infrastruktur: Plattform-Engineering und interne Entwicklerplattformen (IDPs), Datenhoheit und hybride Bereitstellungen, KI- und ML-Workloads sowie operative Automatisierung. Die Kombination aus Containern als Bausteinen und Kubernetes als Steuerungsebene, ergänzt durch geeignete Plattformen, schafft die Voraussetzungen, um die Infrastruktur agiler, widerstandsfähiger und entwicklerfreundlicher zu gestalten als je zuvor.













