Skip to content

Kubernetes-Orchestrierung

Vorwort

Docker loest das "Verpackungsproblem", Kubernetes loest das "Verwaltungsproblem". Wenn du dutzende oder hunderte Container bereitstellen, skalieren und bei Ausfaellen wiederherstellen musst, ist manuelle Verwaltung unpraktikabel. Kubernetes (K8s) ist das "Betriebssystem" fuer Container - es automatisiert Bereitstellung, Skalierung und Betrieb containerisierter Anwendungen.

Was wirst du in diesem Artikel lernen?

Nach diesem Kapitel wirst du Folgendes koennen:

  • Architektur-Verstaendnis: Die Komponenten der K8s-Control-Plane und Worker-Nodes beherrschen
  • Kern-Ressourcen: Pod, Deployment, Service und andere Kernkonzepte kennenlernen
  • Deklaratives Management: Die Philosophie "gewuenschten Zustand deklarieren, System konvergiert automatisch" verstehen
  • Betriebs-Kompetenz: Rolling Updates, Auto-Scaling, Health Checks und weitere Mechanismen verstehen
  • Praktischer Einstieg: Eine vollstaendige Anwendung mit kubectl und YAML bereitstellen koennen
KapitelInhaltKernkonzepte
Kapitel 1Warum K8s?Herausforderungen der Container-Orchestrierung
Kapitel 2K8s-ArchitekturControl Plane, Worker Nodes, etcd
Kapitel 3Kern-RessourcenPod, Deployment, Service, Ingress
Kapitel 4Deklaratives ManagementYAML, kubectl, Kontrollschleife
Kapitel 5BetriebspraxisRolling Updates, HPA, Health Checks

1. Warum Kubernetes?

Docker macht das Verpacken und Ausfuehren einzelner Container einfach. Aber wenn du vor folgenden Szenarien stehst, reicht manuelle Verwaltung nicht mehr aus:

HerausforderungBeschreibungK8s-Loesung
Multi-Instanz-DeploymentEin Service muss mit 10 Replikas laufenDeployment verwaltet automatisch die Replika-Anzahl
Ausfall-WiederherstellungEin abgestuerzter Container muss automatisch neu startenDer Controller erkennt Ausfaelle und erstellt den Pod neu
Service DiscoveryContainer-IPs aendern sich, wie finden sich die Services?Service bietet stabilen DNS und IP
Rolling UpdatesBei Versionsupdates darf der Service nicht ausfallenAlte Pods schrittweise ersetzen, Zero Downtime
Elastische SkalierungBei Traffic-Spitzen automatisch hochskalierenHPA passt Replika-Anzahl basierend auf CPU/Speicher automatisch an
Ressourcen-SchedulingContainer auf dem optimalen Server platzierenIntelligentes Scheduling durch den Scheduler

Kerngedanke von K8s: Deklarativ

Man sagt K8s nicht "starte 3 Container" (imperativ), sondern "ich moechte 3 laufende Replikas" (deklarativ). K8s ueberwacht kontinuierlich und stellt sicher, dass der tatsaechliche Zustand mit dem deklarierten Soll-Zustand uebereinstimmt. Faellt ein Pod aus, wird automatisch ein neuer erstellt.


2. Kubernetes-Architektur

Ein K8s-Cluster besteht aus der Control Plane (Steuerungsebene) und Worker Nodes (Arbeitsknoten).

Kubernetes Architecture
Click a component to inspect the details
Control Plane
API Server
etcd
Scheduler
Controller Manager
Worker Node x N
kubelet
kube-proxy
Container runtime
API Server
The front door of Kubernetes. All operations from kubectl, dashboards, and internal components go through the API Server. It handles authentication, authorization, admission control, and acts as the single entry point for the cluster.
Analogy:A company reception desk where every visitor and delivery is checked in

Der komplette Pfad einer Anfrage

Nutzer-Anfrage -> Ingress Controller -> Service -> kube-proxy -> Pod (Container)
                                              |
                                    Endpoint-Liste (vom Service verwaltet)

3. Kern-Ressourcen-Objekte

K8s beschreibt den gewuenschten Zustand des Clusters ueber verschiedene "Ressourcen-Objekte".

K8s Core Resources
Click a resource type to inspect the explanation and YAML example
Pod
Smallest scheduling unit
A Pod is the smallest deployable unit in K8s. It contains one or more tightly related containers. Containers inside the same Pod share networking and storage, so they can communicate through localhost.
YAML example
apiVersion: v1
kind: Pod
metadata:
  name: my-app
spec:
  containers:
    - name: app
      image: my-app:1.0
      ports:
        - containerPort: 3000
Tip:Production workloads rarely create Pods directly; they are usually managed by Deployments.

Ressourcen-Objekt-Kategorien

KategorieRessourcenZweck
WorkloadsPod, Deployment, StatefulSet, DaemonSet, JobAnwendungen ausfuehren
NetzwerkService, Ingress, NetworkPolicyService Discovery und Traffic-Management
KonfigurationConfigMap, SecretKonfiguration und vertrauliche Daten verwalten
SpeicherPersistentVolume, PersistentVolumeClaimPersistente Datenspeicherung
SchedulingNode, Namespace, ResourceQuotaRessourcen-Isolierung und Beschraenkung

