Aller au contenu
Conteneurs & Orchestration medium
🔐 Alerte sécurité — Incident supply chain Trivy : lire mon analyse de l'attaque

Les concepts clés de Kubernetes pour bien démarrer

12 min de lecture

logo kubernetes

Kubernetes ne lance pas simplement des conteneurs : il orchestre des applications sur un ensemble de machines. Vous ne démarrez pas un conteneur directement sur un serveur. Vous déclarez un état souhaité au cluster, et Kubernetes se charge d’y parvenir. Pour comprendre ce fonctionnement sans vous perdre, vous devez maîtriser six notions fondamentales : le Cluster, les Nodes, les Namespaces, les Pods, les Deployments et les Services.

  • Cluster et Nodes : l’infrastructure sur laquelle tout repose
  • Namespace : comment organiser et isoler vos ressources
  • Pod : l’unité de base qui exécute vos conteneurs
  • Deployment : le contrôleur qui maintient vos applications en vie
  • Service : le point d’accès réseau stable vers vos pods
  • Comment tout s’articule : le modèle mental complet

Sans maîtriser ce vocabulaire, vous ne comprendrez ni la documentation officielle, ni les tutoriels. Chaque guide Kubernetes utilise ces termes en permanence. En les apprenant maintenant, vous gagnez du temps sur tous les guides suivants.

Avant de détailler chaque notion, voici comment les situer :

ConceptNatureRôle
ClusterEnsembleRegroupe toutes les ressources
NodeMachineExécute les workloads
NamespaceOrganisation logiqueIsole et range les objets
PodUnité d’exécutionFait tourner les conteneurs
DeploymentContrôleurMaintient et met à jour les pods
ServiceAbstraction réseauFournit un accès stable

Un cluster est un ensemble de machines qui travaillent ensemble pour exécuter vos applications. Il se compose de deux types de machines :

TypeRôle
Control planeCerveau du cluster : décide où placer les pods, surveille l’état
Worker nodesMuscles du cluster : exécutent réellement les conteneurs

Vous interagissez avec le cluster via kubectl, l’outil en ligne de commande.

Vérifier la connexion au cluster
kubectl cluster-info
Résultat
Kubernetes control plane is running at https://0.0.0.0:46029
CoreDNS is running at https://0.0.0.0:46029/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

Cette commande confirme que votre machine peut communiquer avec le control plane.

Un node est une machine (physique ou virtuelle) qui fait partie du cluster. Chaque node peut exécuter plusieurs pods.

Lister les nodes du cluster
kubectl get nodes
Résultat
NAME STATUS ROLES AGE VERSION
k3d-doc-k8s-server-0 Ready control-plane,master 17h v1.31.5+k3s1
k3d-doc-k8s-agent-0 Ready <none> 17h v1.31.5+k3s1

Dans cet exemple :

  • k3d-doc-k8s-server-0 est le control plane (rôle control-plane,master)
  • k3d-doc-k8s-agent-0 est un worker node (pas de rôle spécifique affiché)

Un namespace est un espace de noms qui isole logiquement les ressources. Avant de créer des pods, il faut savoir les ranger.

Lister les namespaces
kubectl get namespaces
Résultat
NAME STATUS AGE
default Active 17h
kube-node-lease Active 17h
kube-public Active 17h
kube-system Active 17h
NamespaceUsage
defaultVos applications si vous ne spécifiez rien
kube-systemComposants internes de Kubernetes
kube-publicRessources lisibles par tous
kube-node-leaseGestion interne des heartbeats des nodes

Un Pod est l’unité minimale que Kubernetes déploie. Dans la majorité des cas, il contient un seul conteneur applicatif. Plusieurs conteneurs dans un même Pod partagent le même réseau (même IP) et peuvent partager des volumes.

Lister tous les pods du cluster
kubectl get pods -A
Résultat (extrait)
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-ccb96694c-l7wp8 1/1 Running 0 17h
kube-system metrics-server-5985cbc9d7-wslf9 1/1 Running 0 17h
kube-system traefik-5d45fc8cc9-9vsfc 1/1 Running 0 17h

Chaque ligne est un pod. La colonne READY indique le nombre de conteneurs prêts sur le total (1/1 = 1 conteneur prêt sur 1).

Le Deployment : le contrôleur qui maintient vos applications

Section intitulée « Le Deployment : le contrôleur qui maintient vos applications »

