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:
- Deployment Controller lit le Deployment
- Crée un ReplicaSet avec 3 réplicas
- ReplicaSet Controller vérifie qu'il y a 3 Pods
- Si un Pod plante, le ReplicaSet Controller crée un nouveau Pod
- Le Scheduler assigne le nouveau Pod à un node
- Le kubelet démarre le conteneur
Réconciliation (Reconciliation Loop)
Concept
La réconciliation est le processus continu de:
- Observer l'état actuel
- Comparer avec l'état désiré
- 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