Kubernetes – Container-Orchestrierung verstehen und einsetzen
Was ist Kubernetes wirklich? Im Kern ist Kubernetes nichts anderes als Docker mit einem Netzwerk- und Verwaltungslayer. Man nimmt Container – also isolierte Anwendungspakete, wie man sie von Docker kennt – und stellt sie auf eine Plattform, die sich um Verteilung, Skalierung, Netzwerk und Ausfallsicherheit kümmert. Kubernetes abstrahiert die darunterliegende Infrastruktur und bietet einheitliche Schnittstellen, egal ob die Container auf einem Laptop, einem Rechenzentrum oder bei einem Cloud-Anbieter laufen.
Der Name: Kubernetes (griechisch: Steuermann) wird oft als K8s abgekürzt – die 8 steht für die acht Buchstaben zwischen K und s.
Warum nicht einfach Docker?
Docker allein löst ein Problem: Anwendungen samt Abhängigkeiten in Container verpacken und auf einem einzelnen Host laufen lassen. Sobald man aber mehrere Container auf mehreren Servern betreiben, miteinander vernetzen, automatisch neu starten und skalieren will, braucht man einen Orchestrator. Docker Swarm war ein erster Ansatz – Kubernetes hat sich als Industriestandard durchgesetzt.
Kubernetes fügt drei wesentliche Dinge hinzu, die Docker allein nicht bietet: ein Software Defined Network, das alle Container über Hosts hinweg miteinander verbindet, ein deklaratives Konfigurationsmodell, bei dem man beschreibt was man will und Kubernetes den Weg dorthin selbst findet, und ein einheitliches Rollen- und Rechtemodell (RBAC – Role-Based Access Control), mit dem man granular steuern kann, wer was im Cluster darf.
Die wichtigsten Kubernetes-Komponenten
Pods
Die kleinste deploybare Einheit in Kubernetes. Ein Pod enthält einen oder mehrere Container, die sich ein Netzwerk und einen Speicherbereich teilen. In der Praxis läuft meistens ein Container pro Pod. Pods sind flüchtig – Kubernetes erstellt und zerstört sie nach Bedarf.
Deployments
Ein Deployment beschreibt den gewünschten Zustand: Welches Container-Image, wie viele Instanzen (Replicas), welche Umgebungsvariablen. Kubernetes sorgt dafür, dass dieser Zustand eingehalten wird. Stirbt ein Pod, wird automatisch ein neuer gestartet. Bei einem Update wird schrittweise ausgerollt (Rolling Update), sodass die Anwendung verfügbar bleibt.
ReplicaSets
Das ReplicaSet ist die Komponente, die hinter dem Deployment die tatsächliche Anzahl der Pods überwacht. Man arbeitet in der Regel nicht direkt mit ReplicaSets, sondern über Deployments – aber es ist wichtig zu wissen, dass ein Deployment bei jedem Update ein neues ReplicaSet erstellt und das alte herunterfährt. Das ermöglicht Rollbacks auf Knopfdruck.
Services
Ein Service ist eine stabile Netzwerkadresse für eine Gruppe von Pods. Da Pods ständig kommen und gehen (und dabei neue IP-Adressen bekommen), braucht man eine feste Anlaufstelle. Ein Service verteilt den Traffic per Load Balancing auf alle Pods, die zu ihm gehören. Es gibt verschiedene Service-Typen: ClusterIP (nur intern erreichbar), NodePort (auf jedem Node über einen festen Port erreichbar) und LoadBalancer (erzeugt einen externen Load Balancer beim Cloud-Anbieter).
Ingress
Ingress ist der Eintrittspunkt für HTTP(S)-Traffic von außen. Ein Ingress Controller (z.B. NGINX Ingress, Traefik oder HAProxy) nimmt Anfragen entgegen und leitet sie anhand von Hostnamen und URL-Pfaden an den richtigen Service weiter. Damit kann man mehrere Anwendungen unter einer IP-Adresse mit verschiedenen Domains oder Pfaden erreichbar machen. TLS-Terminierung inklusive.
Namespaces
Namespaces sind virtuelle Cluster innerhalb eines physischen Clusters. Sie trennen Ressourcen logisch voneinander – zum Beispiel production, staging und development auf demselben Cluster. Jeder Namespace hat eigene Ressourcen-Quotas, Netzwerk-Policies und Zugriffsrechte. Standardmäßig existieren default, kube-system (für Systemkomponenten) und kube-public.
Stateful vs. Stateless
Der zentrale Unterschied: Stateless-Anwendungen speichern keinen Zustand lokal – jede Instanz ist austauschbar (typisch: Web-APIs, Frontend-Container). Stateful-Anwendungen brauchen persistenten Speicher und eine stabile Identität – typisch für Datenbanken, Message Queues oder Suchindizes.
Für Stateless-Workloads reichen Deployments. Für Stateful-Workloads gibt es StatefulSets: Jeder Pod bekommt einen stabilen Hostnamen (z.B. postgres-0, postgres-1), die Pods werden in definierter Reihenfolge gestartet und gestoppt, und jeder Pod behält sein eigenes Persistent Volume auch über Neustarts hinweg.
Ehrlich gesagt: Datenbanken in Kubernetes zu betreiben ist machbar, aber nicht trivial. Für den Anfang spricht nichts dagegen, Datenbanken als Managed Service außerhalb des Clusters zu nutzen und Kubernetes für die Stateless-Anwendungen einzusetzen.
Volumes und Persistent Volumes
Container-Dateisysteme sind flüchtig – stirbt der Container, sind die Daten weg. Kubernetes bietet deshalb ein Volume-Konzept mit mehreren Schichten:
- Volumes sind an den Pod-Lebenszyklus gebunden. Gut für temporäre Daten oder zum Teilen zwischen Containern im selben Pod.
- Persistent Volumes (PV) sind Speicherressourcen im Cluster, die unabhängig von Pods existieren.
- Persistent Volume Claims (PVC) sind Anforderungen eines Pods an Speicher – Größe und Zugriffsart (ReadWriteOnce, ReadWriteMany).
Was tatsächlich hinter einem Persistent Volume steckt, hängt von der Umgebung ab: In der Cloud sind es Block-Storage-Dienste (AWS EBS, Azure Disk, GCP Persistent Disk, Cinder-Volumes bei OpenStack), auf eigener Hardware kann es NFS, Ceph, Longhorn oder lokale SSDs sein. Kubernetes abstrahiert das über StorageClasses – der Administrator konfiguriert einmal, welcher Storage-Typ verfügbar ist, und Entwickler fordern einfach Speicher an.
Container Registry
Bevor Kubernetes einen Container starten kann, braucht es das Container-Image. Images werden in einer Container Registry gespeichert – einem Verzeichnisdienst für Container-Images, vergleichbar mit einem Paket-Repository. Kubernetes zieht (pullt) Images bei jedem Pod-Start aus der konfigurierten Registry.
Gängige Registries sind Docker Hub (öffentlich, mit Rate Limits), GitHub Container Registry (ghcr.io), GitLab Container Registry, Harbor (Self-hosted, Open Source), AWS ECR, Azure ACR und Google Artifact Registry. Für interne Projekte bietet eine private Registry die Kontrolle darüber, welche Images im Cluster landen dürfen.
Kubernetes in der Cloud: Wer nennt was wie?
Jeder Cloud-Anbieter bietet Managed Kubernetes an und mappt die Kubernetes-Infrastrukturkomponenten auf seine eigenen Cloud-Dienste. Die folgende Matrix zeigt, welche Cloud-Dienste hinter den Kubernetes-Konzepten stecken:
| K8s-Konzept | AWS (EKS) | Azure (AKS) | GCP (GKE) | IBM Cloud (IKS) | DigitalOcean (DOKS) | SysEleven (MetaKube) |
|---|---|---|---|---|---|---|
| Managed K8s | EKS (Elastic Kubernetes Service) | AKS (Azure Kubernetes Service) | GKE (Google Kubernetes Engine) | IKS (IBM Cloud Kubernetes Service) | DOKS (DigitalOcean Kubernetes) | MetaKube (auf OpenStack) |
| Nodes (Worker) | EC2 Instances / Managed Node Groups / Fargate (serverless) | Virtual Machine Scale Sets (VMSS) | Compute Engine VMs / Autopilot (serverless) | VPC Virtual Server Instances / Bare Metal | Droplets | OpenStack VMs (Nova) |
| Netzwerk (CNI) | VPC CNI (Amazon VPC) | Azure CNI / kubenet | GKE Dataplane V2 (Cilium-basiert) | VPC CNI (Calico) | VPC + Cilium | OpenStack Neutron + OVN |
| Load Balancer | Elastic Load Balancer (ALB/NLB) | Azure Load Balancer / Application Gateway | Cloud Load Balancing | IBM Cloud Load Balancer (VPC LBaaS) | DO Load Balancer | Octavia Load Balancer |
| Ingress | AWS ALB Ingress Controller / NGINX | AGIC (Application Gateway Ingress) / NGINX | GKE Ingress (Cloud LB) / NGINX | NGINX Ingress (managed) | NGINX Ingress (selbst) | NGINX / Traefik (selbst) |
| Persistent Volumes | EBS (Block) / EFS (File) / FSx | Azure Disk / Azure Files | Persistent Disk / Filestore | IBM Cloud Block Storage / File Storage | DO Block Storage / DO Spaces | Cinder Volumes (OpenStack) |
| Container Registry | ECR (Elastic Container Registry) | ACR (Azure Container Registry) | Artifact Registry | ICR (IBM Cloud Container Registry) | DOCR (DO Container Registry) | Harbor / externe Registry |
| Firewall / Netzwerk-Policies | Security Groups + Calico/Cilium | NSG (Network Security Groups) + Calico | VPC Firewall Rules + Dataplane V2 | VPC Security Groups + Calico | Cloud Firewalls + Cilium | Security Groups (OpenStack) + Calico |
| DNS | Route 53 | Azure DNS | Cloud DNS | IBM Cloud Internet Services (CIS) / DNS | DO DNS | Designate (OpenStack DNS) |
| IAM / RBAC | IAM Roles for Service Accounts (IRSA) | Azure AD + Managed Identities | Workload Identity | IBM Cloud IAM + K8s RBAC | begrenzt (API-Token) | OpenStack Keystone + K8s RBAC |
| Autoscaling | Cluster Autoscaler / Karpenter | Cluster Autoscaler / KEDA | Cluster Autoscaler / Autopilot | Cluster Autoscaler (Worker Pools) | Node Pool Autoscaling | Cluster Autoscaler (MetaKube) |
| Standort / Souveränität | Global (auch Frankfurt) | Global (auch Frankfurt) | Global (auch Frankfurt) | Global (auch Frankfurt), 60+ Rechenzentren | Frankfurt, Amsterdam u.a. | Ausschließlich DE (Berlin, Frankfurt, Hamburg) – DSGVO-konform |
Hinweis zu SysEleven: MetaKube setzt auf OpenStack als IaaS-Unterbau. Das bedeutet, dass Kubernetes-Ressourcen wie Load Balancer (Octavia), Volumes (Cinder) und Netzwerke (Neutron) über die OpenStack-APIs bereitgestellt werden. Für Unternehmen mit DSGVO-Anforderungen und dem Wunsch nach digitaler Souveränität ist das ein relevantes Alleinstellungsmerkmal – die Daten verlassen deutsche Rechenzentren nur, wenn man es explizit konfiguriert.
Hinweis zu IBM Cloud: IBM war einer der ersten Anbieter mit Managed Kubernetes auf Bare Metal (seit 2018) – das heißt, die Worker Nodes laufen direkt auf physischer Hardware ohne Virtualisierungsschicht, was für GPU-Workloads und Performance-kritische Anwendungen relevant ist. Die IKS Control Plane ist kostenlos – man zahlt nur für die Worker Nodes, Storage und Traffic. Ein Alleinstellungsmerkmal ist die enge Integration mit IBM-eigenen Diensten (Watson AI, Db2, MQ) und der Fokus auf regulierte Branchen wie Finanzdienstleistungen. Wer OpenShift statt Vanilla-Kubernetes bevorzugt, findet mit Red Hat OpenShift on IBM Cloud (ROKS) eine managed Alternative auf derselben Infrastruktur.
Kubernetes für lokale Entwicklung und Tests
Für den Einstieg, lokale Tests und interne Entwicklungsumgebungen muss man keinen Cloud-Cluster aufsetzen. Es gibt eine ganze Reihe leichtgewichtiger Kubernetes-Distributionen, die auf dem Laptop oder einem kleinen Entwicklungsserver laufen:
| Distribution | Beschreibung | Nodes | Ressourcen | Ideal für |
|---|---|---|---|---|
| Minikube | Der offizielle Kubernetes-Einstieg. Startet einen Single-Node-Cluster in einer VM (VirtualBox, KVM, Hyper-V) oder in Docker. Unterstützt Addons wie Dashboard, Ingress, Metrics Server. | Single | Mittel (VM) | Einsteiger, Lernen, lokale Entwicklung |
| Kind (Kubernetes in Docker) | Startet Kubernetes-Nodes als Docker-Container. Sehr schnell, keine VM nötig. Multi-Node-Cluster möglich. Offizielles CNCF-Projekt. | Multi | Gering | CI/CD-Pipelines, automatisierte Tests, schnelles Prototyping |
| k3s | Leichtgewichtige Kubernetes-Distribution von Rancher/SUSE. Einzelne Binary, SQLite statt etcd möglich, ARM-Support. Production-ready. | Multi | Sehr gering | Edge Computing, IoT, Raspberry Pi, kleine Produktionsumgebungen |
| k3d | Wrapper um k3s, der k3s-Cluster in Docker-Containern startet. Kombination aus der Leichtigkeit von k3s und der Geschwindigkeit von Kind. | Multi | Gering | Lokale Entwicklung, schnelle Multi-Cluster-Setups, CI/CD |
| k0s | Kubernetes-Distribution von Mirantis. Zero Dependencies, Single Binary, kein Hostbetriebssystem-Overhead. | Multi | Gering | Produktion, Edge, Air-gapped-Umgebungen |
| MicroK8s | Kubernetes-Distribution von Canonical (Ubuntu). Installation per Snap-Paket, Addon-System für Extras. | Multi (Clustering) | Mittel | Ubuntu-Nutzer, schneller Einstieg, IoT |
| Docker Desktop | Enthält seit längerem ein eingebautes Single-Node-Kubernetes. Ein Klick in den Einstellungen aktiviert es. | Single | Hoch (Docker Desktop) | Windows/Mac-Entwickler, die Docker Desktop ohnehin nutzen |
Empfehlung: Für den Einstieg eignet sich Minikube wegen der guten Dokumentation und der Addons. Für CI/CD und schnelles Hochfahren ist Kind oder k3d besser geeignet. Wer Kubernetes auch auf kleinen Produktionsumgebungen betreiben will, sollte sich k3s ansehen – es ist überraschend produktionstauglich für seine geringe Größe.
Im Linuxhotel-Training (dazu mehr am Ende des Artikels) wird mit k3d und k3s gearbeitet – ein pragmatischer Ansatz, der direkt praxisrelevant ist.
kubectl – Das Schweizer Taschenmesser für Kubernetes
Was ist kubectl?
kubectl (gesprochen: „kube-control" oder „kube-c-t-l" – darüber streiten sich die Leute) ist das offizielle Kommandozeilen-Werkzeug für Kubernetes. Es kommuniziert mit der Kubernetes API und ist das zentrale Tool, um einen Cluster zu verwalten. Wer kubectl beherrscht, kann alles mit einem Kubernetes-Cluster machen – von der Abfrage des Cluster-Status über das Deployment von Anwendungen bis hin zur Netzwerk-Konfiguration und dem Debugging laufender Container.
Was kann man damit machen?
Im Grunde alles, was Kubernetes bietet:
- Ressourcen anlegen, ändern, löschen: Pods, Deployments, Services, Ingress, ConfigMaps, Secrets – alle Kubernetes-Objekte lassen sich per
kubectl apply -f manifest.yamloder imperativ perkubectl createverwalten. - Cluster inspizieren:
kubectl get pods,kubectl get nodes,kubectl describe deployment mein-app– Statusabfragen in Echtzeit. - Debugging:
kubectl logs mein-pod,kubectl exec -it mein-pod -- /bin/sh(eine Shell im Container öffnen),kubectl port-forward svc/mein-service 8080:80(lokalen Port auf einen Service im Cluster weiterleiten). - Skalieren:
kubectl scale deployment mein-app --replicas=5. - Rollbacks:
kubectl rollout undo deployment mein-app. - RBAC verwalten: Rollen, ClusterRoles und Bindings anlegen und prüfen.
- Kontexte wechseln: Mit
kubectl config use-context stagingzwischen verschiedenen Clustern wechseln – die Konfiguration liegt in~/.kube/config.
kubectl bei Zertifizierungen
Wer eine offizielle Kubernetes-Zertifizierung anstrebt – CKA (Certified Kubernetes Administrator), CKAD (Certified Kubernetes Application Developer) oder CKS (Certified Kubernetes Security Specialist) – arbeitet in der Prüfung ausschließlich mit kubectl und der Kommandozeile. Keine GUI, keine IDE-Plugins. Die Prüfungen sind praxisbasiert: Man bekommt einen echten Cluster und muss Aufgaben innerhalb eines Zeitlimits lösen. Wer kubectl sicher beherrscht, hat einen massiven Vorteil.
Wichtige kubectl-Tipps
# Kurzformen (Aliase) nutzen – spart viel Tipparbeit
alias k=kubectl
k get po # statt: kubectl get pods
k get svc # statt: kubectl get services
k get deploy # statt: kubectl get deployments
k get ns # statt: kubectl get namespaces
# Ausgabe als YAML – zeigt die vollständige Konfiguration
k get deployment mein-app -o yaml
# Alle Ressourcen in einem Namespace anzeigen
k get all -n mein-namespace
# Schnell ein Manifest erzeugen, ohne es sofort anzuwenden
k create deployment mein-app --image=nginx --dry-run=client -o yaml > deployment.yaml
# Events des Clusters anzeigen – Gold wert beim Debugging
k get events --sort-by='.lastTimestamp'
# Autovervollständigung aktivieren (bash)
source <(kubectl completion bash)
Das Kubernetes Dashboard
Was ist das Dashboard?
Das Kubernetes Dashboard ist die offizielle Web-Oberfläche für Kubernetes. Es bietet eine grafische Übersicht über Workloads, Nodes, Namespaces und Ressourcenverbrauch. Man kann Pods inspizieren, Logs lesen, Deployments skalieren und YAML-Manifeste direkt bearbeiten – alles im Browser.
Für den Einstieg und zur schnellen Übersicht ist es ein gutes Werkzeug. Für den produktiven Betrieb reicht es allerdings oft nicht aus: Es unterstützt nur einen Cluster gleichzeitig, hat begrenzte RBAC-Möglichkeiten und bietet keine GitOps-Integration.
Installation per kubectl
# Dashboard installieren (aktuelle Version prüfen!)
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
# Bei Minikube geht es noch einfacher:
minikube dashboard
Zugriff und Absicherung
Das Dashboard sollte niemals ungeschützt im Internet erreichbar sein. Grundregeln:
- Kein öffentlicher Ingress – Zugriff nur über
kubectl proxyoderkubectl port-forward. - Service-Account mit eingeschränkten Rechten – nicht den Cluster-Admin-Token verwenden.
- Token-basierte Authentifizierung oder besser OIDC/SSO-Anbindung für produktive Setups.
- Netzwerk-Policies – den Dashboard-Namespace so einschränken, dass nur autorisierter Traffic ankommt.
# Sicherer Zugriff über kubectl proxy (nur localhost)
kubectl proxy
# Dann im Browser: http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/
Alternativen zum klassischen Dashboard
Das originale Kubernetes Dashboard wird nach wie vor gepflegt, stößt aber bei Multi-Cluster-Setups und größeren Teams an Grenzen. Moderne Alternativen sind Headlamp (leichtgewichtig, Plugin-fähig, Open Source) und Skooner (minimalistisch, schnelle Übersicht, OIDC-Support).
Desktop-Tools und IDE-Plugins
Neben kubectl und dem Dashboard gibt es eine ganze Reihe von Tools, die den Umgang mit Kubernetes deutlich komfortabler machen. Einige davon sind echte Augenöffner.
Desktop-Anwendungen
| Tool | Typ | Highlights | Lizenz |
|---|---|---|---|
| Lens | Desktop-IDE | Der „Platzhirsch" unter den K8s-GUIs. Cluster-Explorer, Helm-Integration, Prometheus-Metriken, Multi-Cluster-Support. Mittlerweile mit AI-Copilot (Lens Prism). | Frei für Einzelpersonen (unter Umsatzgrenze), sonst kostenpflichtig |
| OpenLens / FreeLens | Desktop-IDE | Open-Source-Forks von Lens, die nach der Kommerzialisierung von Lens entstanden sind. FreeLens gilt 2026 als die risikoärmste Open-Source-Alternative. | Open Source (MIT) |
| k9s | Terminal-UI | Für alle, die lieber im Terminal arbeiten: Schnelle Navigation, Echtzeit-Übersicht, Hotkey-gesteuert, extrem ressourcenschonend. Wie htop für Kubernetes. |
Open Source (Apache 2.0) |
| Aptakube | Desktop (nativ) | Native App (kein Electron), echte Multi-Cluster-Ansicht, sehr schnell. Fokus auf Übersichtlichkeit. | Kostenpflichtig |
| Portainer | Web-UI | Container-Management-Plattform mit Kubernetes-Support. Gut für Teams, die von Docker kommen. | Community Edition kostenlos |
VS Code Plugins
| Plugin | Herausgeber | Funktionen |
|---|---|---|
| Kubernetes (ms-kubernetes-tools) | Microsoft / CNCF Sandbox | Cluster-Explorer, Helm-Chart-Unterstützung, IntelliSense für K8s-Manifeste, Logs, Port-Forwarding, Debugging. Das wichtigste K8s-Plugin für VS Code. |
| YAML | Red Hat | YAML-Sprachserver mit Schema-Validierung – erkennt Kubernetes-Manifeste automatisch und bietet Autocomplete. |
| Cloud Code | Google Cloud | Kubernetes- und Cloud-Run-Entwicklung, Snippet-Templates, integriertes Secret-Management, Skaffold-Integration. |
| Helm Intellisense | Tim Roes | Auto-Completion und Validierung für Helm-Templates und values.yaml. |
| Docker | Microsoft | Container-Management direkt aus VS Code – Images bauen, Registry-Zugriff, Dockerfile-Support. |
IntelliJ / JetBrains Plugins
Das Kubernetes-Plugin ist in IntelliJ IDEA Ultimate standardmäßig enthalten (nicht in der Community Edition). Es bietet Cluster-Browsing über das Services-Fenster, Code-Completion für K8s-Manifeste und Helm-Charts, CRD-Validierung, Kustomize-Unterstützung und direkte Interaktion mit dem Cluster (Logs, Shell, Describe). Unterstützt Kubernetes-Versionen 1.26 bis 1.34.
Tools, die die Augen öffnen
Einige Tools verdienen besondere Erwähnung, weil sie ein Problem lösen, von dem man vorher nicht wusste, dass man es hat:
- k9s – Wer einmal mit k9s gearbeitet hat, will nie wieder rohes
kubectl get podstippen. Die Terminal-UI macht Cluster-Navigation extrem schnell.:pods,:deploy,:svc– und man ist drin. - kubectx + kubens – Zwei kleine Tools, die den Kontext- und Namespace-Wechsel auf einen Befehl reduzieren. Klingt trivial, spart im Alltag enorm Zeit.
- Stern – Multi-Pod-Log-Tailing mit Farbcodierung.
stern mein-appzeigt die Logs aller Pods, die zu einem Deployment gehören – in Echtzeit, farblich unterschieden. - Krew – Plugin-Manager für kubectl. Erweitert kubectl um hunderte Community-Plugins. Installation:
kubectl krew install ctx(installiert kubectx als kubectl-Plugin). - DevSpace – Entwicklungs-Workflow-Tool mit Hot-Reloading. Ändert man den Code lokal, wird er automatisch in den Container im Cluster synchronisiert – ohne Image-Build-Zyklus.
Von der Registry zum Cluster: Deployment-Strategien
Das Container-Image liegt in der Registry, der Kubernetes-Cluster steht bereit – aber wie kommt das Image in den Cluster? Hier gibt es verschiedene Ansätze, von manuell bis vollautomatisiert.
Manuell: kubectl apply
Der einfachste Weg: Man schreibt YAML-Manifeste (Deployment, Service, Ingress) und wendet sie mit kubectl apply -f an. Funktioniert für den Anfang und für Einmal-Aktionen, skaliert aber nicht und ist fehleranfällig: Wer hat wann was geändert? Welche Version läuft gerade? Bei welchem Manifest hat sich der Tippfehler eingeschlichen?
Helm Charts
Helm ist der Paketmanager für Kubernetes. Ein Helm Chart ist ein Template-Paket, das alle Kubernetes-Ressourcen einer Anwendung bündelt und parametrisierbar macht. Statt zehn YAML-Dateien mit hartkodierten Werten hat man ein Chart mit einer values.yaml, in der man Umgebungsspezifisches konfiguriert.
# Chart aus einem Repository installieren
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install mein-postgres bitnami/postgresql -f meine-values.yaml
# Upgrade mit neuen Werten
helm upgrade mein-postgres bitnami/postgresql -f neue-values.yaml
# Rollback auf vorherige Version
helm rollback mein-postgres 1
Helm ist weit verbreitet und nahezu jede größere Software bietet offizielle Helm Charts an. Der Nachteil: Helm-Templates können bei komplexen Charts schwer lesbar werden, und die Template-Sprache (Go Templates) hat ihre Tücken.
Kustomize
Kustomize ist die Alternative zu Helm für Teams, die keine Template-Engine wollen. Statt Variablen zu ersetzen, arbeitet Kustomize mit Overlays: Man hat eine Basis-Konfiguration und legt umgebungsspezifische Patches darüber. Kustomize ist direkt in kubectl eingebaut (kubectl apply -k), braucht also keine zusätzliche Installation.
CI/CD-Pipelines: GitHub Actions, Jenkins & Co.
In der Praxis wird das Deployment automatisiert: Ein Push auf den Main-Branch löst eine Pipeline aus, die das Image baut, in die Registry pusht und im Cluster deployt.
- GitHub Actions: YAML-basierte Workflows direkt im Repository. Gut integriert mit GitHub Container Registry. Für viele Teams der einfachste Einstieg.
- GitLab CI/CD: Ähnliches Konzept, besonders stark in Kombination mit der integrierten GitLab Container Registry und GitLab Environments.
- Jenkins: Der Klassiker. Flexibel, aber wartungsintensiv. Jenkins-Jobs für Build, Push und Deploy sind weit verbreitet, fühlen sich aber zunehmend wie Legacy an.
- Tekton: Kubernetes-native CI/CD-Pipeline als CRDs. Wird von einigen als Jenkins-Nachfolger gehandelt.
GitOps: FluxCD und Argo CD
GitOps ist der Ansatz, der das Deployment-Problem grundlegend anders löst: Statt dass eine Pipeline aktiv in den Cluster pusht, läuft im Cluster ein Controller, der kontinuierlich ein Git-Repository überwacht und den Cluster-Zustand mit dem gewünschten Zustand im Repository abgleicht. Ändert sich etwas im Git, wird automatisch deployt. Ändert jemand etwas manuell im Cluster, wird es automatisch zurückgesetzt.
Die zwei großen GitOps-Tools sind Argo CD und Flux CD – beide CNCF Graduated Projects, beide produktionsreif und bewährt.
Argo CD ist die populärere Wahl, vor allem wegen seiner eingebauten Web-UI. Man sieht den Sync-Status aller Anwendungen, Ressourcen-Bäume, Diffs zwischen gewünschtem und tatsächlichem Zustand und kann Deployments direkt im Browser verfolgen. Argo CD verwaltet mehrere Cluster zentral von einer Instanz aus. Für Teams, die eine visuelle Übersicht schätzen und Entwickler ohne tiefe Kubernetes-Kenntnisse einbinden wollen, ist Argo CD meistens die bessere Wahl.
Flux CD folgt dem Kubernetes-nativen Ansatz: Alles wird als Custom Resource Definitions (CRDs) definiert, es gibt keine zentrale UI (Drittanbieter-Dashboards wie Weave GitOps existieren, sind aber weniger ausgereift). Flux ist modularer aufgebaut – Source Controller, Kustomize Controller, Helm Controller und Image Automation Controller arbeiten unabhängig. Flux eignet sich besonders für Plattform-Teams, die eine maximale Integration in die Kubernetes-API bevorzugen und mit der Kommandozeile arbeiten.
Empfehlung für den Einstieg: Argo CD, weil die Web-UI den Lernprozess beschleunigt und man sofort sieht, was passiert. Wer später mehr Kontrolle und Modularität braucht, kann auf Flux wechseln – oder beide für unterschiedliche Zwecke einsetzen.
Die Deployment-Kette im Überblick
Code → Git Push → CI-Pipeline (Build + Test + Image Push) → Container Registry
↓
GitOps Controller (Argo CD / Flux CD)
↓
Kubernetes Cluster (Apply Manifeste)
Trainings: Das Linuxhotel in Essen
Wer Kubernetes nicht nur aus Blogartikeln und YouTube-Videos lernen will, sondern unter fachkundiger Anleitung mit echten Clustern arbeiten möchte, dem sei das Linuxhotel in Essen-Horst empfohlen.
Das Linuxhotel bietet einen kombinierten Kurs „Docker und Kubernetes" über 5 Tage an (2 Tage Docker, 3 Tage Kubernetes). Der Kurs deckt die hier beschriebenen Themen praktisch ab: Container-Grundlagen mit Docker, dann Kubernetes mit k3d/k3s, kubectl, Helm, Kustomize, k9s, Kubernetes Dashboard, Ingress mit Traefik und NGINX, Cert-Manager für TLS-Zertifikate und den Betrieb typischer Workloads wie Postgres und Tomcat.
Was das Linuxhotel besonders macht: Man übernachtet vor Ort in einer Villa mit Park, isst gemeinsam und fachsimpelt abends am Kamin. Das klingt nach Klassenfahrt – und fühlt sich auch so an, nur mit deutlich besserem Lerneffekt. Die Atmosphäre fördert den Austausch zwischen den Teilnehmern, und die Trainer sind Praktiker mit Produktionserfahrung.
Für die 5-Tage-Kombination sollte man Vorwissen in Linux-Administration mitbringen (Shell, Paketverwaltung, Netzwerk-Grundlagen). Der Kurs kostet aktuell ab ca. 1.250 € netto für Docker (2 Tage) bzw. entsprechend mehr für die Kombination – inklusive Vollverpflegung und Übernachtungsoption.
Für Teams, die bereits Container-Erfahrung haben und tiefer einsteigen wollen, gibt es den Kurs „LFS458 Kubernetes Administration" (4 Tage, ca. 2.700 € netto) als Vorbereitung auf die CKA-Zertifizierung und den Kurs „Kubernetes Cluster betreiben" im Format „Kubernetes The Hard Way" nach Kelsey Hightower – für alle, die verstehen wollen, was unter der Haube passiert.
Termine gibt es regelmäßig über das ganze Jahr verteilt. Aktuelle Termine und Anmeldung unter linuxhotel.de.
Fazit
Kubernetes ist komplex – das lässt sich nicht wegdiskutieren. Aber die Komplexität hat einen Grund: Kubernetes löst ein echtes Problem, nämlich den zuverlässigen Betrieb verteilter Anwendungen in Containern. Die Einstiegshürde ist hoch, wird aber durch gute Tools (kubectl, k9s, Lens), leichtgewichtige lokale Distributionen (k3d, Kind, Minikube) und GitOps-Werkzeuge (Argo CD, Flux CD) erheblich gesenkt.
Der pragmatischste Einstieg: Docker lernen, dann einen lokalen Cluster mit k3d aufsetzen, die eigene Anwendung als Container deployen, und die Konzepte Stück für Stück verstehen. Oder einen 5-Tage-Kurs im Linuxhotel buchen und sich den Einstieg von Praktikern zeigen lassen – das spart Wochen an Selbststudium.
Letzte Aktualisierung: März 2026 · Feedback und Korrekturen willkommen!