Cloud & DevOps

Comprendre Kubernetes de manière visuelle

by Claire Monnier 27 août 2025

Au mois de juin dernier, j’ai eu le plaisir d’assister à l’édition 2025 de Sunny Tech à Montpellier, où Aurélie Vache nous a présenté un talk basé sur son livre Understanding Kubernetes in a visual way. Kubernetes est une technologie puissante, mais souvent perçue comme complexe, surtout par les développeurs débutants avec les conteneurs et l’orchestration. Entre les pods, les déploiements, les services ou encore les namespaces, la terminologie et la logique peuvent rapidement sembler abstraites.

C’est précisément là qu’intervient la démarche d’Aurélie : utiliser des sketchnotes et illustrations ludiques pour expliquer pas à pas les grands principes de Kubernetes. Une méthode qui permet de transformer des notions techniques en concepts visuels accessibles, et ainsi d’aider les débutants à franchir plus sereinement la marche vers l’orchestration de conteneurs.

Dans cette lecture inspirée de son intervention, vous découvrirez comment l’approche visuelle d’Aurélie facilite l’apprentissage des bases de Kubernetes et rend cette technologie plus concrète et moins intimidante notamment pour les développeurs débutants.

Aurélie Vache, parcours et prise en main de Kubernetes

Aurélie Vache est développeuse Advocate chez OVHcloud , basée à Toulouse et dans le développement et l’Ops depuis une vingtaine d’années.
Elle est Docker Captain, CNCF Ambassador, Google Developer Expert, Women Techmakers Ambassador ou encore GitPod Hero. Un CV pour le moins impressionnant !

Elle intervient régulièrement comme conférencière internationale et organisatrice de meetups. Lors de son intervention à Sunny Tech 2025, Aurélie Vache nous a expliqué certains des concepts clés de Kubernetes.

Aurélie a découvert Kubernetes il y a sept ans, lorsqu’elle développait des microservices pour des véhicules autonomes et connectés. À l’époque, ça n’a pas été simple de prendre en main l’outil qui n’était pas aussi mature qu’aujourd’hui. Elle a commencé à prendre de petites notes sur les fonctionnalités de Kubernetes au fur et à mesure pendant des mois.

En 2020, lors du premier confinement, avec sa tablette et son chat sous le coude, elle s’est demandé comment elle pourrait représenter un pod, un des concepts de Kubernetes, et s’est mise à gribouiller des Poké Balls (nous y reviendrons).

Quelques mois plus tard, avec ses notes, elle crée la première version d’un e-book.
En 2022, elle publie une version papier, auto-publiée. Ce livre inclut tous les concepts clés de Kubernetes : pods, volumes, etc.

Kubernetes, qu’est-ce que c’est ?

Il s’agit d’un orchestrateur open-source de conteneurs. C’est un outil qui permet de gérer automatiquement le déploiement, la mise à l’échelle et la résilience d’applications exécutées dans des conteneurs, comme ceux créés sur Docker. Il faudrait penser Kubernetes comme un chef d’orchestre. Il va gérer pour vous les ressources, les machines ou encore la communication entre les conteneurs.

Pour faire tout cela, on va écrire un fichier manifeste, qui est un fichier de configuration écrit en YAML, décrivant comment déployer et gérer une ressource Kubernetes. C’est, en quelque sorte, comme une partition.

Kubernetes est basé sur plusieurs composants :

  • Le Control Plane : on y retrouve notamment le controller manager, le scheduler, l’API-server qui exposent l’API de Kubernetes du cluster.
  • La Data Plane : on y retrouve notamment kubelet et le buke-proxy.

On va pouvoir interagir avec l’API-server via les lignes de commande du kubectl.

Schéma explicatif Kubernetes

Qu’est-ce qu’un POD dans Kubernetes ?

C’est l’un des concepts les plus importants de Kubernetes. Notre application tourne avec des conteneurs qui tournent dans des pods. Un pod est la plus petite unité déployable et qui tourne dans un cluster (ensemble de machines : les nodes, permettant d’exécuter des applications conteneurisées). Il peut contenir un ou plusieurs conteneurs.
Chaque pod possède une adresse IP unique.

