Aller au contenu
Conteneurs & Orchestration medium

Control Plane Kubernetes : le cerveau de votre cluster

15 min de lecture

logo Kubernetes

Vous avez compris l’architecture globale de Kubernetes : un Control Plane qui décide, et des Worker Nodes qui exécutent. Mais comment le Control Plane fonctionne-t-il en interne ? Quels composants le constituent, et surtout, comment communiquent-ils entre eux ?

Ce guide vous explique en détail le fonctionnement du Control Plane — le cerveau de votre cluster. Vous comprendrez pourquoi vos applications restent disponibles même quand un Pod crashe, et comment Kubernetes “sait” où déployer vos conteneurs.

  • Identifier les 4 composants essentiels du Control Plane et leur rôle précis
  • Comprendre la règle d’or : seul l’API Server accède à etcd
  • Expliquer la boucle de contrôle (watch → compare → act) du Controller Manager
  • Savoir comment le Scheduler et les Kubelets communiquent avec l’API Server

Prérequis : avoir lu Architecture Kubernetes. Si vous ne savez pas ce qu’est un Pod ou un Node, commencez par là !

Le Control Plane est la partie “intelligente” de Kubernetes. Il prend toutes les décisions du cluster mais ne fait jamais tourner vos conteneurs applicatifs. Son seul travail : orchestrer.

Composants du Control Plane Kubernetes : API Server, etcd, Scheduler, Controller Manager et leurs interactions

Le Control Plane repose sur 4 composants essentiels qui travaillent ensemble, plus un 5ème optionnel pour les clusters cloud :

ComposantRôle en une phraseCe qu’il NE fait PAS
kube-apiserverPoint d’entrée unique, seul à accéder à etcdNe lance pas de conteneurs
etcdBase de données clé-valeur, source de véritéNe prend aucune décision
kube-schedulerAssigne les Pods aux NodesNe lance PAS les conteneurs
kube-controller-managerBoucle de contrôle, réconcilie état souhaité/actuelN’accède pas directement à etcd
cloud-controller-manager(optionnel) Intègre les services cloudN’existe que sur clusters cloud

Le kube-apiserver est le cœur du Control Plane. C’est lui qui reçoit toutes les requêtes — que ce soit de kubectl, d’une interface web, ou des autres composants internes.

L’API Server remplit trois fonctions essentielles :

  1. Valide les requêtes : vérifie le format, l’authentification, les autorisations
  2. Persiste les données : stocke l’état dans etcd (et seulement lui le fait !)
  3. Expose l’état du cluster : permet de lire l’état via l’API REST
Fenêtre de terminal
# Toute interaction passe par l'API Server
kubectl get pods # Lecture via API Server
kubectl apply -f deployment.yaml # Écriture via API Server
kubectl delete pod mon-pod # Suppression via API Server

C’est la règle d’or de l’architecture Kubernetes :

Fenêtre de terminal
# Voir le pod de l'API Server
kubectl get pod -n kube-system -l component=kube-apiserver
# Vérifier la santé de l'API
kubectl get --raw='/healthz'
# Résultat attendu : ok

etcd est une base de données clé-valeur distribuée qui stocke tout l’état du cluster. C’est la “source de vérité” de Kubernetes.

Type de donnéesExemples
Configuration du clusterNodes, namespaces, RBAC
État des ressourcesPods, Deployments, Services, ConfigMaps
Données sensiblesSecrets (chiffrés)
MétadonnéesLabels, annotations

Si etcd est perdu sans backup, le cluster devient irrécupérable. Vous perdez :

  • La liste de tous vos Deployments
  • La configuration de tous vos Services
  • Tous vos Secrets et ConfigMaps
  • L’historique des ReplicaSets
Fenêtre de terminal
# Voir le pod etcd
kubectl get pod -n kube-system -l component=etcd
# Lister les clés stockées (attention, très verbeux !)
kubectl exec -n kube-system etcd-<node> -- etcdctl \
--endpoints=https://127.0.0.1:2379 \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key \
get / --prefix --keys-only | head -20

Le kube-scheduler décide déployer chaque Pod. Il analyse les besoins du Pod et les ressources disponibles sur chaque Node.

Le Scheduler suit un processus en deux étapes :

  1. Filtrage : éliminer les Nodes impossibles

    Le Scheduler exclut les Nodes qui ne peuvent pas accueillir le Pod :

    • Pas assez de CPU ou mémoire
    • Taints incompatibles
    • Contraintes d’affinité non respectées
  2. Scoring : classer les Nodes restants

    Parmi les Nodes possibles, le Scheduler attribue un score selon :

    • Répartition de charge (spread)
    • Affinités préférées
    • Ressources disponibles

Le Scheduler n’exécute pas les conteneurs. Il écrit simplement dans etcd (via l’API Server) : “ce Pod est assigné à ce Node”. C’est tout.

# Le Scheduler ne fait que ça : assigner un nodeName
spec:
nodeName: worker-node-1 # ← Écrit par le Scheduler

Ensuite, le Kubelet du Node concerné détecte cette assignation et lance le conteneur.

