Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Usando o Horizontal Pod Autoscaling (HPA)

Última atualização: Aug 27, 2026

Ative o Horizontal Pod Autoscaler (HPA) para dimensionar seus pods automaticamente com base na utilização de cpu, no uso de memória ou em métricas personalizadas. O HPA aumenta o número de réplicas de pods para lidar com picos de tráfego e reduz essa quantidade durante períodos ociosos, economizando recursos automaticamente. Esse recurso é ideal para aplicações com cargas de trabalho flutuantes que exigem dimensionamento frequente, como plataformas de e-commerce, serviços de educação online e aplicações financeiras.

Antes de começar

Para usar o HPA eficazmente, recomendamos ler a documentação oficial do Kubernetes sobre Horizontal Pod Autoscaling para compreender seus princípios fundamentais, algoritmos e comportamentos de dimensionamento configuráveis.

Além disso, os clusters do Alibaba Cloud Container Service for Kubernetes (ACK) oferecem diversas soluções de dimensionamento de carga de trabalho (elasticidade da camada de agendamento) e dimensionamento de nós (elasticidade da camada de recursos). Antes de prosseguir, leia Auto scaling para entender os casos de uso e as limitações de cada solução.

Pré-requisitos

Criar uma aplicação HPA no console

O ACK integra-se nativamente ao HPA, permitindo criar aplicações habilitadas para HPA diretamente pelo console. Ative o HPA ao criar uma nova aplicação ou em uma aplicação existente. Recomendamos criar apenas um HPA por carga de trabalho.

Ativar o HPA ao criar uma aplicação

O exemplo a seguir usa um Deployment para demonstrar como ativar o HPA durante a criação de uma aplicação. Os passos para outros tipos de carga de trabalho são semelhantes.

  1. Faça login no console ACK. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Workloads > Deployments.

  3. Na página Deployments, clique em Create from Image.

  4. Na página Create, siga as instruções na tela para configurar as informações básicas da aplicação, os contêineres, os services e o dimensionamento, criando assim um Deployment compatível com HPA.

    Para etapas detalhadas e descrições dos parâmetros, consulte Create a stateless workload (Deployment). A seção a seguir descreve apenas os parâmetros principais.

    • Basic Information: Configure as definições da aplicação, como nome e número de réplicas.

    • Container: Configure a imagem e os recursos necessários de cpu e memória.

      O recurso de perfilamento de recursos analisa o uso histórico e fornece recomendações para configurar Requests e Limits dos contêineres. Para mais informações, consulte Resource profiling.

      Importante

      Defina Requests de recursos para a aplicação a fim de habilitar o HPA.

    • Advanced Settings:

      • Na seção Scaling, marque a opção HPA Enable e configure as condições e os parâmetros de dimensionamento.

        • Metric: As métricas suportadas são cpu e memória. A métrica deve corresponder ao tipo de recurso solicitado. Se ambos os tipos (cpu e memória) forem especificados, o HPA executará o dimensionamento quando qualquer uma das métricas atingir seu limiar.

        • Trigger Condition: Limiar de utilização de recursos, definido em porcentagem. Quando a utilização excede esse valor, ocorre o scale out dos contêineres. Para detalhes sobre o algoritmo do Horizontal Pod Autoscaling, consulte Detalhes do algoritmo.

        • Max. Replicas: Número máximo de réplicas para scale out do Deployment. Este valor deve ser superior ao número mínimo de réplicas.

        • Min. Replicas: Quantidade mínima de réplicas do Deployment. O valor deve ser um número inteiro maior ou igual a 1.

    Após a conclusão, visualize o Deployment criado na página Deployments. Clique no nome do Deployment e, na página de detalhes, acesse a aba Pod Scaling. Nesta seção, visualize métricas relacionadas à atividade do HPA, como utilização de cpu ou memória e limites de réplicas. Gerencie o HPA atualizando sua configuração ou desativando-o.

Ativar o HPA para uma aplicação existente

Este exemplo demonstra como habilitar o HPA em um Deployment existente. O procedimento para outros tipos de carga de trabalho é similar.