Schéma pods Kubernetes

Commandes kubctl pour manager les pods

Voir la liste des pods dans mon namespace
kubectl get pods -n my-namespace
Créer un pod avec son nom
kubectl run -it busybox –-image=busybox –restart=Never -n my-namespace
Éditer un pod directement dans le cluster
kubectl edit pod my-pod -n my-namespace
Supprimer un pod dans le namespace namespace sans délai
kubectl delete pod my-pod —-force —-grace-period=0 -n my-namespace

Les nodes dans Kubernetes

Un node est une machine virtuelle ou physique dans laquelle les pods tournent. Chaque node contient les composants nécessaires pour faire tourner les pods comme par exemple : le container runtime ou encore le Kubelet.

Schéma Node Kubernetes

Schéma pods et Node Kubernetes

Les déploiements

Le déploiement dans Kubernetes permet de déployer et gérer vos applications de manière automatisée et contrôlée dans des environnements distribués. Kubernetes va mettre en place des actions automatisées prédéfinies, par exemple dans le fichier yaml, nécessaires pour le déploiement. Il permet le contrôle de réplication, les rollbacks ou encore la gestion de versions. On peut donc décrire le nombre de pods d’une application et leurs configurations. Un déploiement garantit que les pods fonctionnent correctement : si l’un d’eux devient défaillant, un nouveau pod est automatiquement créé pour le remplacer. Concrètement, un déploiement génère un replicaSet, qui est un objet Kubernetes chargé de maintenir en permanence le nombre de pods souhaité. Autrement dit, le replicaSet crée et supprime des pods pour s’assurer que le nombre de réplicas définis soit toujours respecté.

Commandes pour un déploiement

Lister tous les déploiements d’un namespace

 

kubectl get deployments -n my-namespace
Créer un déploiement créant un pod avec une image qu’on spécifie

 

kubectl create deploy nginx-deployment —-image=nginx -n my-namespace
Éditer un déploiement avec la version du tag de l’application

 

kubectl set image deployment/nginx-deployment nginx=nginx:1.27.4 -n my-namespace
Définir le déploiement à 5 réplicas par exemple

 

kubectl scale deploy nginx-deployment —-replicas=5 -n my-namespace
Supprimer un déploiement

 

kubectl delete deploy nginx-deployment -n my-namespace

Pour créer un déploiement, on peut aussi créer un déploiement via le fichier manifest :

Déploiement Kubernetes

Les services

Un service permet de rendre un groupe de pods accessibles en réseau. Les services nous permettent donc d’accéder à notre application avec une adresse IP unique. On pourra être en capacité d’assigner un nom unique au DNS pour un groupe de pods, pour y accéder avec une adresse unique. Le groupe de pod est ciblé généralement par un sélecteur.

Schéma services Kubernetes

Les différents types de services

Schéma des différents types de Kubernetes

Le service par défaut est le Cluster IP. Il autorise à exposer un service à travers une adresse IP interne au cluster. Cela permet d’accéder à l’application à travers le cluster.

Le NodePort est un type de service qui permet d’exposer une application en dehors du cluster, voici comment :
Par défaut, un pod n’est accessible qu’à l’intérieur du cluster. Kubernetes attribue un port spécifique sur chaque node du cluster. En accédant à http://<IP_du_node>:<NodePort> , notre application est atteignable.

Le Nodeport est pratique pour tester son application mais en production on a plus tendance à utiliser le LoadBalancer.

Le LoadBalancer est un type de service permettant d’exposer une application vers l’extérieur du cluster, un peu comme le NodePort, mais avec une gestion automatique du trafic et assigne une adresse IP fixe dédiée.

Lorsqu’on va créer un service de type LoadBalancer, Kubernetes demande au cloud provider (AWS, GCP, Azure, OVHcloud…) de créer un load balancer externe. Celui-ci reçoit une adresse IP publique. Tout le trafic envoyé à cette IP redirigé vers le service Kubernetes qui lui-même distribue les requêtes entre les pods disponibles (via un ClusterIP interne).

