kubernetes
Débutant

Qu'est-ce que Kubernetes ? Le Guide pour Comprendre K8s

Qu'est-ce que Kubernetes ? Le Guide pour Comprendre K8s

Kubernetes expliqué simplement. Pourquoi l'utiliser, les concepts de base et comment il orchestre vos containers.

Florian Courouge
8 min de lecture
1,115 mots
0 vues
#Kubernetes
#Containers
#Orchestration
#Fondamentaux

Qu'est-ce que Kubernetes ?

Kubernetes (K8s) est une plateforme d'orchestration de containers. Ce guide explique pourquoi il existe et comment il fonctionne.


Le Problème : Gérer des Containers à Grande Échelle

Imaginons une application avec 3 containers :

┌─────────────┐  ┌─────────────┐  ┌─────────────┐
│   Frontend  │  │   Backend   │  │  Database   │
│  (React)    │  │  (Node.js)  │  │ (PostgreSQL)│
└─────────────┘  └─────────────┘  └─────────────┘

Sur une seule machine, Docker suffit. Mais en production :

  • Que faire si le backend crash ? → Redémarrer automatiquement
  • Comment gérer 100 instances ? → Répartir sur plusieurs serveurs
  • Comment mettre à jour sans downtime ? → Rolling updates
  • Comment répartir le trafic ? → Load balancing

Docker seul ne résout pas ces problèmes.


La Solution : Kubernetes

Kubernetes automatise le déploiement, la mise à l'échelle et la gestion des applications containerisées.

                    KUBERNETES CLUSTER
┌─────────────────────────────────────────────────────┐
│                                                     │
│   ┌─────────┐   ┌─────────┐   ┌─────────┐         │
│   │ Node 1  │   │ Node 2  │   │ Node 3  │         │
│   │┌───────┐│   │┌───────┐│   │┌───────┐│         │
│   ││Pod    ││   ││Pod    ││   ││Pod    ││         │
│   ││Backend││   ││Backend││   ││Backend││         │
│   │└───────┘│   │└───────┘│   │└───────┘│         │
│   │┌───────┐│   │┌───────┐│   │         │         │
│   ││Pod    ││   ││Pod    ││   │         │         │
│   ││Frontend│   ││Frontend│   │         │         │
│   │└───────┘│   │└───────┘│   │         │         │
│   └─────────┘   └─────────┘   └─────────┘         │
│                                                     │
│   Kubernetes distribue et gère automatiquement      │
└─────────────────────────────────────────────────────┘

Ce que Kubernetes Fait

Fonctionnalité Description
Self-healing Redémarre les containers crashés
Scaling Ajoute/retire des instances selon la charge
Load balancing Répartit le trafic entre les instances
Rolling updates Met à jour sans interruption
Service discovery Les apps se trouvent automatiquement
Secret management Gère mots de passe et certificats
Storage orchestration Monte automatiquement les volumes

Concepts de Base

Cluster

Un cluster Kubernetes = plusieurs machines qui travaillent ensemble.

                    CLUSTER
┌─────────────────────────────────────────┐
│                                         │
│  ┌─────────────┐    ┌─────────────┐    │
│  │ Control     │    │   Worker    │    │
│  │ Plane       │    │   Nodes     │    │
│  │ (cerveau)   │    │ (muscles)   │    │
│  └─────────────┘    └─────────────┘    │
│                                         │
└─────────────────────────────────────────┘

Node

Un serveur (physique ou VM) dans le cluster.

  • Control Plane : Gère le cluster (décisions, API)
  • Worker Nodes : Exécutent les containers

Pod

La plus petite unité déployable. Un pod contient un ou plusieurs containers.

┌────────────────────┐
│        POD         │
│  ┌──────────────┐  │
│  │  Container   │  │
│  │   (app)      │  │
│  └──────────────┘  │
│  ┌──────────────┐  │
│  │  Container   │  │
│  │  (sidecar)   │  │
│  └──────────────┘  │
│                    │
│  Même réseau       │
│  Même stockage     │
└────────────────────┘

Deployment

Décrit l'état souhaité de votre application.

# "Je veux 3 instances de mon backend"
apiVersion: apps/v1
kind: Deployment
metadata:
  name: backend
spec:
  replicas: 3          # 3 instances
  selector:
    matchLabels:
      app: backend
  template:
    spec:
      containers:
        - name: backend
          image: myapp:v1.0

Kubernetes s'assure que cet état est toujours maintenu.

Service