Le Scheduler communique exclusivement via l’API Server :

  1. Il “watch” les Pods sans nodeName (Pods non assignés)
  2. Il calcule le meilleur Node
  3. Il écrit le binding (Pod → Node) dans l’API Server
  4. L’API Server persiste dans etcd

Jamais de communication directe avec les Kubelets ou etcd.

Le kube-controller-manager est le composant qui fait la magie de Kubernetes : il réconcilie en permanence l’état souhaité avec l’état actuel.

La boucle de contrôle : watch → compare → act

Section intitulée « La boucle de contrôle : watch → compare → act »

Boucle de contrôle du Control Plane : Watch, Compare, Act en continu

Le Controller Manager exécute une boucle infinie pour chaque type de ressource :

ÉtapeActionExemple
WATCHObserver l’état via l’API Server”Je vois 2 Pods nginx running”
COMPAREComparer avec l’état souhaité”L’utilisateur veut 3 répliques”
ACTCorriger l’écart”Je crée 1 Pod supplémentaire”

Cette boucle tourne en continu, sans intervention humaine. C’est ce qui permet à Kubernetes de “se réparer tout seul”.

Le Controller Manager regroupe plusieurs contrôleurs spécialisés dans un seul processus :

ContrôleurResponsabilité
Deployment ControllerGère les rolling updates, rollbacks
ReplicaSet ControllerMaintient le nombre de répliques
Node ControllerDétecte les Nodes en panne
Job ControllerGère les Jobs et leur complétion
Service Account ControllerCrée les comptes de service par défaut
Endpoints ControllerMaintient les endpoints des Services

Comme les autres composants, le Controller Manager passe par l’API Server pour toute lecture ou écriture. Il ne communique jamais directement avec etcd.

Controller Manager → API Server → etcd
(jamais direct)

Le cloud-controller-manager est un composant optionnel qui n’existe que sur les clusters déployés chez un fournisseur cloud (AWS, GCP, Azure, etc.).

Environnementcloud-controller-manager ?
EKS, GKE, AKS✅ Oui (géré automatiquement)
kubeadm sur VMs cloud✅ Oui (à installer)
kubeadm bare-metal❌ Non
Minikube, kind❌ Non

Le cloud-controller-manager contient des contrôleurs spécifiques au cloud :

ContrôleurRôleExemple concret
Node ControllerVérifie si les VMs existentSi une VM AWS est supprimée, met à jour le cluster
Route ControllerConfigure les routes réseauCrée les règles de routage entre sous-réseaux
Service ControllerGère les Load BalancersCrée un ELB quand vous déclarez type: LoadBalancer

Un point essentiel de l’architecture Kubernetes : les Kubelets fonctionnent en mode “pull”.

API Server --push--> Kubelet
"Hé Kubelet, lance ce Pod !"

Problème : si l’API Server est surchargé ou injoignable, les ordres ne passent pas.

ComposantCommunique avecVia
kubectlAPI ServerRequêtes HTTPS
SchedulerAPI ServerWatch + Update
Controller ManagerAPI ServerWatch + Update
KubeletAPI ServerWatch + Report
API ServeretcdLecture/Écriture directe

Tous passent par l’API Server, sauf l’API Server lui-même qui accède à etcd.

Voici ce qui se passe quand vous créez un Deployment :

  1. Vous envoyez la requête

    Fenêtre de terminal
    kubectl apply -f deployment.yaml

    kubectl envoie la requête HTTPS à l’API Server.

  2. L’API Server valide et persiste

    • Authentification : qui êtes-vous ?
    • Autorisation : avez-vous le droit ?
    • Admission : la requête est-elle valide ?
    • Stockage dans etcd
  3. Le Deployment Controller réagit

    Il détecte le nouveau Deployment et crée un ReplicaSet.

  4. Le ReplicaSet Controller crée des Pods

    Il voit que le ReplicaSet demande 3 répliques, crée 3 Pods (sans nodeName).

  5. Le Scheduler assigne les Pods

    Il détecte les Pods sans nodeName, calcule les meilleurs Nodes, écrit les assignations.

  6. Les Kubelets lancent les conteneurs

    Chaque Kubelet détecte les Pods assignés à son Node et demande au container runtime (containerd) de lancer les conteneurs.

Contrôle de connaissances

Validez vos connaissances avec ce quiz interactif

10 questions
5 min.
70% requis

Informations

  • Le chronomètre démarre au clic sur Démarrer
  • Questions à choix multiples, vrai/faux et réponses courtes
  • Vous pouvez naviguer entre les questions
  • Les résultats détaillés sont affichés à la fin

Lance le quiz et démarre le chronomètre

  • Seul l’API Server accède à etcd — tous les autres composants passent par l’API Server
  • Le Scheduler assigne, le Kubelet lance — le Scheduler ne lance jamais de conteneurs
  • Le Controller Manager tourne en permanence — pas seulement quand un utilisateur agit
  • Le modèle pull rend le cluster résilient — les Kubelets interrogent l’API Server, pas l’inverse
  • Le Controller Manager regroupe plusieurs contrôleurs — Deployment, ReplicaSet, Node, Job…
  • Le cloud-controller-manager est optionnel — uniquement sur clusters cloud
  • etcd est critique — sauvegardez-le régulièrement

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.