Pourquoi des Services ?
Les Pods ont des IP ephemeres qui changent a chaque redemarrage. Les Services fournissent une IP stable et un DNS pour acceder aux Pods.
ClusterIP (par defaut)
Expose le service uniquement a l'interieur du cluster.
kubectl expose deployment nginx --port=80 --type=ClusterIP
kubectl get services
Service YAML ClusterIP
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
type: ClusterIP
selector:
app: nginx
ports:
- port: 80
targetPort: 80
NodePort
Expose le service sur un port de chaque nœud (30000-32767).
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get svc nginx -o wide
LoadBalancer
Cree un load balancer externe (cloud providers uniquement).
apiVersion: v1
kind: Service
metadata:
name: nginx-lb
spec:
type: LoadBalancer
selector:
app: nginx
ports:
- port: 80
targetPort: 80
DNS interne
Chaque service est accessible via DNS :
<service-name>.<namespace>.svc.cluster.local
Choix du type : ClusterIP pour communication interne, NodePort pour dev/test, LoadBalancer pour production cloud.