Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Implement horizontal pod autoscaling

Dernière mise à jour :Aug 11, 2026

Configurez HPA pour ajuster automatiquement le nombre de réplicas de pods en fonction du processeur, de la mémoire ou d’autres métriques.

HPA convient aux services dont la demande fluctue, qui nécessitent des mises à l’échelle fréquentes ou qui gèrent de nombreuses charges de travail. Ce scénario est courant dans les secteurs du commerce électronique, de l’enseignement en ligne et des services financiers.

Fonctionnement de HPA

HPA s’exécute sous forme de boucle de contrôle : toutes les 15 secondes, le contrôleur interroge l’API Metrics et compare l’utilisation aux cibles définies. L’API Metrics récupère les données depuis le kubelet toutes les 60 secondes ; par conséquent, HPA évalue effectivement les métriques sur un cycle de 60 secondes.

La formule fondamentale de mise à l’échelle est la suivante :

desiredReplicas = ceil(currentReplicas * (currentMetricValue / desiredMetricValue))

Par exemple, si l’utilisation actuelle du processeur est de 80 % et que la cible est de 50 %, HPA calcule ceil(currentReplicas * 80/50) et ajuste le déploiement. Une bande de tolérance de 10 % évite les oscillations : HPA ne déclenche pas de mise à l’échelle lorsque le ratio se situe à moins de 0,1 de 1,0.

Comportement

Détail

Montée en charge (Scale-out)

Immédiate. HPA augmente le nombre de réplicas dès qu’une métrique dépasse la cible (en tenant compte de la tolérance).

Descente en charge (Scale-in)

Délai d’attente par défaut de 5 minutes pour éviter une réduction prématurée lors de baisses transitoires.

Métriques multiples

HPA déclenche la mise à l’échelle lorsque l’une des métriques spécifiées dépasse son seuil.

Requêtes de ressources obligatoires

HPA calcule l’utilisation selon la formule currentUsage / requests. Sans requêtes de ressources, HPA ne peut pas calculer l’utilisation.

Consultez la section Détails de l’algorithme.

Prérequis

Créer une application activant HPA dans la console ACK

  1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.

  2. Sur la page Clusters, localisez le cluster cible et cliquez sur son nom ou sur Details dans la colonne Actions.

  3. Dans le volet de navigation de gauche, sélectionnez Workloads > Deployments.

  4. Sur la page Deployments, cliquez sur Create from Image.

  5. Sur la page Create, configurez les sections suivantes :

    • Basic Information : Définissez le nom de l’application et le nombre de réplicas.

    • Container : Sélectionnez l’image et spécifiez les ressources CPU et mémoire. > Important : Définissez les requêtes de ressources, sans quoi HPA ne prendra pas effet.

    • Advanced :

      • Dans la section Access Control, cliquez sur Create à côté de Services pour configurer le service.

      • Dans la section Scaling, définissez HPA sur Enable et configurez les paramètres de mise à l’échelle :

        Paramètre

        Description

        Métriques

        Sélectionnez l’utilisation du processeur ou de la mémoire. Le type doit correspondre à celui défini dans les ressources requises. Si les deux sont spécifiés, HPA déclenche la mise à l’échelle lorsque l’une ou l’autre dépasse son seuil.

        Condition

        Seuil d’utilisation des ressources déclenchant la mise à l’échelle.

        Max. Replicas

        Nombre maximal de réplicas. Doit être supérieur au minimum.

        Min. Replicas

        Nombre minimal de réplicas. Entier, au moins 1.

Consultez la rubrique Créer une application sans état à partir d’une image.

Créer une application activant HPA avec kubectl

Cette section utilise un déploiement NGINX pour illustrer la configuration de HPA avec kubectl. Créez un seul HPA par charge de travail.

Étape 1 : Créer un déploiement

Créez un fichier nommé nginx.yml :

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9 # Replace with your actual image_name:tag.
        ports:
        - containerPort: 80
        resources:
          requests:       # Required for HPA to calculate utilization.
            cpu: 500m
Important

Définissez resources.requests pour vos conteneurs. HPA calcule l’utilisation selon la formule currentUsage / requests ; sans requêtes, il ne peut pas déterminer l’utilisation et ne déclenchera pas la mise à l’échelle.

Appliquez le déploiement :

kubectl apply -f nginx.yml

Étape 2 : Créer un HPA

Créez un fichier nommé hpa.yml. Le HPA utilise scaleTargetRef pour cibler le déploiement nginx et déclenche la mise à l’échelle lorsque l’utilisation moyenne du processeur dépasse 50 %.

Pour Kubernetes 1.24 et versions ultérieures (recommandé — utilise autoscaling/v2) :

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: nginx-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: nginx                # Target Deployment name.
  minReplicas: 1               # Minimum replica count. Integer >= 1.
  maxReplicas: 10              # Maximum replica count. Must exceed minReplicas.
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 50 # Target average CPU utilization (percentage of requests).

Pour les versions de Kubernetes antérieures à 1.24 (héritage)

Utilisez autoscaling/v2beta2 à la place :

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: nginx-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: nginx
  minReplicas: 1
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 50
autoscaling/v2beta2 est déprécié dans Kubernetes 1.23 et supprimé dans la version 1.26. Migrez vers autoscaling/v2 dès que possible.

Appliquez le HPA :

kubectl apply -f hpa.yml

(Facultatif) Utiliser plusieurs métriques

Pour effectuer une mise à l’échelle basée à la fois sur le processeur et la mémoire, spécifiez les deux types de ressources dans le champ metrics d’un seul HPA. Ne créez pas de HPA distincts pour chaque métrique. HPA déclenche la mise à l’échelle lorsque n’importe quelle métrique atteint son seuil.

metrics:
- type: Resource
  resource:
    name: cpu
    target:
      type: Utilization
      averageUtilization: 50
- type: Resource
  resource:
    name: memory
    target:
      type: Utilization
      averageUtilization: 50

Vérifier l’état de HPA

Après avoir appliqué le HPA, la collecte initiale des métriques prend quelques instants. Durant cette période, la commande kubectl describe hpa peut afficher des avertissements tels que les suivants :

Warning  FailedGetResourceMetric       2m (x6 over 4m)  horizontal-pod-autoscaler  missing request for cpu on container nginx in pod default/nginx-deployment-basic-75675f5897-mqzs7

Warning  FailedComputeMetricsReplicas  2m (x6 over 4m)  horizontal-pod-autoscaler  failed to get cpu utilization: missing request for cpu on container nginx in pod default/nginx-deployment-basic-75675f5

Ces avertissements indiquent que HPA est toujours en cours d’initialisation et que les métriques ne sont pas encore disponibles.

Vérifiez l’état de HPA :

kubectl get hpa

Vérifiez les événements de mise à l’échelle :

kubectl describe hpa nginx-hpa

Lorsque HPA fonctionne correctement, la section Events affiche une sortie similaire à celle-ci :

Type    Reason             Age   From                       Message
----    ------             ----  ----                       -------
Normal  SuccessfulRescale  5m6s  horizontal-pod-autoscaler  New size: 1; reason: All metrics below target

Nettoyer les ressources

Pour supprimer les ressources créées dans ce tutoriel :

kubectl delete hpa nginx-hpa
kubectl delete deployment nginx

Étapes suivantes