Un Deployment est le contrôleur le plus courant pour faire tourner une application. Il ne se contente pas de “créer des pods” : il maintient le bon nombre de répliques, remplace ceux qui tombent et pilote les mises à jour progressives.

Ce que vous déclarezCe que le Deployment fait
replicas: 3Crée et maintient 3 pods
Image nginx:1.25S’assure que tous les pods utilisent cette image
Un pod planteEn relance un automatiquement
Nouvelle version d’imageRolling update sans coupure de service
Lister tous les deployments
kubectl get deployments -A
Résultat (extrait)
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE
kube-system coredns 1/1 1 1 17h
kube-system metrics-server 1/1 1 1 17h
kube-system traefik 1/1 1 1 17h

La colonne READY montre pods-prêts/pods-désirés. Un deployment avec 1/1 signifie : 1 réplique demandée, 1 réplique en service.

Un Service fournit un point d’accès stable à un groupe de pods. Comme les pods sont éphémères (ils peuvent être recréés avec une nouvelle IP), on ne les contacte pas directement : on passe par le Service, qui garde une adresse stable et répartit le trafic.

ProblèmeSolution du Service
Les pods changent d’IP quand ils redémarrentLe Service garde une IP fixe
Plusieurs pods font le même travailLe Service répartit le trafic (load balancing)
Besoin d’un nom DNS pour l’applicationLe Service expose un nom stable
Lister tous les services
kubectl get services -A
Résultat (extrait)
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default kubernetes ClusterIP 10.43.0.1 <none> 443/TCP 17h
kube-system kube-dns ClusterIP 10.43.0.10 <none> 53/UDP,53/TCP,9153/TCP 17h
kube-system traefik LoadBalancer 10.43.91.86 172.22.0.2 80:30619/TCP,443:30490/TCP 17h

Types de services les plus courants :

  • ClusterIP (défaut) : accessible uniquement depuis l’intérieur du cluster
  • LoadBalancer : accessible depuis l’extérieur via une IP publique

Voici comment ces objets travaillent ensemble dans un scénario typique :

Cluster
├── Control plane
│ └── Décide et observe l'état du cluster
└── Worker nodes
└── Namespace: demo
├── Deployment: web (replicas: 3)
│ ├── Pod: web-abc12
│ ├── Pod: web-def34
│ └── Pod: web-ghi56
└── Service: web (ClusterIP)
└── Route le trafic vers les 3 pods
  1. Je crée un namespace demo pour ranger mes ressources

  2. Je déclare un Deployment web avec 3 répliques

  3. Le Deployment crée 3 Pods qui tournent sur les worker nodes

  4. Je crée un Service web qui cible ces pods

  5. Les autres applications appellent le Service, pas les pods directement

Ce modèle déclaratif est la clé de Kubernetes : vous décrivez l’état souhaité, le cluster s’assure de l’atteindre.

Ce que vous n’avez pas besoin de comprendre tout de suite

Section intitulée « Ce que vous n’avez pas besoin de comprendre tout de suite »

Vous croiserez ces composants plus tard dans votre parcours. Pour bien démarrer, concentrez-vous d’abord sur les objets que vous manipulez directement :

ComposantQuand l’apprendre
etcdAdministration avancée
SchedulerAdministration avancée
kube-proxyRéseau avancé
CNI (Calico, Cilium…)Réseau avancé
Admission controllersSécurité avancée
ConceptDéfinition en une phrase
ClusterEnsemble de machines qui exécutent Kubernetes
NodeUne machine du cluster
NamespaceIsolation logique pour ranger les ressources
PodUnité minimale qui exécute un ou plusieurs conteneurs
DeploymentContrôleur qui maintient et met à jour les pods
ServicePoint d’accès réseau stable vers un groupe de pods

Les 4 idées fondamentales à retenir :

  1. Je ne déploie pas mon application directement sur un node — je la déclare au cluster
  2. Je déploie des pods, généralement via un Deployment
  3. Je passe par un Service pour joindre mes pods
  4. Le cluster répartit tout cela sur les machines disponibles

Les commandes essentielles :

Les commandes de base
kubectl cluster-info # Vérifier la connexion
kubectl get nodes # Lister les machines
kubectl get namespaces # Lister les espaces de noms
kubectl get pods -A # Lister tous les pods
kubectl get deployments -A # Lister tous les deployments
kubectl get services -A # Lister tous les services

Vous avez maintenant le vocabulaire minimum pour comprendre les guides suivants. La prochaine étape : créer un cluster local, puis déployer votre première application avec un Deployment et un Service.

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.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn