Introduction à Kubernetes
1 - Qu'est-ce que Kubernetes ?
Kubernetes (souvent abrégé K8s) est une plateforme open-source d'orchestration de conteneurs développée initialement par Google. Elle automatise le déploiement, la mise à l'échelle et la gestion des applications conteneurisées.
Pourquoi "K8s" ?
Le nom "K8s" vient de l'abréviation de Kubernetes : K + 8 lettres + s. Cette convention est courante dans le monde de la tech (i18n pour internationalization, l10n pour localization).
Le problème que Kubernetes résout
Sans orchestration, la gestion de conteneurs devient rapidement complexe :
| Défi | Sans Kubernetes | Avec Kubernetes |
|---|---|---|
| Déploiement | Manuel, scripts personnalisés | Déclaratif, automatisé |
| Scaling | Complexe, intervention manuelle | Automatique (HPA) |
| Haute disponibilité | Configuration manuelle | Native |
| Mises à jour | Temps d'arrêt | Rolling updates |
| Récupération | Intervention manuelle | Self-healing |
2 - Historique et évolution
Les origines chez Google
Kubernetes tire ses racines de Borg et Omega, les systèmes internes de Google qui gèrent des milliards de conteneurs chaque semaine.
La Cloud Native Computing Foundation (CNCF)
En 2015, Google a fait don de Kubernetes à la CNCF, une fondation qui héberge de nombreux projets cloud-native :
- Kubernetes - Orchestration
- Prometheus - Monitoring
- Envoy - Service mesh
- Helm - Package manager
- etcd - Base de données distribuée
3 - Concepts clés
Le modèle déclaratif
Kubernetes utilise un modèle déclaratif : vous décrivez l'état souhaité de votre application, et Kubernetes s'assure de maintenir cet état.
# Exemple : Déclarer un déploiement avec 3 réplicas
apiVersion: apps/v1
kind: Deployment
metadata:
name: mon-application
spec:
replicas: 3 # État souhaité : 3 instances
selector:
matchLabels:
app: mon-app
template:
metadata:
labels:
app: mon-app
spec:
containers:
- name: app
image: nginx:latest
ports:
- containerPort: 80
Ressources Kubernetes principales
4 - Cas d'utilisation
Microservices
Kubernetes excelle dans le déploiement d'architectures microservices :
CI/CD et GitOps
Kubernetes s'intègre parfaitement dans les pipelines CI/CD :
- GitHub Actions → Build d'images Docker
- ArgoCD → Déploiement GitOps
- Flux → Continuous Delivery
Batch Processing et Jobs
Pour les traitements par lots :
apiVersion: batch/v1
kind: Job
metadata:
name: data-processing
spec:
completions: 10
parallelism: 3
template:
spec:
containers:
- name: processor
image: data-processor:v1
restartPolicy: Never
5 - Kubernetes vs alternatives
Comparaison avec d'autres orchestrateurs
| Critère | Kubernetes | Docker Swarm | Nomad |
|---|---|---|---|
| Complexité | Élevée | Faible | Moyenne |
| Fonctionnalités | Très complètes | Basiques | Complètes |
| Communauté | Énorme | Moyenne | Croissante |
| Écosystème | Très riche | Limité | Bon |
| Courbe d'apprentissage | Raide | Douce | Moyenne |
| Adoption entreprise | Standard | Limitée | Croissante |
Quand choisir Kubernetes ?
Kubernetes est idéal pour :
- Applications de grande envergure
- Environnements multi-cloud
- Équipes DevOps matures
- Besoins de haute disponibilité
Alternatives à considérer :
- Docker Swarm : Pour des déploiements simples
- Nomad : Pour l'hétérogénéité (VMs + conteneurs)
- ECS/Fargate : Si 100% AWS
6 - L'écosystème Kubernetes
7 - Terminologie essentielle
| Terme | Définition |
|---|---|
| Cluster | Ensemble de machines (nodes) gérant des conteneurs |
| Node | Machine physique ou virtuelle dans le cluster |
| Pod | Plus petite unité déployable (1+ conteneurs) |
| Service | Abstraction réseau pour accéder aux Pods |
| Deployment | Gère le cycle de vie des Pods |
| Namespace | Isolation logique des ressources |
| kubectl | CLI pour interagir avec Kubernetes |
| Manifest | Fichier YAML décrivant une ressource |
Résumé
Dans ce chapitre, nous avons découvert :
- L'origine de Kubernetes chez Google (Borg)
- Le modèle déclaratif qui définit l'état souhaité
- Les cas d'utilisation : microservices, CI/CD, batch
- L'écosystème riche autour de Kubernetes
- La terminologie de base à maîtriser
Prochaine étape
Dans le prochain chapitre, nous explorerons en détail l'architecture de Kubernetes et le rôle de chaque composant.
→ Chapitre suivant : Architecture Kubernetes