Página de Cargas de Trabalho

  1. Faça login no console ACK. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Workloads > Deployments.

  3. Na página Deployments, clique no nome da aplicação desejada, selecione a aba Pod Scaling e clique em Create na área do HPA.

  4. Na caixa de diálogo Create, configure as definições de dimensionamento conforme as instruções na página.

    • Name: Nome da política de HPA.

    • Metric: Clique em Add.

      • Metric Name: Suporta cpu e memória. A métrica deve corresponder ao tipo de recurso configurado. Ao especificar ambos (cpu e memória), o HPA acionará o dimensionamento assim que qualquer uma das métricas atingir o limiar definido.

      • Threshold: Porcentagem de utilização de recursos acima da qual os contêineres iniciam o scale out. Para mais detalhes sobre o algoritmo do Horizontal Pod Autoscaling, consulte Detalhes do algoritmo.

  • Max. Containers: Quantidade máxima de réplicas para scale out do Deployment. Deve ser superior ao número mínimo de réplicas.

  • Min. Containers: Número mínimo de contêineres para scale down do Deployment. O valor deve ser um inteiro maior ou igual a 1.

Após concluir a configuração, clique no nome do Deployment na página Stateless Application e acesse a aba Pod Scaling nos detalhes do Deployment. Nessa área, visualize métricas da atividade do HPA, como utilização de cpu/memória e limites de réplicas. Gerencie o HPA atualizando configurações ou desativando-o.

Página de Dimensionamento de Carga de Trabalho

Nota

Esta página está disponível apenas para usuários incluídos na lista de permissões. Para solicitar acesso, envie um ticket.

  1. Faça login no console ACK. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Workload Scaling.

  3. No canto superior direito da página, clique em Create Auto Scaling e selecione a aba HPA and CronHPA. Escolha a carga de trabalho alvo e, na seção Configure Auto Scaling Policy, selecione HPA e configure a política conforme as instruções.

    • Scaling Policy Name: Nome da política de HPA.

    • Min. Containers: Quantidade mínima de réplicas para a carga de trabalho. Deve ser um número inteiro maior ou igual a 1.

    • Max. Containers: Limite máximo de contêineres para scale out da carga de trabalho. Este valor precisa ser maior que o mínimo de réplicas.

    • Metric Name: Métricas suportadas incluem cpu, GPU, memória, requisições do Nginx Ingress e métricas personalizadas. O tipo de métrica deve corresponder ao recurso especificado. Se múltiplas métricas forem definidas, o Horizontal Pod Autoscaler (HPA) realizará o dimensionamento quando qualquer uma delas atingir o limiar.

    • Threshold: Porcentagem de utilização de recursos. Se a utilização ultrapassar esse valor, os contêineres iniciarão o scale out. Para mais informações sobre o algoritmo do Horizontal Pod Autoscaling, consulte Detalhes do algoritmo.

Após a criação, visualize a lista de HPAs na página Workload Scaling. Na coluna Actions, verifique métricas de atividade do HPA, como utilização de recursos e limites de réplicas. Gerencie o HPA atualizando configurações ou desativando-o.

Verificar os resultados

  1. Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Workload Scaling.

  2. Selecione a aba Horizontal Scaling e escolha HPA para visualizar o status de dimensionamento e a lista de tarefas.

Nota

Em ambientes de produção, a aplicação dimensiona com base na carga dos pods. Em ambientes de teste, execute testes de estresse nos pods para validar o comportamento de dimensionamento horizontal.

Criar uma aplicação HPA usando kubectl

