Polarys
Kubernetes : les bases/Les objets de base

Les objets de base

Services et exposition réseau

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

TypeUsage
ClusterIPAccès interne au cluster uniquement (par défaut)
NodePortOuvre un port sur chaque nœud, accessible depuis l'extérieur
LoadBalancerProvisionne 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 NodePort en production publique : conçu pour du test, pas pour exposer un service au monde entier durablement.
  • Oublier que le selector du Service doit matcher les labels des 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.

Quiz de validation

Quiz - 2 questions

1. Pourquoi ne peut-on pas se fier directement à l'IP d'un Pod pour le contacter durablement ?

2. À quoi sert un Namespace ?

Suis ta progression

Crée un compte gratuit pour suivre ta progression et accéder à toutes les leçons.