Services et Networking 22 min de lecture

Services : ClusterIP, NodePort, LoadBalancer

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.