Aller au contenu principal

Chapitre 2.4 - Controller Manager

Objectifs d'Apprentissage

À la fin de ce chapitre, vous serez capable de:

  • Comprendre le rôle du Controller Manager
  • Expliquer le pattern de contrôle en boucle
  • Identifier les différents contrôleurs
  • Comprendre comment Kubernetes maintient l'état désiré

Qu'est-ce que le Controller Manager?

Le Controller Manager (kube-controller-manager) exécute les contrôleurs qui surveillent l'état du cluster et prennent des actions pour faire correspondre l'état réel à l'état désiré.


Pattern de Contrôle en Boucle

Les contrôleurs suivent un pattern de contrôle en boucle:

Caractéristiques:

  • Surveillance continue (watch)
  • Comparaison état réel vs désiré
  • Actions correctives automatiques
  • Boucle de réconciliation

Contrôleurs Principaux

1. Deployment Controller

Gère les Deployments et maintient le nombre de réplicas:

Actions:

  • Crée des ReplicaSets
  • Gère les Rolling Updates
  • Effectue les Rollbacks

2. ReplicaSet Controller

Maintient le nombre de Pods désiré:

3. Node Controller

Surveille l'état des nodes:

  • Détecte les nodes non disponibles
  • Marque les nodes comme NotReady
  • Évite de planifier des Pods sur des nodes défaillants

4. Service Controller

Gère les Services et leurs endpoints:

  • Crée/maintient les Endpoints
  • Synchronise avec les LoadBalancers cloud

5. Job Controller

Gère les Jobs et CronJobs:

  • Surveille l'exécution des Jobs
  • Gère les CronJobs (tâches planifiées)

Exemple Concret: Deployment

Scénario Initial

apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
template:
spec:
containers:
- name: app
image: nginx:1.20

Ce qui se passe:

  1. Deployment Controller lit le Deployment
  2. Crée un ReplicaSet avec 3 réplicas
  3. ReplicaSet Controller vérifie qu'il y a 3 Pods
  4. Si un Pod plante, le ReplicaSet Controller crée un nouveau Pod
  5. Le Scheduler assigne le nouveau Pod à un node
  6. Le kubelet démarre le conteneur

Réconciliation (Reconciliation Loop)

Concept

La réconciliation est le processus continu de:

  1. Observer l'état actuel
  2. Comparer avec l'état désiré
  3. Prendre des actions pour réduire l'écart

Exemple: ReplicaSet


Performance et Optimisations

Rate Limiting

Les contrôleurs limitent le nombre de requêtes pour éviter de surcharger l'API Server.

Backoff

En cas d'erreur, les contrôleurs attendent avant de réessayer (backoff exponentiel).

Concurrent Workers

Plusieurs workers traitent les ressources en parallèle.


Commandes Utiles

# Voir les logs du Controller Manager
kubectl logs -n kube-system kube-controller-manager-<node>

# Voir les événements liés aux contrôleurs
kubectl get events --sort-by='.lastTimestamp'

# Vérifier l'état d'un Deployment
kubectl describe deployment <name>

Résumé

Dans ce chapitre, vous avez appris:

Controller Manager: Exécute les contrôleurs qui maintiennent l'état désiré
Pattern de contrôle: Surveillance continue, comparaison, action corrective
Contrôleurs principaux: Deployment, ReplicaSet, Node, Service, Job
Réconciliation: Processus continu de maintien de l'état désiré
Auto-guérison: Les contrôleurs corrigent automatiquement les écarts


Prochaines Étapes

Maintenant que vous comprenez le Controller Manager:

Chapitre 2.5: Scheduler - Planification des Pods
Chapitre 2.6: kubelet - Agent des Worker Nodes


Chapitre créé le: Décembre 2024