DevOpsFacile
AccueilParcours de formationCertificationsModulesCheat SheetÀ Propos
DevOpsFacile

Une plateforme d'apprentissage complète pour maîtriser les pratiques DevOps modernes, du débutant à l'expert.

contact@devopsfacile.fr

Formation

  • Parcours de formation
  • Modules

Informations

  • À Propos
  • Conditions d'utilisation
  • Confidentialité
  • Mentions légales

© 2026 DevOps Facile. Tous droits réservés.

Fait avec pour la communauté DevOps

ModulesKubernetes en production : Deployments, Ingress et Secrets05 - Mettre en place l'auto-scaling horizontal (HPA)

Détails

  • 30 minutes
  • Avancé

Objectifs

  • Activer metrics-server dans minikube
  • Créer un HPA depuis la CLI et depuis un manifest YAML
  • Simuler une charge pour observer le scaling automatique
  • Comprendre les métriques CPU et les seuils de déclenchement
Module Kubernetes en production : Deployments, Ingress et Secrets

Exercice 05 : Mettre en place l'auto-scaling horizontal (HPA)

🎯 Objectifs

À la fin de cet exercice, vous serez capable de :

  • ✅ Activer metrics-server dans minikube
  • ✅ Créer un HPA avec kubectl autoscale
  • ✅ Définir un HPA via manifest YAML avec seuil CPU
  • ✅ Simuler une charge et observer le scaling automatique

Durée estimée : 30 minutes

Difficulté : ⭐⭐⭐⭐☆ (Avancé)

Prérequis : minikube démarré, metrics-server activé, exercice 04 terminé


📖 Contexte

Le Horizontal Pod Autoscaler (HPA) ajuste automatiquement le nombre de réplicas d'un Deployment en fonction des métriques (CPU, mémoire, ou métriques custom). C'est un mécanisme clé pour absorber les pics de charge sans intervention manuelle.


📋 Énoncé

Vous allez déployer une application PHP-Apache, configurer un HPA qui scale entre 1 et 10 réplicas selon l'utilisation CPU, puis générer de la charge pour observer le scaling en action.

Résultat attendu :

  • Un HPA actif qui ajoute des pods sous charge
  • Observation du scale-down après retour au calme

🧭 Déroulement de l'exercice

Tâche 1 : Activer metrics-server et vérifier

Activez l'addon metrics-server de minikube et vérifiez que kubectl top nodes fonctionne.

Indice : minikube addons enable metrics-server. Attendre 1-2 minutes que les métriques soient collectées.

Vérification : kubectl top nodes affiche la consommation CPU/mémoire sans erreur.


Tâche 2 : Déployer l'application cible

Déployez le manifest php-apache.yaml (fourni en solution) qui inclut les resources.requests.cpu obligatoires pour le HPA.

Indice : Le HPA calcule le pourcentage d'utilisation CPU par rapport aux requests.cpu. Sans requests, le HPA ne peut pas fonctionner.

Vérification : kubectl get deployment php-apache affiche 1/1 READY.


Tâche 3 : Créer le HPA avec kubectl autoscale

Créez un HPA pour php-apache avec un minimum de 1 réplica, un maximum de 10, et un seuil à 50% CPU.

Indice : kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10

Vérification : kubectl get hpa affiche php-apache avec les paramètres configurés. La colonne TARGETS montre <unknown> puis se met à jour.


Tâche 4 : Simuler une charge CPU

Depuis un pod busybox séparé, générez des requêtes HTTP en boucle vers le service php-apache.

Indice : kubectl run load-generator --image=busybox --restart=Never -it -- sh -c "while true; do wget -q -O- http://php-apache; done"

Vérification : Dans un autre terminal, kubectl get hpa -w montre l'utilisation CPU monter et le nombre de réplicas augmenter.


Tâche 5 : Observer le scale-down

Arrêtez le générateur de charge (Ctrl+C) et observez le HPA réduire le nombre de réplicas après le cool-down (environ 5 minutes par défaut).

Indice : Le scale-down est intentionnellement lent (5 min) pour éviter le "flapping". kubectl describe hpa php-apache montre les events de scaling.

Vérification : kubectl get hpa -w affiche le retour à 1 réplica après le cool-down.


🗂️ Mini-Projet : HPA avec manifest YAML

Définissez le HPA en YAML plutôt qu'avec la CLI impérative pour une gestion GitOps.

yaml
# hpa-manifest.yaml
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: php-apache-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: php-apache
  minReplicas: 1
  maxReplicas: 10
  metrics:
    - type: Resource
      resource:
        name: cpu
        target:
          type: Utilization
          averageUtilization: 50

Checkpoints :

  • kubectl top nodes et kubectl top pods fonctionnent
  • kubectl get hpa php-apache-hpa affiche les seuils configurés
  • Sous charge, kubectl get hpa -w montre le nombre de réplicas augmenter
  • kubectl describe hpa php-apache-hpa liste les events de scaling (ScalingReplicaSet)
  • Après l'arrêt de la charge, le nombre de réplicas redescend à 1

Retour au module

Sur cette page

  • 🎯 Objectifs
  • 📖 Contexte
  • 📋 Énoncé
  • 🧭 Déroulement de l'exercice
  • Tâche 1 : Activer metrics-server et vérifier
  • Tâche 2 : Déployer l'application cible
  • Tâche 3 : Créer le HPA avec kubectl autoscale
  • Tâche 4 : Simuler une charge CPU
  • Tâche 5 : Observer le scale-down
  • 🗂️ Mini-Projet : HPA avec manifest YAML