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