Login
Login

Cluster Proportional Autoscaler

Atualizado em 11 de February de 2026

O Cluster Proportional Autoscaler (CPA) é um controlador que ajusta automaticamente a escala de um deployment específico com base no número de nodes no cluster. Ele é especialmente útil quando um serviço precisa estar disponível em todos os nodes ou deve escalar proporcionalmente aos recursos totais do cluster.

Ao contrário de autoscalers tradicionais, o CPA não depende de métricas de carga. Em vez disso, utiliza fórmulas proporcionais definidas manualmente.

Modos de operação

O CPA suporta dois modos para calcular o número de réplicas:

Modo linear

No modo linear, o número de réplicas é calculado com a seguinte fórmula:

replicas = max(min, min(max, cores / coresPorReplica, nodes / nodesPorReplica))

Você pode usar ambos os parâmetros (coresPerReplica e nodesPerReplica) ou apenas um. Os valores min e max definem os limites inferior e superior para o número de réplicas.

Exemplo de configuração:

config:
  linear:
    coresPerReplica: 2
    nodesPerReplica: 1
    min: 2
    max: 20
    preventSinglePointFailure: true
    includeUnschedulableNodes: true

Neste exemplo:

  • Um pod é criado por node
  • Um pod adicional é criado a cada 2 núcleos de CPU
  • Sempre pelo menos 2 pods, máximo de 20
  • Se houver apenas um node, 2 pods serão criados para evitar ponto único de falha
  • Nodes não agendáveis também são considerados

Modo ladder

No modo ladder, o número de réplicas é definido explicitamente usando uma tabela de consulta. Isso é útil quando você precisa de um número exato de pods para determinados tamanhos de cluster.

Exemplo de configuração:

config:
  ladder:
    coresToReplicas:
      - [ 1, 1 ]
      - [ 64, 3 ]
      - [ 512, 5 ]
      - [ 1024, 7 ]
      - [ 2048, 10 ]
    nodesToReplicas:
      - [ 1, 1 ]
      - [ 2, 2 ]
      - [ 5, 3 ]

Neste exemplo:

  • Com 1 node → 1 pod
  • Com 2 nodes → 2 pods
  • Com 5 ou mais nodes → 3 pods
  • Núcleos de CPU também são considerados:
    • 64 cores → 3 pods
    • 2048 cores → 10 pods

Instalar via painel de controle

Para instalar o Cluster Proportional Autoscaler:

  1. Vá para a seção Kubernetes e clique no cluster.
  2. Na aba Complementos, clique em Cluster Proportional Autoscaler.
  3. No assistente de instalação, ajuste a configuração editando o manifest na seção Configuração.

Por padrão, o autoscaler é configurado para escalar o metrics-server no namespace kube-system usando o modo linear, criando um pod por node:

config:
  linear:
    coresPerReplica: 1
    nodesPerReplica: 1
    min: 1
    max: 100
    preventSinglePointFailure: true
    includeUnschedulableNodes: true

options:
  logToStdErr: true
  logLevel: 7
  namespace: kube-system
  target: deployment/metrics-server

Se quiser escalar um serviço diferente, por exemplo, nginx no namespace default, altere os parâmetros target e namespace antes da instalação.

Para mudar modos de escala ou parâmetros, edite a seção config. Por exemplo, você pode descomentar os parâmetros do modo ladder e utilizá-lo em vez do linear.

Ao instalar via interface web, apenas um recurso alvo pode ser especificado usando o parâmetro target.

 

Se quiser escalar múltiplos recursos, como metrics-server e coredns, é necessário usar a instalação manual com múltiplas instâncias do autoscaler.

Instalar manualmente

Para maior flexibilidade ou múltiplos autoscalers para diferentes serviços, utilize o Helm.

Passo 1: Adicionar repositório Helm

helm repo add cluster-proportional-autoscaler https://kubernetes-sigs.github.io/cluster-proportional-autoscaler

Isso adiciona uma fonte externa de onde o autoscaler pode ser instalado.

Passo 2: Atualizar lista de charts

helm repo update

Passo 3: Criar arquivo values.yaml com o seguinte conteúdo:

config:
  linear:
    coresPerReplica: 1
    nodesPerReplica: 1
    min: 1
    max: 100
    preventSinglePointFailure: true
    includeUnschedulableNodes: true

options:
  logToStdErr: true
  logLevel: 7
  namespace: kube-system
  target: deployment/metrics-server

serviceAccount:
  create: true

Esta configuração:

  • Usa o modo linear, criando um pod por node (nodesPerReplica: 1)
  • Limita as réplicas entre 1 e 100
  • Habilita preventSinglePointFailure (adiciona um pod extra se houver apenas um node)
  • Inclui nodes não agendáveis nos cálculos
  • Especifica o deployment e namespace alvo
  • Cria automaticamente uma service account com permissões necessárias

Passo 4: Instalar o autoscaler com Helm

helm upgrade --install metrics-autoscaler cluster-proportional-autoscaler/cluster-proportional-autoscaler --values values.yaml

Passo 5: Verificar se o pod está em execução

kubectl get pods -n kube-system

Escalar múltiplos serviços

Com a instalação manual, é possível rodar múltiplas instâncias independentes do autoscaler para diferentes serviços.

Para isso:

  1. Crie um arquivo separado values-nginx.yaml
  2. Atualize os parâmetros target e namespace para o deployment (por exemplo, nginx no namespace default)
  3. Instale usando um nome de release diferente:
helm upgrade --install nginx-autoscaler cluster-proportional-autoscaler/cluster-proportional-autoscaler --values values-nginx.yaml

Dessa forma, você pode escalar qualquer número de serviços com configurações individuais.

Esta página foi útil?
Atualizado em 11 de February de 2026

Tem perguntas,
comentários ou preocupações?

Nossos profissionais estão disponíveis para ajudá-lo a qualquer momento,
seja para assistência ou apenas se você não souber por onde começar.
Envie-nos um e-mail
Hostman's Support