Services et exposition réseau
Le problème : des Pods éphémères
Chaque Pod a une adresse IP propre, mais cette IP change à chaque recréation du Pod. Impossible de s'y fier pour contacter une application de façon stable.
Le Service : une IP stable
Un Service fournit une adresse IP et un nom DNS stables, qui redirigent le trafic vers les Pods actuellement en vie, identifiés par leurs labels.
apiVersion: v1
kind: Service
metadata:
name: mon-app-service
spec:
selector:
app: mon-app
ports:
- port: 80
targetPort: 80
type: ClusterIP
Les types de Service
| Type | Usage |
|---|---|
| ClusterIP | Accès interne au cluster uniquement (par défaut) |
| NodePort | Ouvre un port sur chaque nœud, accessible depuis l'extérieur |
| LoadBalancer | Provisionne un load balancer cloud externe (AWS, GCP, Azure) |
Namespaces : isoler les environnements
Un Namespace cloisonne des ressources au sein d'un même cluster : par exemple dev, staging, production. Deux Pods avec le même nom peuvent coexister dans des namespaces différents.
flowchart TD
Client -->|Requête| Service[Service ClusterIP]
Service -->|Load balancing| Pod1[Pod 1]
Service -->|Load balancing| Pod2[Pod 2]
Service -->|Load balancing| Pod3[Pod 3]
Cas concret
Une équipe de dev teste sa nouvelle version dans le namespace staging, avec exactement les mêmes noms de ressources que la production. Aucun conflit : les deux namespaces sont totalement isolés au niveau des noms et des règles réseau par défaut.
Erreurs fréquentes
- Utiliser
NodePorten production publique : conçu pour du test, pas pour exposer un service au monde entier durablement. - Oublier que le
selectordu Service doit matcher leslabelsdes Pods : sinon le Service ne route vers rien. - Tout mettre dans le namespace
default: perte d'isolation, difficile à nettoyer ensuite.
À retenir
- Un Service donne une IP/nom DNS stable vers un ensemble de Pods.
- ClusterIP = interne, NodePort = test externe, LoadBalancer = production cloud.
- Les Namespaces isolent les ressources par environnement.
Mini-exercice
Une application doit être accessible uniquement par d'autres services à l'intérieur du cluster, jamais depuis Internet. Quel type de Service choisir ?
Réponse : ClusterIP, le type par défaut, qui ne route que le trafic interne au cluster.