Horizontal Pod Autoscaler (HPA) ajuste automatiquement le nombre de réplicas de pods en fonction de l'utilisation des ressources. Dans Container Service for Kubernetes (ACK), activez HPA pour vos applications via la console ou kubectl.
Prérequis
Vous avez créé un cluster ACS.
Vous vous êtes connecté à un cluster Kubernetes au moyen de kubectl.
Créer une application avec HPA activé
Via la console
Connectez-vous à la console ACS. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom du cluster cible. Dans le volet de navigation de gauche, choisissez Workloads > Deployments.
Sur la page Deployments, cliquez sur Create from Image.
-
Sur la page , définissez les paramètres de l'application et cliquez sur .
Paramètre
Description
Namespace
Namespace de l'application. La valeur par défaut est
default.Application Name
Nom de l'application.
Replicas
Nombre de pods pour l'application. Valeur par défaut : 2.
Workload
Type de charge de travail. Sélectionnez , , ou .
Labels
Libellé permettant d'identifier l'application.
Annotations
Annotation associée à l'application.
Instance Type
Type d'instance du pod. Choisissez General-purpose, BestEffort ou Performance-enhanced.
-
Sur la page , configurez le conteneur, sélectionnez une image et spécifiez les requêtes de ressources. Cliquez ensuite sur . Pour plus d'informations, consultez Configuration du conteneur.
RemarqueLe HPA requiert la définition de requêtes de ressources pour le Deployment.
Sur la page Advanced, dans la section Access Control, cliquez sur en regard de Service, puis configurez les paramètres du Service. Pour plus d'informations, consultez Configurations avancées.
-
Toujours sur la page Advanced, sélectionnez Enable pour HPA et configurez les paramètres de mise à l'échelle.
Metric : Les métriques prises en charge sont le CPU et la mémoire. Ce paramètre doit correspondre au type de ressource requis configuré.
Condition: : Pourcentage d'utilisation des ressources. Le conteneur scale out lorsque l'utilisation dépasse cette valeur. Pour plus d'informations sur l'algorithme Horizontal Pod Autoscaling, consultez Détails de l'algorithme.
Max. Replicas : Nombre maximal de conteneurs que le Deployment peut exécuter.
Min. Replicas : Limite inférieure du nombre de réplicas.
Cliquez sur pour créer le Deployment avec HPA activé.
Via kubectl
Utilisez également un modèle d'orchestration et kubectl pour créer un objet HPA et l'associer à un Deployment.
L'exemple suivant utilise une application NGINX.
-
Créez un fichier nommé nginx.yaml et copiez-y le contenu suivant.
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: registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/nginx:1.7.9 # Replace with your image name and tag ports: - containerPort: 80 resources: requests: ## Required for HPA to function. cpu: 500m -
Exécutez la commande suivante pour déployer l'application NGINX.
kubectl apply -f nginx.yaml -
Créez un fichier
hpa.yamlcontenant les éléments suivants afin de définir le HPA.Le champ scaleTargetRef indique la ressource concernée par la mise à l'échelle HPA. Dans cet exemple, il cible le Deployment nginx.
apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: nginx-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: nginx minReplicas: 1 # The minimum replica count. Must be >= 1. maxReplicas: 10 # The maximum replica count. Must be > minReplicas. metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 50 # The target average utilization across all pods, calculated as (average usage / requested amount). -
Exécutez la commande ci-dessous pour créer le HPA.
kubectl apply -f hpa.yaml -
Une fois le HPA créé, exécutez
kubectl describe hpa <HPA_NAME>.La sortie suivante confirme le bon fonctionnement du HPA.
Type Reason Age From Message ---- ------ ---- ---- ------- Normal SuccessfulRescale 4m53s horizontal-pod-autoscaler New size: 1; reason: All metrics below target
Informations connexes
Pour la mise à l'échelle automatique planifiée, consultez Cron Horizontal Pod Autoscaler (CronHPA).