EMZETT.
Login

Kubernetes-Grundlagen

Kurz: Kubernetes (K8s) verwaltet viele Container auf vielen Rechnern: Es startet sie, startet abgestürzte neu, verteilt Last und rollt neue Versionen schrittweise aus. Man beschreibt den Wunschzustand, Kubernetes stellt ihn her.

Begriffe

  • Cluster: mehrere Rechner (Nodes), gesteuert von einer Kontrollebene.
  • Pod: kleinste Einheit, ein oder mehrere Container, die sich Netzwerk und Speicher teilen.
  • Deployment: „Ich will 3 Kopien dieser Anwendung in Version 1.4.“ Es ersetzt Pods bei Updates ohne Ausfall.
  • Service: feste Adresse und Lastverteilung vor wechselnden Pods.
  • Ingress: Zugang von außen (HTTP/HTTPS) zu Services, siehe Webserver im Vergleich: nginx, Apache und Caddy.
  • ConfigMap und Secret: Einstellungen und Geheimnisse getrennt vom Container-Abbild.

Beispiel

apiVersion: apps/v1
kind: Deployment
metadata: { name: web }
spec:
  replicas: 3
  selector: { matchLabels: { app: web } }
  template:
    metadata: { labels: { app: web } }
    spec:
      containers:
        - name: web
          image: nginx:1.27
          ports: [{ containerPort: 80 }]

kubectl apply -f web.yaml legt es an, kubectl get pods zeigt den Stand.

Unter der Haube

Container nutzen Kernel-Funktionen aus Container unter Linux: Namespaces und cgroups. Kubernetes bringt keine eigenen Container mit, sondern steuert eine Laufzeit (containerd, CRI-O).

Lohnt sich das?

Für ein oder zwei Anwendungen ist es meist zu viel. Es lohnt sich bei vielen Diensten, hoher Verfügbarkeit und Teams. Zum Üben: minikube, kind oder k3s. Einsteigerwissen zu Containern: Podman und Docker im Vergleich.

Siehe auch: Ansible für Einsteiger