ClusterIP
ClusterIP-Services sind die einfachste und gebräuchlichste Form. Sie erhalten vom Kubernetes-Control-Plane eine interne IP aus dem konfigurierten Service-CIDR zugewiesen und sind nur innerhalb des Clusters erreichbar. Standardmäßig wird jeder Service ohne explizite Typangabe als ClusterIP-Service erstellt.
Der ClusterIP-Service eignet sich für die interne Kommunikation von Microservices. Beispielsweise könnten Frontend-Pods einen Backend-Service über dessen ClusterIP ansprechen. Von außerhalb des Clusters ist diese IP jedoch nicht erreichbar, was ein gewisses Maß an Sicherheit bietet (Isolation der internen Services). Will man einen ClusterIP-Service von außen zugänglich machen, nutzt man in der Regel einen Ingress oder einen höheren Service-Typ (oder man ändert den Typ nachträglich).
YAML-Beispiel für einen ClusterIP-Service (Standardtyp):
apiVersion: v1
kind: Service
metadata:
name: my-internal-service
namespace: demo
spec:
selector:
app: demo-app
ports:
- name: http # Port name (useful if multiple ports)
protocol: TCP
port: 80 # Service port (cluster-internal)
targetPort: 8080 # Container port in Pods
# type: ClusterIP # Default type (not required to specify explicitly)
Erläuterung: Dieser Service routet Cluster-intern Port 80 auf Port 8080 der Pods mit Label app=demo-app
. Es wird keine type
-Angabe gemacht, daher wird ClusterIP
angenommen. Kubernetes weist automatisch eine Cluster-IP zu und trägt sie in .spec.clusterIP
ein. Dieser Service wäre nur innerhalb des Kubernetes-Netzwerks erreichbar (andere Pods oder Knoten können my-internal-service.demo.svc.cluster.local:80
ansprechen).