Bienvenue dans le monde de l'orchestration de conteneurs ! Cette formation vous guidera de la compréhension des conteneurs Docker jusqu'à la maîtrise de Kubernetes, l'orchestrateur de référence.
Au cours de la dernière décennie, les conteneurs ont révolutionné la manière dont nous développons, livrons et exécutons les applications. Cette révolution s'appuie sur des fondations historiques :
Un conteneur est une unité logicielle standardisée qui embarque :
Avantage clé : L'application s'exécute de manière identique, quel que soit l'environnement (développement, test, production).
Avant d'aller plus loin, vérifions votre environnement Docker :
# Vérifier la version Docker
docker --version
# Lancer votre premier conteneur
docker run hello-world
# Explorer les images disponibles
docker images
# Voir les conteneurs en cours
docker ps
Observation : Notez la rapidité de lancement comparé à une VM !
Lorsque votre architecture grandit, les conteneurs isolés montrent leurs limites :
Problèmes de Gestion :
Exemple concret :
Application E-commerce :
├── Frontend (3 répliques)
├── API Gateway (2 répliques)
├── Service Utilisateurs (4 répliques)
├── Service Catalogue (6 répliques)
├── Service Commandes (4 répliques)
├── Base de données (cluster)
└── Cache Redis (cluster)
= 19+ conteneurs à orchestrer !
Un orchestrateur doit fournir :
Gestion du Cycle de Vie
Réseau et Communication
Stockage et Persistance
Sécurité et Gouvernance
Kubernetes (k8s - 8 lettres entre k et s) est un système open-source d'orchestration de conteneurs, initialement conçu par Google basé sur leur expérience interne avec Borg et Omega.
Dates clés :
Kubernetes vs Concurrents :
| Solution | Points Forts | Points Faibles | Usage Recommandé |
|---|---|---|---|
| Kubernetes | Écosystème riche, flexibilité maximale, support multi-cloud | Complexité initiale élevée | Production, multi-cloud, écosystème complexe |
| Docker Swarm | Simplicité, intégration native Docker | Écosystème limité, moins de fonctionnalités | Petites équipes, prototypage |
| Apache Mesos | Performance, gestion multi-framework | Complexité de configuration | Big Data, calcul intensif |
| Amazon ECS | Intégration AWS native, simplicité | Vendor lock-in AWS | Applications AWS-only |
Parts de marché 2024 :
# Vous décrivez l'état souhaité
apiVersion: apps/v1
kind: Deployment
metadata:
name: mon-app
spec:
replicas: 3 # "Je veux 3 instances"
Kubernetes maintient automatiquement cet état.
Écosystème Cloud Native :
┌─── CI/CD ────┬─── Registry ───┬─── Orchestration ───┬─── Monitoring ──┐
│ Jenkins │ Docker Hub │ Kubernetes │ Prometheus │
│ GitLab CI │ Harbor │ OpenShift │ Grafana │
│ GitHub Act. │ Quay.io │ Rancher │ Jaeger │
└──────────────┴────────────────┴─────────────────────┴─────────────────┘
Intégrations Majeures :
┌─── CLUSTER KUBERNETES ──────────────────────────┐
│ │
│ ┌─── CONTROL PLANE ────┐ ┌─── WORKER NODES ─┐ │
│ │ │ │ │ │
│ │ • API Server │ │ • kubelet │ │
│ │ • etcd │ │ • kube-proxy │ │
│ │ • Controller Mgr │ │ • Container │ │
│ │ • Scheduler │ │ Runtime │ │
│ │ │ │ │ │
│ └──────────────────────┘ └──────────────────┘ │
└─────────────────────────────────────────────────┘
Infrastructure :
Applications :
Gestion :
Outils :
Si vous avez accès à un cluster Kubernetes :
# Vérifier la connexion au cluster
kubectl cluster-info
# Explorer les nodes du cluster
kubectl get nodes
# Découvrir les namespaces existants
kubectl get namespaces
# Voir tous les pods du cluster
kubectl get pods --all-namespaces
Dans le module suivant, nous explorerons l'architecture détaillée de Kubernetes et comprendrons le rôle de chaque composant.
TP associé : TP 1 : Introduction et Premier Contact
Ce que vous avez appris :
Ce qui vous attend :