Presentation¶
Table des Matières¶
Introduction Ă Kubernetes¶
Pourquoi Kubernetes ?¶
Kubernetes est une plateforme open-source qui automatise : - Le déploiement d'applications conteneurisées - La mise à l'échelle (scaling) - La gestion des applications distribuées
Avantages principaux : - Haute disponibilité - Scalabilité automatique - Gestion simplifiée des applications complexes
Objectifs de cette documentation¶
- Comprendre les concepts fondamentaux
- Installer un cluster Kubernetes
- Déployer et gérer des applications
- Pratiquer avec des exercices concrets
Concepts ClĂ©s¶
Architecture du Cluster¶
- Nœud Maître (Master) : Orchestre le cluster (API Server, Scheduler, Controller Manager)
- Nœuds Travailleurs (Workers) : Exécutent les applications (kubelet, kube-proxy)
Composants Principaux¶
| Composant | Description |
|---|---|
| Pod | Plus petite unité exécutable (1+ conteneurs) |
| Deployment | Gère le cycle de vie des applications |
| Service | Point d'accès réseau stable aux Pods |
| ConfigMap/Secret | Gestion de configuration et données sensibles |
| Ingress | Routeur HTTP pour accès externe |
| PersistentVolume | Stockage persistant pour les données |
PrĂ©requis¶
Configuration MatĂ©rielle¶
| RĂ´le | CPU | RAM | Stockage |
|---|---|---|---|
| Master | 2 cœurs | 2GB | 20GB |
| Worker | 1 cœur/Pod | 1GB/Pod | Variable |
Configuration Logicielle¶
- Runtime conteneur (Docker, containerd)
- Kubernetes v1.25+
- Swap désactivé (
sudo swapoff -a)
Configuration RĂ©seau¶
- Ports ouverts : 6443 (API), 10250 (kubelet)
- Connectivité entre tous les nœuds
Installation¶
Étapes d'Installation avec kubeadm¶
-
Préparation du système :
sudo apt update && sudo apt upgrade -y -
Installation des dépendances :
sudo apt install -y apt-transport-https curl gnupg -
Ajout du dépôt Kubernetes :
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.33/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.33/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list -
Installation des composants :
sudo apt update sudo apt install -y kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl -
Initialisation du cluster :
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 -
Configuration du réseau :
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml -
Ajout des workers :
kubeadm join <MASTER_IP>:6443 --token <TOKEN> --discovery-token-ca-cert-hash sha256:<HASH>
Usage Basique¶
Commandes Essentielles¶
| Commande | Description |
|---|---|
kubectl apply -f fichier.yaml |
Déploie une ressource |
kubectl get pods |
Liste les Pods |
kubectl describe pod <nom> |
Affiche les détails d'un Pod |
kubectl logs <pod> |
Affiche les logs |
kubectl exec -it <pod> -- bash |
Ouvre un shell dans un Pod |
Exemple de DĂ©ploiement¶
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
Bonnes Pratiques¶
- Un conteneur par Pod en général
- Utiliser des labels cohérents
- Configurer des probes (liveness/readiness)
- Gérer les secrets avec l'objet Secret