Use um modelo de orquestração para criar manualmente um HPA e vinculá-lo ao Deployment alvo. Recomendamos criar apenas um HPA por carga de trabalho. Este exemplo mostra como implantar uma aplicação Nginx com suporte a HPA.

  1. Crie um arquivo chamado nginx.yml e copie o conteúdo abaixo para ele.

    Importante

    Para implementar o HPA, defina recursos de request para o Pod. Caso contrário, o HPA não funcionará. Utilize o recurso de perfilamento de recursos para analisar dados históricos de uso e obter recomendações de Requests e Limits para os contêineres. Para mais informações, consulte Resource profiling.

    Modelo yaml

    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:tags>.
            ports:
            - containerPort: 80
            resources:
              requests:         # You must set requests. Otherwise, HPA cannot calculate metrics, and the status will be 'unknown'.
                cpu: 500m
  2. Execute o comando a seguir para criar a aplicação Nginx.

    kubectl apply -f nginx.yml
  3. Crie um arquivo chamado hpa.yml e copie o conteúdo seguinte para criar o HPA.

    Use scaleTargetRef para especificar o objeto alvo do HPA. Neste exemplo, o HPA está vinculado a um Deployment chamado nginx e dispara o dimensionamento quando a utilização média de cpu dos contêineres em todos os Pods atinge 50%.

    Kubernetes 1.24 e posteriores

    apiVersion: autoscaling/v2
    kind: HorizontalPodAutoscaler
    metadata:
      name: nginx-hpa
    spec:
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: nginx
      minReplicas: 1  # The minimum number of replicas for the Deployment. Must be an integer greater than or equal to 1.
      maxReplicas: 10  # The maximum number of replicas for the Deployment. Must be greater than minReplicas.
      metrics:
      - type: Resource
        resource:
          name: cpu
          target:
            type: Utilization
            averageUtilization: 50 # The target average resource utilization, which is the ratio of average resource usage to the requested resource amount.
                   

    Kubernetes anterior à versão 1.24

    apiVersion: autoscaling/v2beta2
    kind: HorizontalPodAutoscaler
    metadata:
      name: nginx-hpa
    spec:
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: nginx
      minReplicas: 1  # Must be an integer greater than or equal to 1.
      maxReplicas: 10  # Must be greater than the minimum number of replicas.
      metrics:
      - type: Resource
        resource:
          name: cpu
          target:
            type: Utilization
            averageUtilization: 50
                   

    Se precisar especificar métricas de cpu e memória simultaneamente, defina ambos os tipos de recurso cpu e memory no campo metrics em vez de criar dois HPAs separados. O HPA executará o dimensionamento quando detectar que qualquer uma das métricas atingiu o limiar.

    metrics:
      - type: Resource
        resource:
          name: cpu
          target:
            type: Utilization
            averageUtilization: 50
      - type: Resource
        resource:
          name: memory
          target:
            type: Utilization
            averageUtilization: 50
  4. Execute o comando abaixo para criar o HPA.

    kubectl apply -f hpa.yml

    Neste momento, execute o comando kubectl describe hpa <HPA name>. Neste exemplo, o nome do HPA é nginx-hpa. A saída esperada é a mensagem de aviso a seguir, indicando que o HPA ainda está sendo implantado. Use o comando kubectl get hpa para verificar o status do HPA.

    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
  5. Depois que o HPA for criado e o Pod atender às condições de dimensionamento (neste exemplo, utilização de cpu do Pod Nginx superior a 50%), execute novamente o comando kubectl describe hpa <HPA-name> para visualizar o status do dimensionamento horizontal.

    A saída a seguir indica que o HPA está operando corretamente.

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

Operações relacionadas

Se o comportamento padrão de dimensionamento não atender aos requisitos do seu negócio, utilize o campo behavior para configurar as ações de scale-down (scaleDown) e scale-up (scaleUp) com maior granularidade. Para mais informações, consulte Comportamento de dimensionamento configurável.

Cenários típicos para uso do campo behavior incluem, mas não se limitam a:

  • Scale out rápido durante picos repentinos de tráfego.

  • Scale out rápido combinado com scale in lento para cargas de trabalho com flutuações frequentes.

  • Desativação do scale-in para aplicações sensíveis a estado.

  • Uso da janela de estabilização stabilizationWindowSeconds em cenários com recursos limitados ou sensíveis a custos, restringindo a taxa de scale out para reduzir ajustes frequentes causados por flutuações temporárias.

Para descrições e exemplos da configuração de behavior, consulte Tune HPA scaling sensitivity.

FAQ

Documentação relacionada

Outras operações relacionadas

Outras soluções de dimensionamento de carga de trabalho

  • Se sua aplicação apresenta padrões periódicos de uso de recursos e você precisa dimensionar pods com base em uma programação, consulte Use CronHPA for scheduled horizontal scaling.

  • Quando o uso de recursos da aplicação tiver variações cíclicas difíceis de definir por regras, utilize o AHPA para identificar automaticamente padrões de carga de trabalho com base em métricas históricas e realizar o auto scaling de Pods. Para mais informações, consulte Auto Scaling Prediction (AHPA).

  • Para definir limites de recursos automaticamente para pods com base no uso real, consulte Use Vertical Pod Autoscaler (VPA).

  • Para criar políticas de dimensionamento flexíveis baseadas em eventos de filas de mensagens, programações ou métricas personalizadas, consulte Event-driven autoscaling.

Soluções combinadas

Combine o HPA com o recurso de auto scaling de nós para dimensionar automaticamente os nós do cluster quando os recursos forem insuficientes. Para mais informações, consulte Enable node auto scaling.