Faites évoluer les déploiements de pods avec Horizontal Pod Autoscaler - Amazon EKS

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Faites évoluer les déploiements de pods avec Horizontal Pod Autoscaler

Le Kubernetes Horizontal Pod Autoscaler redimensionne automatiquement le nombre de Pods dans un déploiement, un contrôleur de réplication ou un ensemble de répliques en fonction de CPU l'utilisation de cette ressource. Cela peut permettre à vos applications de monter en puissance pour répondre à une demande accrue ou de baisser en puissance lorsque les ressources ne sont pas nécessaires, libérant ainsi vos nœuds pour d'autres applications. Lorsque vous définissez un pourcentage d'CPUutilisation cible, l'Horizontal Pod Autoscaler fait évoluer votre application pour essayer d'atteindre cet objectif.

Le Horizontal Pod Autoscaler est une API ressource standard dans Kubernetes qui nécessite simplement qu'une source de métriques (telle que Kubernetes metrics (serveur) est installé sur votre EKS cluster Amazon pour fonctionner. Il n'est pas nécessaire de déployer ou d'installer le Horizontal Pod Autoscaler sur votre cluster pour commencer à dimensionner vos applications. Pour plus d'informations, voir Horizontal Pod Autoscaler dans le Kubernetes .

Utilisez cette rubrique pour préparer le Horizontal Pod Autoscaler pour votre EKS cluster Amazon et pour vérifier qu'il fonctionne avec un exemple d'application.

Note

Cette rubrique est basée sur la procédure pas à pas du scaler automatique Horizontal Pod dans le Kubernetes .

Exécution d'une application de test du Horizontal Pod Autoscaler

Dans cette section, vous déployez un exemple d'application pour vérifier que Horizontal Pod Autoscale) fonctionne.

Note

Cet exemple est basé sur la procédure pas à pas du scaler automatique Horizontal Pod dans le Kubernetes .

  1. Déployez une application simple de serveur web Apache avec la commande suivante.

    kubectl apply -f https://k8s.io/examples/application/php-apache.yaml

    Ce serveur Web Apache Pod reçoit une CPU limite de 500 millicpu et il est utilisé sur le port 80.

  2. Créez une ressource Horizontal Pod Autoscaler pour le déploiement php-apache.

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

    Cette commande crée un autoscaler qui cible 50 % CPU d'utilisation pour le déploiement, avec un minimum d'un Pod et un maximum de dix Pods. Lorsque la CPU charge moyenne est inférieure à 50 %, l'autoscaler essaie de réduire le nombre de Pods dans le déploiement, jusqu'à un minimum. Lorsque la charge est supérieure à 50 %, l'autoscaler essaie d'augmenter le nombre de Pods dans le déploiement, jusqu'à un maximum de dix. Pour plus d'informations, voir Comment HorizontalPodAutoscaler fonctionne un dans le Kubernetes .

  3. Décrivez l'autoscaler avec la commande suivante pour en afficher les détails.

    kubectl get hpa

    L'exemple qui suit illustre un résultat.

    NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE php-apache Deployment/php-apache 0%/50% 1 10 1 51s

    Comme vous pouvez le constater, la CPU charge actuelle est 0% due au fait qu'il n'y a pas encore de charge sur le serveur. Le Pod le nombre est déjà à sa limite la plus basse (un), il ne peut donc pas être redimensionné.

  4. Créez une charge pour le serveur Web en exécutant un conteneur.

    kubectl run -i \ --tty load-generator \ --rm --image=busybox \ --restart=Never \ -- /bin/sh -c "while sleep 0.01; do wget -q -O- http://php-apache; done"
  5. Pour observer l'augmentation du déploiement, exécutez régulièrement la commande suivante dans un terminal distinct de celui dans lequel vous avez exécuté l'étape précédente.

    kubectl get hpa php-apache

    L'exemple qui suit illustre un résultat.

    NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE php-apache Deployment/php-apache 250%/50% 1 10 5 4m44s

    L'augmentation du nombre de réplicas peut prendre plus d'une minute. Tant que le CPU pourcentage réel est supérieur au pourcentage cible, le nombre de répliques augmente jusqu'à 10. Dans ce cas, c'est le cas250%, donc le nombre REPLICAS continue d'augmenter.

    Note

    L'atteinte du nombre de réplicas maximum peut prendre un certain temps. Si seulement 6 répliques, par exemple, sont nécessaires pour que la CPU charge reste égale ou inférieure à 50 %, la charge ne dépassera pas 6 répliques.

  6. Arrêtez la charge. Dans la fenêtre du terminal dans laquelle vous générez le chargement, arrêtez le chargement en maintenant les Ctrl+C touches enfoncées. Vous pouvez voir les répliques revenir à 1 en exécutant à nouveau la commande suivante dans le terminal dans lequel vous observez la mise à l'échelle.

    kubectl get hpa

    L'exemple qui suit illustre un résultat.

    NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE php-apache Deployment/php-apache 0%/50% 1 10 1 25m
    Note

    Le délai par défaut pour la réduction est de cinq minutes. Il faudra donc un certain temps avant que le nombre de répliques atteigne à nouveau 1, même si le CPU pourcentage actuel est de 0 %. Le délai est modifiable. Pour plus d'informations, voir Horizontal Pod Autoscaler dans le Kubernetes .

  7. Lorsque vous avez terminé de tester votre exemple d'application, supprimez les ressources php-apache.

    kubectl delete deployment.apps/php-apache service/php-apache horizontalpodautoscaler.autoscaling/php-apache