Kubernetes

Kubernetes
Labels:Kubernetes
Publié le 2026-05-08 17:59

1. Base

Conteneur

Un conteneur est un paquet applicatif qui contient :

  • l’application
  • ses dépendances
  • son environnement d’exécution

Exemple : une image Docker + un conteneur lancé à partir de cette image.

Kubernetes

Kubernetes sert à déployer, exécuter et gérer des conteneurs sur un cluster.

Il aide à :

  • lancer plusieurs instances
  • redémarrer ce qui tombe
  • exposer l’application sur le réseau
  • faire des mises à jour
  • gérer config, secrets et stockage

2. Architecture

Control Plane

C’est la partie qui décide :

  • planification
  • orchestration
  • gestion de l’état désiré

Worker Nodes

Ce sont les machines qui exécutent réellement les Pods.

À retenir :

  • Control Plane = cerveau
  • Worker Nodes = machines de travail

3. Objets principaux

Pod

Le plus petit objet déployable dans Kubernetes.

Un Pod contient :

  • un ou plusieurs conteneurs
  • une IP
  • éventuellement des volumes

En pratique :

  • souvent 1 Pod = 1 conteneur principal

ReplicaSet

Garantit qu’un certain nombre de Pods identiques tournent.

Exemple :

  • je veux 3 Pods nginx
  • si un tombe, Kubernetes en recrée un

Deployment

Objet le plus courant pour déployer une application.

Il permet :

  • gérer les ReplicaSets
  • faire des mises à jour
  • faire un rollback

À retenir :

  • en général on crée un Deployment, pas un ReplicaSet à la main

Service

Donne un accès réseau stable à un ou plusieurs Pods.

Pourquoi :

  • les Pods changent d’IP
  • le Service fournit un point d’entrée stable

4. Types de Services

ClusterIP

Service accessible à l’intérieur du cluster seulement.

Usage :

  • communication entre applications internes

NodePort

Expose le service sur un port du nœud.

Usage :

  • test simple depuis l’extérieur

LoadBalancer

Expose le service via un équilibreur de charge.

Usage :

  • accès externe plus propre, souvent en cloud

À retenir :

  • ClusterIP = interne
  • NodePort = externe simple
  • LoadBalancer = externe plus standard

5. Déploiement et mise à jour

Déployer

On doit souvent créer un Deployment avec une image de conteneur.

Mettre à jour

On change souvent :

  • la version de l’image
  • ou le YAML

Puis on applique la nouvelle config.

Rollback

Permet de revenir à la version précédente du déploiement.


6. Réseau Kubernetes

Chaque Pod a sa propre IP.

Mais :

  • cette IP peut changer
  • on ne s’appuie pas dessus directement

On utilise plutôt :

  • un Service
  • parfois plus tard un Ingress

7. Probes

Les probes servent à vérifier la santé et la disponibilité.

LivenessProbe

Répond à :

  • “est-ce que l’application est vivante ?”

Si la probe échoue, Kubernetes peut redémarrer le conteneur.

ReadinessProbe

Répond à :

  • “est-ce que l’application est prête à recevoir du trafic ?”

Si elle échoue :

  • le Pod tourne peut-être encore
  • mais il ne reçoit pas de trafic via le Service

À retenir :

  • Liveness = faut-il redémarrer ?
  • Readiness = peut-il recevoir du trafic ?

8. Volumes et persistance

Volume

Un volume est quelque chose monté dans le Pod.

Tous les volumes ne sont pas persistants.

PersistentVolume (PV)

C’est le stockage disponible côté cluster.

PersistentVolumeClaim (PVC)

C’est la demande de stockage faite par l’application.

Chaîne à retenir :

  • Pod -> PVC -> PV

ConfigMap

Permet de stocker de la configuration non sensible.

Exemples :

  • variables d’environnement
  • fichiers de config
  • paramètres applicatifs

Secret

Permet de stocker des données sensibles.

Exemples :

  • mots de passe
  • tokens
  • clés API

À retenir :

  • ConfigMap = config
  • Secret = données sensibles

9. YAML

Kubernetes utilise beaucoup de fichiers YAML pour décrire l’état voulu.

On définit souvent :

  • apiVersion
  • kind
  • metadata
  • spec

Exemple minimal d’un Pod :

apiVersion: v1
kind: Pod
metadata:
name: mon-pod
spec:
containers:
- name: nginx
image: nginx

Exemple minimal d’un Deployment :

apiVersion: apps/v1
kind: Deployment
metadata:
name: mon-app
spec:
replicas: 2
selector:
matchLabels:
app: mon-app
template:
metadata:
labels:
app: mon-app
spec:
containers:
- name: mon-app
image: nginx

Exemple minimal d’un Service :

apiVersion: v1
kind: Service
metadata:
name: mon-service
spec:
selector:
app: mon-app
ports:
- port: 80
targetPort: 80
type: ClusterIP

10. Commandes essentielles

Voir les objets

kubectl get pods
kubectl get deployments
kubectl get replicasets
kubectl get services
kubectl get pv
kubectl get pvc

Voir le détail

kubectl describe pod <nom>
kubectl describe deployment <nom>
kubectl describe service <nom>

Créer / appliquer

kubectl apply -f fichier.yaml

Supprimer

kubectl delete -f fichier.yaml
kubectl delete pod <nom>

Logs

kubectl logs <pod>

Entrer dans un conteneur

kubectl exec -it <pod> -- sh

Voir les changements de rollout

kubectl rollout status deployment/<nom>
kubectl rollout history deployment/<nom>
kubectl rollout undo deployment/<nom>

11. Minikube

Minikube sert à avoir un petit cluster Kubernetes local pour apprendre et tester.

Commandes utiles :

minikube start
minikube stop
minikube status
kubectl get nodes

12. Ce qu’il faut retenir en priorité


  • Pod = unité de base qui exécute le conteneur
  • Deployment = gère les Pods et leurs mises à jour
  • Service = accès réseau stable aux Pods
  • LivenessProbe = santé
  • ReadinessProbe = prêt à recevoir du trafic
  • PVC = demande de stockage
  • PV = stockage fourni
  • ConfigMap = config
  • Secret = données sensibles
  • Worker Node = machine qui exécute les Pods
  • Control Plane = partie qui orchestre