
Kubernetes se construit en cluster et fait coopérer des serveurs appelés noeuds(nodes). Un cluster Kubernetes se divise en deux type de noeud distinctes qui ne font pas du tout le même travail :
Les nœuds d’un cluster sont les machines (serveurs physiques, machines virtuelles, etc.) qui hébergent les Pods qui sont les composants de la charge de travail des applications. Le Control plan (master node) contrôle chaque noeud.
Pour utiliser Kubernetes, vous utilisez les objets de l’API Kubernetes pour décrire l’état souhaité de votre cluster:
Vous créez des objets à l’aide de l’API Kubernetes, généralement via l’interface en ligne de commande, kubectl. Vous pouvez également utiliser l’API Kubernetes directement pour interagir avec le cluster et définir ou modifier l’état souhaité.
Le Control Plane (plan de contrôle) est la partie “intelligente” de Kubernetes. Il prend toutes les décisions du cluster : où déployer vos applications, comment réagir si quelque chose tombe en panne, comment répartir la charge… Mais attention : il ne fait jamais tourner vos conteneurs applicatifs. Son seul travail, c’est d’orchestrer.
Le control plane est responsable du maintien de l’état souhaité pour votre cluster. Lorsque vous interagissez avec Kubernetes, par exemple en utilisatant le cli kubectl, vous communiquez avec le control plane de votre cluster via l’api.
Il conserve un enregistrement de tous les objets Kubernetes du système et exécute des boucles de contrôle continues pour gérer l’état de ces objets. À tout moment, les boucles de contrôle du control plane répondent aux modifications du cluster et permettent de faire en sorte que l’état réel de tous les objets du système corresponde à l’état souhaité.
Le Control Plane décide et coordonne, il n’exécute aucune charge applicative : vos conteneurs tournent sur les Worker, jamais sur lui
Le control plane Kubernetes comprend un ensemble de processus en cours d’exécution sur votre cluste. Ces composants ne fonctionnent jamais isolément, ils forment une chaîne de traitement. Voici ce qui se passe quand vous déployez une application :
kube-apiserver: expose l’API pour parler au cluster. C’est ce qui est intérogé lorsque vous utilisez la commandes kubectletcd: Est la base de données clé-valeur distribuée, constante et hautement disponible de Kubernetes. Elle sert de « source unique de vérité » au cluster en stockant l’intégralité de son état, sa configuration, ses secrets et la description de toutes ses ressources. Seul l’API Server y accède directement.kube-controller-manager: il surveille en permanence l’état réel du cluster et le compare à l’état souhaité (ce que vous avez défini dans vos fichiers YAML). S’il y a une différence, il agit pour corriger.kube-scheduler: monitore les resources des différents workers, il cartographie et il décide sur quel worker créé un conteneur(Pods).Les Worker Nodes (nœuds de travail) sont les machines qui exécutent réellement vos applications.
C’est là que vos conteneurs tournent, consomment du CPU, de la mémoire, et répondent aux requêtes.
Chaque Worker de votre cluster exécute trois processus :
kubelet, qui communique avec le control plane et controle la création et l’état des pods sur son noeud. Agent qui reçoit les ordres et lance les conteneurskube-proxy, un proxy réseau reflétant les services réseau Kubernetes sur chaque nœud. Configure le réseau pour que les Pods communiquent.Container Runtime, L’environnement d’exécution de conteneurs. Exécute les conteneurs comme dockerAu delà de ces trois éléments, l’écosystème d’objets de Kubernetes est vaste et complexe