Les utilisateurs accèdent donc à l’application directement via une IP ou un nom de domaine.

Le service ExternalName autorise à fournir un alias interne pour un nom DNS externe.

Commandes pour les services

Voir les infos d’un service
kubectl get service my-svc -n my-namespace
Créer un service qui expose un déploiement sur le port 80
kubectl expose deployment my-deploy —-type=LoadBalancer —-name=my-svc —-target-port=8080 -n my-namespace
Créer un pod et l’exposer à travers un service
kubectl run my-pod —-image=nginx —-restart=Never —-port=80 —-expose -n my-namespace
Éditer un service
kubectl edit svc my-svc -n my-namespace

Les namespaces

Schéma namespaces Kubernetes

Un namespace est une forme d’isolation. On peut isoler par projet, par team, par famille de composants. Le nom des ressources doit être unique dans le namespace mais pas dans les autres namespaces. Attention lorsqu’on supprime un namespace, cela va supprimer toutes les ressources à l’intérieur. Toutes les ressources ne sont pas des namespaces comme les nodes ou les PV (persistant volumes).

Commandes pour les namespaces

Voir tous pods dans tous les namespaces
kubectl get pods —-all-namespaces
Voir une liste des namespaces
kubectl get namespaces
Créer un namespace
kubectl create ns my-namespace
Supprimer un namespace
kubectl delete ns my-namespace

Les jobs

Un job est un process qui tourne un certain temps pour certaines actions : batch process, backup, ou encore une migration de database, cleanup. Un job fait tourner un ou plusieurs pods et s’assure qu’un certain nombre d’entre eux terminent correctement. Un job peut tourner seulement une fois, de manière séquentielle ou encore en parallèle d’autres jobs.

Commandes pour les jobs

Voir la liste des jobs
kubectl get jobs
Créer un job avec une image
kubectl create job my-job —-image=busybox -n my-namespace
Supprimer un job et tout ses pods enfants
kubectl delete job my-job -n my-namespace
Supprimer un job sans ses pods enfants
kubectl delete job my-job —-cascade=orphan -n my-namespace

Les cronjobs

Les cronjobs permettent de lancer des tâches programmées périodiquement. Un cronjob va lancer un job qui va lancer un ou plusieurs pods. C’est utile dans certains cas comme par exemple faire un backup d’une base de données, effectuer des tâches de nettoyage ou encore des tâches périodiques comme l’envoi de mails.

Spécification du lancement avec le cron format :

Schéma cronjobs Kubernetes

Commandes pour les cronjobs

Voir la liste de tous les cronjobs
kubectl get cronjobs -n my-namespace
Créer un cronjob avec une image
kubectl create cronjob my-cj —-image=busybox —-schedule=”*/5 * * * *” -n my-namespace
Créer un job depuis un cronjob
kubectl create job my-job —-from=cronjob/my-cronjob -n my-namespace
Changer la périodicité d’un cronjob
kubectl patch cronjob my-cj -p ‘{“spec:{“schedule”: “0 */15 */1 * *”}}’ -n my-namespace
Supprimer un cronjob
kubectl delete cj my-cj -n my-namespace

En laissant place à son imagination et sa création, Aurélie a créé une nouvelle façon d’apprendre et de maîtriser les principaux concepts de Kubernetes qui peuvent être complexes à aborder au premier abord.

Si vous êtes intéressé·e pour découvrir davantage les sketchnotes d’Aurélie sur Kubernetes ou encore Docker, je vous invite à vous rendre sur son dev.to blog.

Vous avez des projets Kubernetes ou souhaitez vous former ? Kaliop vous accompagne, contactez-nous !

Claire Monnier

Claire Monnier

Développeuse full-stack / mobile chez Kaliop et passionnée de surf, je suis toujours à l’écoute des évolutions pour pouvoir surfer constamment sur la vague de la performance technique. Je participe à la réalisation de sites et applications haute performance, apportant la meilleure expertise possible pour nos clients.

Commentaires

Ajouter un commentaire

Votre commentaire sera modéré par nos administrateurs

Vous avez un projet ? Nos équipes répondent à vos questions

Contactez-nous