Conteneurs & orchestrateurs
Introduction
Les conteneurs et les orchestrateurs comme Docker et Kubernetes sont des technologies clés pour la virtualisation légère et la gestion d'applications à grande échelle. Ce résumé corrige les fautes d'orthographe et de grammaire du document fourni, en conservant les informations essentielles sans ajouter ni supprimer de contenu factuel.
Les conteneurs & Docker
voir la fiche sur les généralités Docker
Les conteneurs
Ils sont une méthode de virtualisation légère qui permet de regrouper une application et ses dépendances dans un environnement isolé. Contrairement aux machines virtuelles, qui virtualisent un système d'exploitation entier, les conteneurs partagent le noyau du système d'exploitation hôte, ce qui les rend plus légers et plus rapides à démarrer.
Avantages principaux : portabilité (exécutables sur tout système compatible), efficacité (moins de surcharge), isolation (améliore sécurité et stabilité), scalabilité (facile à mettre à l'échelle).
Différences conteneurs vs machines virtuelles
| Caractéristique | Conteneurs | Machines virtuelles |
|---|---|---|
| Virtualisation | Au niveau OS | Au niveau matériel conteneurs-et-orchestration.pptx.pdf |
| Performance | Plus rapide à démarrer et exécuter | Plus lent conteneurs-et-orchestration.pptx.pdf |
| Ressources | Partage le noyau hôte, moins gourmand | OS complet par VM, plus de ressources conteneurs-et-orchestration.pptx.pdf |
| Isolation | Moins forte, mais suffisante souvent | Plus forte conteneurs-et-orchestration.pptx.pdf |
| Portabilité | Très portable | Moins, dépend de l'hyperviseur conteneurs-et-orchestration.pptx.pdf |
Les conteneurs conviennent aux microservices et déploiements rapides ; les VM aux OS complets ou isolation maximale.
Docker
Docker est une plateforme open-source pour développer, livrer et exécuter des applications dans des conteneurs.
Composants clés : Docker Engine (gère les conteneurs), Docker Images (modèles immuables avec code et dépendances), Docker Containers (instances exécutables), Docker Hub (registre public).
Kubernetes & orchestration
Docker ne peut créer des work loads que sur des nœuds. Si le nœud tombe, le service tombe. Pour gérer les noeuds il faut utiliser docker swarm ou kubernetes. Kubernetes fonctionne en cluster avec un container runtime (docker, cointainer d) qui va créer les containers.
En 2003/2004, Google développe Borg pour orchestrer ses infrastructures internes. Renommer "seven" et améliorer en 2013. Renommer Kubernetes en 2014 et annonce publique. 2015 = release de la v1 et transfert à la CNCF (open source). Il devient leader en 2018, suivi en 2019 par des ajouts de sécurité, renforcement d'automatisation et intégration IA. Depuis 2024, focus sur l'exp utilisateur, l'efficacité énergétique et le multi-cloud.
Kubenetes est donc une plateforme open-source extensible pour la gestion de charges de travail (workload) de services contenreurisés. Elle favorise l'ecriture de conf declarative et l'automatisation. Parfois nommé K8S car 8 lettres en le K et le S. Elle est donc utile pour automatiser le déploiement, la mise à l'échelle et la gestion des applications conteneurisées, souvent avec Docker.
Composants :
- Master Node (gère le cluster : API Server, Scheduler, Controller Manager, etcd)
- Worker Nodes (exécutent les apps : kubelet, kube-proxy, moteur comme Docker)
- Pods (unités minimales, 1+ conteneurs), Services (accès aux pods)
- Volumes (stockage persistant)
Orchestration avec Kubernetes
Kubernetes gère déploiement (via YAML), mise à l'échelle (auto/manuelle, ex. kubectl scale deployment my-app --replicas=5), réseaux/stockage (services, volumes), sécurité/monitoring (Prometheus, politiques). Exemple YAML déploiement : apiVersion: apps/v1, kind: Deployment, replicas: 3, etc
Intégration Docker-Kubernetes
Docker crée/gère images ; Kubernetes orchestre clusters. Étapes : créer image Docker, push vers registre (Docker Hub), YAML Kubernetes, déployer. Bonnes pratiques : images légères, YAML config, monitoring/logging, sécurité.
Cas d'usage
- Déploiement apps web à grande échelle.
- Traitement données (ex. Apache Spark).
- Architectures microservices
Exemple entreprise : image Docker → push Hub → YAML → déploiement auto Kubernetes.
=) Conteneurs : virtualisation légère. Docker : gestion conteneurs. Kubernetes : orchestration. Ensemble pour apps scalables.
=) Ressources : docs officielles Docker/Kubernetes, tutoriels.
principales commandes K8S
kubectl describe <pod>
kubectl logs -f <pod> <conteneur si plusieurs>