Kubernetes (K8s)
Définition
Kubernetes (abrégé K8s) est une plateforme d’orchestration de conteneurs open-source développée à l’origine par Google, maintenant maintenue par la CNCF. Il automatise le déploiement, la mise à l’échelle et la gestion d’applications conteneurisées sur des clusters de machines.
Kubernetes regroupe les conteneurs en unités logiques (Pods) pour une gestion et une découverte faciles, fournissant une configuration déclarative et une automatisation.
Concepts clés
- Pod : Unité déployable la plus petite ; un ou plusieurs conteneurs partageant réseau/stockage
- Service : Point de réseau stable pour un ensemble de Pods (ClusterIP, NodePort, LoadBalancer)
- Deployment : Gère les ReplicaSets pour des mises à jour déclaratives de Pods
- ConfigMap/Secret : Données de configuration et valeurs sensibles injectées dans les Pods
- Namespace : Cluster virtuel au sein d’un cluster physique (isolation logique)
- Ingress : Règles de routage HTTP/HTTPS pour l’accès externe
- PersistentVolume (PV) : Stockage provisionné par le cluster
- PersistentVolumeClaim (PVC) : Demande de stockage par un Pod
- Node : Une machine worker (VM ou physique) dans le cluster
- Control Plane : Composants master (API server, scheduler, controller-manager, etcd)
Architecture
Control Plane (Master)
├── API Server (kubectl communique ici)
├── etcd (base de données d'état du cluster)
├── Scheduler (assigne les Pods aux Nodes)
└── Controller Manager
Worker Nodes
├── kubelet (agent gérant le cycle de vie des Pods)
├── kube-proxy (routage réseau)
├── Container Runtime (containerd, CRI-O)
└── Pods (conteneurs en cours d'exécution)
Objets principaux de Kubernetes
| Objet | Objectif |
|---|---|
| Pod | Conteneur unique ou conteneurs co-localisés |
| Service | Abstraction réseau pour les Pods |
| Deployment | ReplicaSet géré pour les apps stateless |
| StatefulSet | Pods gérés avec identités stables (bases de données) |
| DaemonSet | Un Pod par Node |
| Job/CronJob | Tâches ponctuelles/planifiées |
| Namespace | Isolation logique des ressources |
| ConfigMap | Configuration non sensible |
| Secret | Données sensibles (base64-encoded) |
Alternatives à Kubernetes
| Outil | Type | Notes |
|---|---|---|
| Docker Swarm | Orchestration de conteneurs | Plus simple, Docker-native, legacy |
| Nomad | Ordonnanceur général | HashiCorp, plus simple que K8s |
| OpenShift | Distribution K8s | K8s enterprise de Red Hat |
| Rancher | Gestion K8s | Gestion multi-cluster K8s |
| EKS/AKS/GKE | K8s managé | Plan de contrôle géré par le fournisseur cloud |
Termes liés
- Docker — gestionnaire de paquets Kubernetes
- Terraform — déploiement GitOps pour Kubernetes
- Container Runtime — containerd, CRI-O (Kubernetes utilise l’interface CRI)
Références
- Documentation Kubernetes : https://kubernetes.io/docs/
- CNCF Kubernetes : https://www.cncf.io/projects/kubernetes/
- Concepts Kubernetes : https://kubernetes.io/docs/concepts/