4. Deklaratives Management und kubectl

Die Kontrollschleife (Reconciliation Loop)

Der Kernmechanismus von K8s ist die Kontrollschleife:

Beobachten (Observe) -> Vergleichen (Diff) -> Handeln (Act) -> Beobachten...
      |                    |                  |
   Tatsaechlichen      Mit Soll-Zustand   Korrekturoperation
   Zustand lesen       vergleichen        ausfuehren

Du deklarierst replicas: 3, der Controller stellt fest, dass nur 2 Pods laufen, und erstellt einen neuen. Diese Schleife wird alle paar Sekunden ausgefuehrt und stellt sicher, dass das System immer zum Soll-Zustand konvergiert.

haeufige kubectl-Befehle

BefehlFunktionBeispiel
kubectl apply -fYAML-Konfiguration anwendenkubectl apply -f deployment.yaml
kubectl getRessourcenliste anzeigenkubectl get pods -o wide
kubectl describeRessourcendetails anzeigenkubectl describe pod my-app-xxx
kubectl logsPod-Logs anzeigenkubectl logs -f my-app-xxx
kubectl execPod-Terminal oeffnenkubectl exec -it my-app-xxx -- sh
kubectl deleteRessource loeschenkubectl delete -f deployment.yaml
kubectl scaleManuell skalierenkubectl scale deploy my-app --replicas=5

apply vs create

kubectl create ist imperativ - "erstelle diese Ressource", fehlerhaft wenn bereits vorhanden. kubectl apply ist deklarativ - "stelle sicher, dass die Ressource diesen Zustand hat", erstellt wenn nicht vorhanden, aktualisiert wenn bereits existent. In Produktionsumgebungen sollte immer apply verwendet werden.


5. Betriebspraxis

5.1 Rolling Updates und Rollbacks

Deployment verwendet standardmaessig die Rolling-Update-Strategie: Neue Version-Pods werden schrittweise erstellt, waehrend alte Version-Pods schrittweise beendet werden.

yaml
spec:
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1        # Maximal 1 zusaetzlichen Pod erstellen
      maxUnavailable: 0   # Keine Pods duerfen nicht verfuegbar sein
OperationBefehl
Image aktualisierenkubectl set image deploy/my-app app=my-app:2.0
Update-Status anzeigenkubectl rollout status deploy/my-app
Versionshistorie anzeigenkubectl rollout history deploy/my-app
Zur vorherigen Version zurueckkehrenkubectl rollout undo deploy/my-app

5.2 Auto-Scaling (HPA)

HPA (Horizontal Pod Autoscaler) passt die Pod-Replika-Anzahl automatisch basierend auf CPU, Speicher oder benutzerdefinierten Metriken an.

yaml
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: my-app-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: my-app
  minReplicas: 2
  maxReplicas: 10
  metrics:
    - type: Resource
      resource:
        name: cpu
        target:
          type: Utilization
          averageUtilization: 70

5.3 Health Checks (Probes)

K8s ueberwacht die Gesundheit von Pods ueber drei Probe-Typen:

ProbeFunktionKonsequenz bei Fehlschlag
livenessProbePrueft, ob der Container noch lebtContainer wird neu gestartet
readinessProbePrueft, ob der Container bereit istVom Service entfernt, erhaelt keinen Traffic
startupProbePrueft, ob der Container erfolgreich gestartet istWaehrend der Startphase werden andere Probes nicht ausgefuehrt

Warum Probes wichtig sind

Ohne konfigurierte Health Checks kann K8s nur pruefen, ob der Prozess noch laeuft. Oft ist der Prozess aber noch aktiv, waehrend der Service nicht mehr reagiert (z. B. Deadlock, OOM-Schwelle). Mit livenessProbe kann K8s diese "scheintoten" Container automatisch neu starten.


Zusammenfassung

Kubernetes ist der De-facto-Standard fuer Container-Orchestrierung. Seine Kernkonzepte zu verstehen ist die Grundlage fuer Cloud-Native-Entwicklung.

Die wichtigsten Punkte dieses Kapitels:

  1. Deklaratives Management: K8s sagen "was ich will", nicht "wie" - die Kontrollschleife konvergiert automatisch
  2. Schichtenarchitektur: Control Plane fuer Entscheidungen, Worker Nodes fuer Ausfuehrung, etcd fuer State-Speicherung
  3. Kern-Ressourcen: Pod (kleinste Einheit), Deployment (Replika-Verwaltung), Service (Service Discovery), Ingress (externer Zugang)
  4. Betriebs-Automatisierung: Rolling Updates fuer Zero Downtime, HPA fuer elastische Skalierung, Probes fuer automatische Ausfall-Wiederherstellung
  5. Konfigurationstrennung: ConfigMap und Secret entkoppeln Konfiguration vom Image

Weiterfuehrende Literatur