Ein Kubernetes Service ist die stabile Adresse für eine Gruppe von Pods. Pods sind kurzlebig: Sie starten, sterben und bekommen dabei immer neue IP-Adressen. Der Service bündelt sie hinter einer festen virtuellen IP und einem festen DNS-Namen, damit andere Dienste sich nicht um wechselnde Adressen kümmern müssen.
So funktioniert der Service
Über einen Label-Selektor wählt der Service seine Pods aus. Der EndpointSlice-Controller des kube-controller-manager hält die Liste der aktuellen Pod-IPs aktuell. Auf jedem Knoten programmiert kube-proxy NAT-Regeln, die den Verkehr zur virtuellen IP auf eine der Pod-IPs weiterleiten.
Die Service-Typen
- ClusterIP (Standard): nur innerhalb des Clusters erreichbar, DNS-Name
<service>.<namespace>.svc.cluster.local. - NodePort: öffnet zusätzlich einen festen Port (30000-32767) auf jedem Knoten.
- LoadBalancer: bindet bei Cloud-Anbietern einen externen Load Balancer an.
- ExternalName: ein reiner DNS-Alias auf einen externen Namen.
Für HTTP- und HTTPS-Verkehr mit Host- und Pfad-Regeln steht darüber das Ingress-Objekt bereit.
Verwandte Grundlagen: Kubernetes, Namespace, DNS, Calico.