O Horizontal Pod Autoscaler (HPA) ajusta automaticamente o número de réplicas de pods com base na utilização de recursos. No Container Service for Kubernetes (ACK), você pode ativar o HPA para aplicações usando o console ou o kubectl.
Pré-requisitos
Crie uma aplicação com HPA ativado
Usar o console
Faça login no console do ACS. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do cluster desejado. No painel de navegação à esquerda, escolha Workloads > Deployments.
Na página Deployments, clique em Create from Image.
-
Na página Basic Information, defina os parâmetros da aplicação e clique em Next.
Parâmetro
Descrição
Namespace
Namespace da aplicação. O padrão é
default.Application Name
Nome da aplicação.
Replicas
Número de pods da aplicação. Padrão: 2.
Workload
Tipo de workload. Selecione Deployments, StatefulSets, Jobs ou CronJobs.
Labels
Rótulo para identificar a aplicação.
Annotations
Anotação da aplicação.
Instance Type
Tipo de instância do pod. Escolha General-purpose, BestEffort ou Performance-enhanced.
-
Na página Container, configure o container, selecione uma imagem e especifique as solicitações de recursos. Em seguida, clique em Next. Para mais informações, consulte Configuração do container.
NotaO HPA exige a especificação de solicitações de recursos para o Deployment.
Na página Advanced, na seção Access Control, clique em Create ao lado de Service e configure os parâmetros do Service. Para mais informações, consulte Configurações avançadas.
-
Na página Advanced, selecione Enable para HPA e configure os parâmetros de dimensionamento.
Metric: Métricas suportadas: CPU e memória. Devem corresponder ao tipo de recurso obrigatório configurado.
Condition:: Percentual de utilização de recursos. O container realiza scale-out quando a utilização ultrapassa esse valor. Para mais informações sobre o algoritmo do Horizontal Pod Autoscaler, consulte Detalhes do algoritmo.
Max. Replicas: Número máximo de containers que o Deployment pode executar.
Min. Replicas: Limite inferior para o número de réplicas.
Clique em Create para criar o Deployment com HPA ativado.
Usar kubectl
Você também pode usar um modelo de orquestração e o kubectl para criar um objeto HPA e vinculá-lo a um Deployment.
O exemplo a seguir usa uma aplicação NGINX.
-
Crie um arquivo chamado nginx.yaml e copie o conteúdo abaixo para ele.
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 -
Execute o comando a seguir para implantar a aplicação NGINX.
kubectl apply -f nginx.yaml -
Crie um arquivo
hpa.yamlcom o conteúdo a seguir para definir o HPA.O campo scaleTargetRef especifica o recurso que o HPA dimensionará. Neste exemplo, o alvo é o 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). -
Execute o comando a seguir para criar o HPA.
kubectl apply -f hpa.yaml -
Após criar o HPA, execute
kubectl describe hpa <HPA_NAME>.A saída a seguir indica que o HPA funciona corretamente.
Type Reason Age From Message ---- ------ ---- ---- ------- Normal SuccessfulRescale 4m53s horizontal-pod-autoscaler New size: 1; reason: All metrics below target
Informações relacionadas
Para dimensionamento automático agendado, consulte Cron Horizontal Pod Autoscaler (CronHPA).