Aller au contenu

Content slides

Qu'est-ce que Kubernetes ?

Kubernetes (K8s) est l'orchestrateur de conteneurs devenu le standard de l'industrie

  • Maintenu par la Cloud Native Computing Foundation (CNCF)
  • Permet d'automatiser le déploiement, la gestion et le passage à l'échelle
  • Philosophie déclarative : On définit l'état désiré, K8s se charge de l'atteindre
  • Réconciliation constante entre l'état réel et l'état attendu

Avantages de l'orchestration

  • Self-healing : Redémarre ou remplace automatiquement les conteneurs défaillants
  • Auto-scaling : Adapte le nombre de réplicas en fonction de la charge (HPA)
  • Zero Downtime : Déploiements progressifs (RollingUpdate) sans interruption de service
  • Abstraction : Masque la complexité de l'infrastructure sous-jacente (Cloud ou On-premise)

Architecture - Plan de contrôle (Control Plane)

Le "cerveau" du cluster qui prend les décisions globales :

  • API Server : Hub central du cluster, traite toutes les requêtes (REST)
  • etcd : Base de données clé-valeur (l'unique source de vérité du cluster)
  • Controller Manager : Gère les boucles de contrôle (répliques, nœuds)
  • Scheduler : Affecte les nouveaux Pods aux nœuds selon les ressources disponibles

Architecture - Nœuds de travail (Worker Nodes)

Les machines qui exécutent réellement vos applications :

  • Kubelet : Agent veillant à ce que les conteneurs tournent dans les Pods
  • Kube-proxy : Gère les règles réseau et le load-balancing interne
  • Container Runtime : Logiciel qui lance les conteneurs (containerd, CRI-O)

Objets Kubernetes essentiels

  • Namespaces : Isolation logique (ex : dev, prod, monitoring)
  • Pods : La plus petite unité (un ou plusieurs conteneurs partageant IP et stockage)
  • Deployments : Gère le cycle de vie, les versions et le nombre de réplicas
  • Services : Adresse IP stable et DNS interne pour accéder aux Pods
  • Ingress : Exposition HTTP/HTTPS du cluster vers l'extérieur

Commandes de survie (kubectl)

# Appliquer une configuration (Approche déclarative)
kubectl apply -f deployment.yaml

# Inspecter l'état des ressources
kubectl get pods
kubectl get nodes

# Débugger (Indispensable)
kubectl describe pod <nom>
kubectl logs -f <nom>

# Accès interactif
kubectl exec -it <nom> -- /bin/bash

Conclusion

  • Kubernetes est le socle des infrastructures modernes (Cloud Native)
  • L'approche déclarative permet de gérer des milliers de conteneurs sans effort manuel
  • Maîtriser kubectl et les objets de base est la première étape pour tout SRE

☕️ Si tu souhaites soutenir mon travail, tu peux m'offrir un café ici.