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