Vue d’ensemble : nature de chaque concept
| Concept | Définition en une phrase | Commande kubectl associée |
|---|---|---|
| Cluster | Ensemble de machines qui exécutent Kubernetes | kubectl cluster-info |
| Node | Une machine faisant partie du cluster | kubectl get nodes |
| Namespace | Espace logique pour organiser et isoler les ressources | kubectl get namespaces |
| Pod | Plus petite unité qui exécute un ou plusieurs conteneurs | kubectl get pods -A |
| Deployment | Contrôleur qui crée, met à jour et maintient les pods | kubectl get deployments -A |
| Service | Point d’accès réseau stable vers un groupe de pods | kubectl get services -A |
Ces ressources permettent de déployer et exposer vos applications. Maîtrisez-les en premier.
Pod Le Pod est l’unité d’exécution de Kubernetes. Il contient un ou plusieurs conteneurs qui partagent réseau et stockage. Les Pods sont éphémères : ne les créez jamais directement en production.
→ Apprendre les Pods Kubernetes
Deployment Le Deployment gère le cycle de vie de vos Pods : création, scaling, mises à jour progressives. C’est la ressource que vous utiliserez le plus souvent pour déployer des applications sans état.
→ Créer et mettre à jour des Deployments Kubernetes
ReplicaSet Le ReplicaSet maintient un nombre défini de Pods identiques. En pratique, vous ne le créez jamais directement, le Deployment le gère pour vous.
→ Comprendre les ReplicaSets Kubernetes
Ces ressources définissent comment vos applications communiquent entre elles et avec l’extérieur. Maîtriser le réseau est essentiel pour exposer vos services, sécuriser les flux et comprendre le comportement du cluster
Service Un Service expose vos Pods sur le réseau derrière une adresse stable. Comme les Pods sont recréés à tout moment, c’est le Service qui garantit un point d’accès permanent.
→ Exposer vos applications avec les Services Kubernetes
Ingress & Ingress Controller Un Ingress définit des règles d’entrée HTTP/HTTPS pour exposer vos applications vers l’extérieur. Il nécessite un Ingress Controller (Traefik, Nginx, HAProxy) qui applique ces règles et gère le routage, le TLS, les redirections, etc.
→ Gérer l’accès HTTP/HTTPS avec les Ingress Kubernetes
Un Pod est ephémères, donc lorqu’il redémarre et il perd toutes ses données. On a le concept de volumes éphémères pour les données temporaires, et stockage persistant (PV/PVC) pour les données qui doivent survivre aux Pods.
PersistentVolume (PV) Un PersistentVolume représente un volume de stockage réel dans le cluster : disque local, NFS, Ceph, EBS, etc. Il est provisionné par l’administrateur ou automatiquement via une StorageClass.
StorageClass Une StorageClass définit le type de stockage à utiliser : SSD, HDD, réseau distribué, cloud provider, etc. Elle permet le provisionnement dynamique : les volumes sont créés automatiquement quand un PVC est demandé.
Volumes éphémères Certains volumes ne sont pas persistants :
→ Comprendre les volume sur Kubernetes
Ces ressources permettent de configurer vos applications et d’organiser votre cluster.
ConfigMap Un ConfigMap stocke la configuration non sensible de votre application : URLs, paramètres, fichiers de config. Il permet de séparer la configuration du code.
→ Utiliser les ConfigMaps Kubernetes
Secret Un Secret stocke les données sensibles : mots de passe, clés d’API, certificats. Un Secret n’est pas chiffré par défaut, seulement encodé en base64, et l’encodage ne protège rien.
→ Stocker des données sensibles avec les Secrets Kubernetes
Namespace Un Namespace isole un groupe de ressources dans le cluster. Il permet de séparer les environnements (dev, staging, prod) ou les équipes.
→ Comprendre les Namespaces Kubernetes
Ces ressources répondent à des besoins spécifiques : applications avec état, agents système et tâches planifiées.
StatefulSet Un StatefulSet gère des applications avec état : bases de données, systèmes distribués. Contrairement au Deployment, il garantit :
Des identités stables (pods numérotés : mysql-0, mysql-1, mysql-2) Un ordre de démarrage et d’arrêt déterministe Des volumes persistants liés à chaque pod → Déployer des applications avec état : StatefulSets Kubernetes
DaemonSet Un DaemonSet garantit qu’un Pod tourne sur chaque nœud du cluster. Utilisé pour :
Les agents de monitoring (Prometheus Node Exporter, Datadog) Les collecteurs de logs (Fluentd, Filebeat) Les agents réseau (CNI plugins, kube-proxy) → Exécuter un Pod sur chaque nœud : DaemonSets Kubernetes
Job et CronJob Un Job exécute une tâche jusqu’à complétion : migration de base de données, backup, traitement batch. Un CronJob planifie cette exécution de façon récurrente.
→ Exécuter des tâches avec Jobs et CronJobs Kubernetes
ref: https://blog.stephane-robert.info/docs/conteneurs/orchestrateurs/kubernetes/architecture/ https://kubernetes.io/fr/docs/concepts/architecture/