Kubernetes wirkt auf den ersten Blick simpel: Pods reden miteinander, Services verteilen Last und ein Ingress
macht Anwendungen von außen erreichbar. In der Praxis steckt dahinter aber ein klares Modell, das verstanden
werden muss, bevor man CNIs, Policies oder Load Balancer sinnvoll auswählt.
Jeder Pod erhält eine eigene IP-Adresse.
Pods sollen ohne NAT direkt miteinander kommunizieren können.
Nodes müssen den Pod-Adressraum der anderen Nodes erreichen können.
Services abstrahieren wechselnde Pod-Endpunkte über virtuelle Adressen oder DNS-Namen.
Genau an diesen Punkten entscheidet sich, ob ein Cluster stabil wirkt oder sich wie eine Sammlung zufälliger
Overlay-Tunnel anfühlt. Wer das Netzwerkmodell ignoriert, wird spätestens bei Debugging, Policies oder
Multi-Node-Problemen unnötig Zeit verlieren.
2. CNI-Auswahl: Calico, Flannel, Cilium und Co.
Die Container Network Interface (CNI) ist nicht bloß "das Paket für Netzwerk". Sie bestimmt, wie Pod-Adressen
verteilt werden, ob ein Overlay zum Einsatz kommt, wie Policies funktionieren und welche Diagnosewerkzeuge
sinnvoll sind.
Flannel: einfach, robust und gut für kleine Labs. Fokus auf Konnektivität, nicht auf feine Policies.
Calico: sehr verbreitet, unterstützt Routing ohne Overlay oder mit Overlay und bietet starke Network-Policy-Funktionen.
Cilium: eBPF-basiert, leistungsfähig und modern, aber konzeptionell anspruchsvoller.
Für ein kleines Homelab ist Flannel ein guter Start, wenn man erst einmal Multi-Node-Konnektivität
verstehen will. Sobald Policy, tiefere Segmentierung oder spätere Erweiterungen wichtig werden, ist Calico
oft der pragmatischste Mittelweg.
Unabhängig vom Produkt müssen drei CIDR-Räume sauber geplant werden:
Node-Netz: physisches oder virtuelles Netz der Cluster-Nodes.
Pod-CIDR: Adressraum für Workloads, zum Beispiel 10.244.0.0/16.
Service-CIDR: virtuelle Service-Adressen, zum Beispiel 10.96.0.0/12.
3. Services, kube-proxy und externer Zugriff
Ein Pod ist flüchtig. Services schaffen Stabilität, indem sie Anfragen an eine Gruppe wechselnder Pods
verteilen. Ohne sauberes Verständnis der Service-Typen wirkt das Verhalten oft widersprüchlich.
ClusterIP: nur intern im Cluster erreichbar; Standard für die meisten Backend-Dienste.
NodePort: öffnet einen Port auf jedem Node; hilfreich für Labs, aber selten die eleganteste Dauerlösung.
LoadBalancer: integriert Kubernetes mit einem externen Load Balancer oder mit Projekten wie MetalLB.
Headless Service: kein virtuelles VIP, sondern direkte DNS-Auflösung auf Pod-Endpunkte.
In kleineren Bare-Metal- oder Homelab-Setups ist MetalLB oft der einfachste Weg, um echte
LoadBalancer-IPs im LAN zu erhalten. Ein typischer Layer-2-Pool sieht so aus:
Danach kann ein Service vom Typ LoadBalancer eine Adresse aus diesem Pool erhalten. Das ist
für interne Anwendungen meist sauberer als eine Sammlung willkürlicher NodePorts.
4. Ingress, LoadBalancer und Gateway-Muster
Externer Zugriff auf HTTP- und HTTPS-Anwendungen sollte nicht pro App neu erfunden werden. Besser ist ein
gemeinsamer Einstiegspunkt mit TLS, Logging und klaren Hostnamen. Dafür wird meist ein Ingress Controller
wie NGINX Ingress oder Traefik eingesetzt.
Für TLS und Zertifikate wird häufig cert-manager ergänzt. Wer nur intern arbeitet, kann interne
ACME- oder PKI-Workflows nutzen. Für neue Designs lohnt auch ein Blick auf die Gateway API,
die klarere Rollen zwischen Infrastruktur und Anwendung schafft. Im Alltag dominiert aber Ingress weiterhin
viele Cluster, gerade in kleinen Umgebungen.
5. Network Policies und Segmentierung
Ohne Policies können Pods in vielen Clustern standardmäßig frei miteinander sprechen. Das ist bequem für den
Start, aber schlecht für Sicherheit, Fehlersuche und Mandantentrennung. Ein realistischer Standard lautet:
Default Deny pro Namespace, dann gezielte Freigaben.
Danach müssen DNS, Ingress, Metriken oder Datenbankpfade explizit erlaubt werden. Das klingt aufwendiger,
verhindert aber viele Überraschungen. Entscheidend ist, dass die verwendete CNI Policies wirklich durchsetzt.
Flannel allein reicht dafür beispielsweise nicht aus.
6. Betrieb im Homelab und in kleinen Clustern
Kleine Cluster haben andere Prioritäten als große Plattformen: einfache Diagnose, wenig bewegliche Teile und
klare Verantwortlichkeiten. Ein solides Setup für Homelab oder KMU kann so aussehen:
3 Control-Plane- oder gemischte Nodes, falls Hochverfügbarkeit relevant ist,
Calico oder Flannel als verständliche CNI,
MetalLB für Bare-Metal-LoadBalancer,
ein Ingress Controller für alle HTTP/S-Anwendungen,
Prometheus und Loki oder ein anderes Logging/Monitoring-Setup von Anfang an.
Besonders wichtig ist die Abgrenzung zwischen Cluster-Netz und Heimnetz. Wer Nodes, Hypervisor und
Applikations-VIPs unkontrolliert in dasselbe Segment wirft, erschwert spätere Sicherheitsregeln und verliert
schnell den Überblick über echte Verkehrsflüsse.
7. Troubleshooting
Kubernetes-Netzwerkprobleme lassen sich fast immer auf eine von vier Ebenen eingrenzen: Pod zu Pod, Pod zu
Service, Service zu Backend oder externer Zugriff über Ingress/LoadBalancer. Wer diese Ebenen getrennt testet,
findet Fehler deutlich schneller.
Pod-IP und Node-Zuordnung prüfen.
Service, Endpoints und EndpointSlices kontrollieren.
DNS im Cluster testen.
CNI- oder Policy-spezifische Logs ansehen.
Erst danach Ingress, TLS oder externe Firewalls prüfen.
kubectl get pods -A -o wide
kubectl get svc -A
kubectl get endpointslices -A
kubectl describe networkpolicy -A
kubectl exec -it deploy/app -- sh
kubectl logs -n kube-system ds/calico-node
sudo tcpdump -ni any host 10.244.1.7
Typische Fehlerbilder:
Pod läuft, Service antwortet nicht: Selector falsch oder keine Endpoints vorhanden.
DNS im Pod kaputt: CoreDNS, egress-Policy oder CNI-Fehler.
Ingress existiert, aber keine externe Antwort: Ingress Controller, TLS-Secret oder LoadBalancer-IP prüfen.
Nur manche Namespaces betroffen: meist Policy oder Namespace-spezifische DNS/Service-Fehler.
8. Zusammenfassung
Kubernetes-Netzwerk wird beherrschbar, wenn man es nicht als Black Box behandelt: Pod-CIDR, Service-CIDR,
CNI, Service-Typen und Policies müssen als zusammenhängendes System verstanden werden.
Für kleine Cluster ist weniger oft mehr. Eine verständliche CNI, ein sauberer Ingress-Pfad, echte
Segmentierung per Policy und reproduzierbares Troubleshooting bringen mehr Stabilität als ein zu früh
maximal komplexes Setup.