Service
Ein Service in Kubernetes ist eine Abstraktion, die einer Anwendung im Cluster eine feste Adresse (Name + Port) gibt – unabhängig davon, wie oft sich die dahinterliegenden Pods ändern oder neu starten.
Das ist nötig, weil Pods in Kubernetes flüchtig sind: Sie können jederzeit neu erstellt werden und bekommen dabei oft eine neue IP-Adresse. Ohne Service müsstest du ständig die aktuelle IP jedes Pods kennen – was praktisch unmöglich ist.
Ein Service löst dieses Problem, indem er:
- Einen festen DNS-Namen im Cluster bereitstellt (z. B.
shop-service.default.svc.cluster.local
). - Lastverteilung (Load Balancing) zwischen mehreren Pods übernimmt, die dieselbe Anwendung ausführen.
- Über Labels automatisch die passenden Pods findet, die er bedienen soll (Label-Selector).
Es gibt verschiedene Arten von Services:
- ClusterIP (Standard) – erreichbar nur innerhalb des Clusters.
- NodePort – öffnet einen Port auf jedem Cluster-Node für den Zugriff von außen.
- LoadBalancer – bindet einen Cloud-Load-Balancer ein (z. B. AWS ELB, GCP LB).
- ExternalName – leitet Anfragen an einen externen DNS-Namen weiter.
Kurz gesagt: Ein Service ist wie ein dauerhaftes Namensschild mit Weiterleitung zu den richtigen Pods – egal, wie oft diese ihre Adresse ändern.