Expose vos pods et répartit le trafic.

                 SERVICE
                    │
       ┌────────────┼────────────┐
       │            │            │
       ▼            ▼            ▼
   ┌───────┐    ┌───────┐    ┌───────┐
   │ Pod 1 │    │ Pod 2 │    │ Pod 3 │
   └───────┘    └───────┘    └───────┘

Comment Kubernetes Fonctionne

Le Cycle de Réconciliation

  1. Vous déclarez l'état souhaité (YAML)
  2. K8s observe l'état actuel
  3. K8s agit pour atteindre l'état souhaité
  4. Répète en continu
┌──────────────────────────────────────────┐
│                                          │
│   État Souhaité ◄─────► État Actuel     │
│   (ce que vous    │     (ce qui          │
│    voulez)        │      existe)         │
│                   │                      │
│           Kubernetes réconcilie          │
│                   │                      │
│                   ▼                      │
│              ACTIONS                     │
│         (créer/supprimer pods)          │
│                                          │
└──────────────────────────────────────────┘

Exemple Concret

# Vous déclarez : "Je veux 3 replicas"
kubectl apply -f deployment.yaml

# Un pod crash
Pod 1: Running
Pod 2: Running
Pod 3: Crashed ❌

# Kubernetes détecte la différence
# État souhaité: 3 pods
# État actuel: 2 pods

# Kubernetes agit
# → Crée un nouveau Pod 4

Pod 1: Running
Pod 2: Running
Pod 4: Running ✅

Architecture Simplifiée

┌─────────────────────────────────────────────────────────────┐
│                     CONTROL PLANE                           │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐      │
│  │  API Server  │  │  Scheduler   │  │  Controller  │      │
│  │  (porte      │  │  (place les  │  │  Manager     │      │
│  │   d'entrée)  │  │   pods)      │  │  (maintient  │      │
│  │              │  │              │  │   l'état)    │      │
│  └──────────────┘  └──────────────┘  └──────────────┘      │
│                          │                                  │
│  ┌──────────────────────────────────────────────────┐      │
│  │                      etcd                         │      │
│  │           (base de données du cluster)           │      │
│  └──────────────────────────────────────────────────┘      │
└─────────────────────────────────────────────────────────────┘
                              │
              ┌───────────────┼───────────────┐
              │               │               │
              ▼               ▼               ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│   WORKER NODE   │ │   WORKER NODE   │ │   WORKER NODE   │
│  ┌───────────┐  │ │  ┌───────────┐  │ │  ┌───────────┐  │
│  │  kubelet  │  │ │  │  kubelet  │  │ │  │  kubelet  │  │
│  │ (agent)   │  │ │  │ (agent)   │  │ │  │ (agent)   │  │
│  └───────────┘  │ │  └───────────┘  │ │  └───────────┘  │
│  ┌───────────┐  │ │  ┌───────────┐  │ │  ┌───────────┐  │
│  │   Pods    │  │ │  │   Pods    │  │ │  │   Pods    │  │
│  └───────────┘  │ │  └───────────┘  │ │  └───────────┘  │
└─────────────────┘ └─────────────────┘ └─────────────────┘

Kubectl : L'Outil de Base

kubectl est la CLI pour interagir avec Kubernetes.

# Voir les pods
kubectl get pods

# Voir les deployments
kubectl get deployments

# Appliquer une configuration
kubectl apply -f deployment.yaml

# Voir les logs d'un pod
kubectl logs my-pod

# Entrer dans un pod
kubectl exec -it my-pod -- /bin/sh

# Voir les événements
kubectl get events

Quand Utiliser Kubernetes ?

Oui, utilisez K8s si :

  • Vous avez plusieurs services à gérer
  • Vous avez besoin de haute disponibilité
  • Vous voulez du scaling automatique
  • Vous avez une équipe pour le maintenir

Non, évitez K8s si :

  • Une seule application simple
  • Petit projet ou prototype
  • Pas de ressources pour l'opérer

Conseil : Pour débuter, utilisez un Kubernetes managé (EKS, GKE, AKS) plutôt que de l'installer vous-même.


Résumé

Concept Description
Cluster Ensemble de machines
Node Une machine du cluster
Pod Container(s) qui tournent ensemble
Deployment Déclaration de l'état souhaité
Service Expose et load-balance les pods
kubectl CLI pour gérer K8s

Prochaine Étape

Architecture Kubernetes : Comprendre les composants en détail.

F

Florian Courouge

Expert DevOps & Kafka | Consultant freelance specialise dans les architectures distribuees et le streaming de donnees.

Articles similaires