Kubernetes-Objekte: Pod, Deployment, Service und ConfigMap
Kurz: In Kubernetes beschreibt man den Soll-Zustand in Objekten: Pods führen Container aus, Deployments halten sie am Laufen, Services machen sie erreichbar und ConfigMaps/Secrets liefern Konfiguration.
Genauer: Kubernetes (K8s) ist ein System, das Container auf vielen Rechnern verwaltet. Man beschreibt in YAML-Dateien, was laufen soll; Kubernetes sorgt dafür, dass der tatsächliche Zustand dem Soll-Zustand entspricht (Neustart bei Absturz, Verteilung, Skalierung).
Im Detail
Die wichtigsten Objekte
- Pod: kleinste Einheit; ein oder mehrere Container, die sich Netzwerk und Speicher teilen. Pods sind kurzlebig.
- Deployment: verwaltet Pods einer Anwendung: Anzahl der Replikate, Rolling Updates (schrittweise neue Version), Rollback.
- Service: stabile Adresse und Lastverteilung für eine Gruppe von Pods (ClusterIP intern, NodePort/LoadBalancer extern).
- Ingress: HTTP-Weiterleitung von außen (Domains, Pfade, TLS).
- ConfigMap: Konfigurationswerte; Secret: sensible Werte (Base64-kodiert, besser mit externer Verschlüsselung).
- Namespace: logische Trennung (dev, prod).
- PersistentVolume/Claim: dauerhafter Speicher. StatefulSet für zustandsbehaftete Anwendungen (Datenbanken), Job/CronJob für Aufgaben.
Ein 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: meine-app:1.2.0
ports: [{ containerPort: 3000 }]
readinessProbe:
httpGet: { path: /health, port: 3000 }
---
apiVersion: v1
kind: Service
metadata:
name: web
spec:
selector: { app: web }
ports: [{ port: 80, targetPort: 3000 }]kubectl apply -f datei.yaml, kubectl get pods, kubectl logs pod, kubectl describe pod, kubectl rollout undo deployment/web.
Wichtige Konzepte
Labels und Selektoren verbinden Objekte. Probes (Liveness/Readiness) prüfen die Gesundheit. Ressourcen-Limits (CPU, Speicher) verhindern, dass eine App alles verbraucht. Autoscaling (HPA) passt Replikate an die Last an. Deklarativ statt imperativ: Die YAML-Datei ist die Quelle der Wahrheit, am besten in Git (GitOps).
Einstieg und Einordnung
Zum Lernen: minikube, kind, k3s oder Docker Desktop lokal. Produktiv nutzt man verwaltete Dienste (GKE, EKS, AKS). K8s ist mächtig, aber komplex; für kleine Projekte genügen oft Docker Compose oder eine Plattform (Vercel, Fly.io). Lerne Container und Netzwerke zuerst.
Siehe auch: Kubernetes-Grundlagen, Docker Compose