Architecture de Kubernetes

Mario FadegnonMario Fadegnon
4 min read

Qu’est-ce qu’un Cluster Kubernetes ?

Un Cluster Kubernetes est un ensemble de machines (physiques ou virtuelles) qui travaillent ensemble pour exécuter et gérer vos applications conteneurisées.

On peut le voir comme un « groupe coordonné » où chaque machine a un rôle précis :

  • Le master (ou nœud maître) qui contrôle et gère tout le cluster. Il prend les décisions, planifie où les applications doivent tourner, et surveille l’état général.

  • Les nœuds (nodes) de travail qui hébergent les Pods, donc vos applications. Ce sont eux qui exécutent réellement les conteneurs.

Le cluster Kubernetes assure la répartition, la montée en charge, la résilience et la gestion automatisée de vos applications sur ces machines.

On peut utiliser l’analogie entre les composants de Kubernetes et une école/un port:

Composant KubernetesFonction réelle🎓 Analogie écoleAnalogie portuaire
ClusterEnsemble de machines qui exécutent les applicationsL'école entièreLe port complet avec tous ses quais
Control PlaneCerveau du cluster : prend les décisions, planifie, surveilleLe directeur de l’écoleLa tour de contrôle / le capitaine du port
Node (Worker Node)Machine qui exécute les applications (pods)Les enseignantsLes quais où les bateaux sont chargés
PodGroupe d’un ou plusieurs conteneurs exécutés ensembleUne classe avec des élèvesUn bateau avec des conteneurs à bord
ContainerUnité d’application légère, isoléeUn élève dans une classeUn conteneur à l’intérieur d’un bateau
kubectlOutil pour communiquer avec le clusterLe carnet ou téléphone du directeurLe talkie-walkie du capitaine

Les composants du Control Plane (le cerveau de Kubernetes)

  • API Server :
    C’est la porte d’entrée du cluster. Il reçoit toutes les commandes qu’on envoie avec kubectl, le tableau de bord, ou d'autres outils.

  • etcd :
    C’est la mémoire du cluster. Il garde toutes les informations importantes (état, configuration) sous forme de paires clé-valeur. Pour faire simple, c’est une base de données clé-valeur.

  • Scheduler :
    C’est lui qui décide (sur quel nœud) un nouveau Pod sera lancé.

  • Controller Manager :
    Il surveille tout ce qui se passe dans le cluster, et agit si quelque chose ne va pas (par exemple, si un Pod tombe, il en relance un autre).

  • Cloud Controller Manager (CCM) :
    Si le cluster est dans un cloud (comme AWS, Azure, etc.), il s’occupe de connecter Kubernetes avec les services du cloud : machines, disques, réseaux, etc.

Les composants des Nodes (les bras du cluster)

  • Kubelet :
    C’est l’agent du node. Il reçoit les instructions du Control Plane et s’assure que les Pods sont bien lancés comme prévu.

  • Container Runtime :
    C’est le moteur qui lance réellement les conteneurs (par exemple : Docker, containerd, etc.).

  • kube-proxy :
    Il gère le réseau sur le node. Il fait en sorte que les Pods puissent communiquer entre eux et avec

    l’extérieur.

🧠 En résumé :

  • Le Control Plane donne les ordres.

  • Le Node les exécute, grâce à Kubelet, Container Runtime et kube-proxy.

Après avoir exploré l’architecture générale de Kubernetes, il est important de comprendre certains éléments(objets) que l’on rencontre souvent lorsqu’on travaille avec cet outil. Ces éléments clés sont le Pod, le ReplicaSet et le Deployment.

Qu’est-ce qu’un Pod ?

Le Pod est l’unité de base dans Kubernetes. On peut le voir comme un petit morceau de votre application, la plus petite unité déployable.

Un Pod peut contenir un ou plusieurs conteneurs qui travaillent ensemble. Tous les conteneurs d’un même Pod partagent la même adresse IP et les mêmes ports, ce qui leur permet de communiquer facilement entre eux, comme s’ils étaient sur la même machine.

👉 De plus, si un volume de stockage est défini dans le Pod, tous les conteneurs peuvent partager cet espace commun, ce qui est très pratique pour échanger des fichiers ou conserver des données partagées.

Qu’est-ce qu’un ReplicaSet ?

Maintenant que nous comprenons ce qu’est un Pod, voyons comment Kubernetes s’assure que le bon nombre de ces Pods est toujours en fonctionnement. C’est ici qu’intervient le ReplicaSet.

Le ReplicaSet agit comme un gardien des copies de votre application. Son rôle principal est de garantir qu’il y ait toujours un nombre défini de Pods actifs. Pour cela, il surveille en permanence l’état des Pods.

Si un Pod disparaît ou plante, le ReplicaSet crée un nouveau Pod pour le remplacer. Inversement, s’il y a trop de Pods en cours d’exécution, il en supprime certains pour revenir au nombre souhaité.

En résumé, le ReplicaSet garantit la disponibilité et la stabilité de votre application en maintenant le nombre exact de Pods requis.

Qu’est-ce qu’un Deployment ?

Enfin, pour gérer facilement les mises à jour et l’évolution de votre application, Kubernetes propose le Deployment.

Le Deployment est comme un chef d’orchestre. Il orchestre le déploiement de vos Pods et ReplicaSets, permettant de mettre à jour votre application sans interruption de service.

Grâce au Deployment, vous pouvez déployer de nouvelles versions de votre application de manière progressive, gérer les retours en arrière si besoin, et assurer une évolution continue sans risque.

0
Subscribe to my newsletter

Read articles from Mario Fadegnon directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Mario Fadegnon
Mario Fadegnon