Como fazer o escalonamento automático de um cluster


Veja nesta página como fazer escalonamento automático dos seus clusters padrão do Google Kubernetes Engine (GKE). Para saber mais sobre como o escalonador automático de clusters funciona, consulte esta página.

Com os clusters do Autopilot, você não precisa se preocupar com o provisionamento de nós ou o gerenciamento de pools de nós porque eles são provisionados automaticamente usando o provisionamento automático de nós, e são escalonadas automaticamente para atender aos requisitos das cargas de trabalho.

Como usar o autoescalador de cluster

Veja nas seções a seguir como usar o escalonador automático de clusters.

Como criar um cluster com escalonamento automático

gcloud

Para criar um cluster com o escalonamento automático ativado, use a sinalização --enable-autoscaling e especifique --min-nodes e --max-nodes como no seguinte comando:

gcloud container clusters create CLUSTER_NAME \
    --enable-autoscaling \
    --num-nodes NUM_NODES \
    --min-nodes MIN_NODES \
    --max-nodes MAX_NODES \
   [--region COMPUTE_REGION | --zone COMPUTE_ZONE]

Substitua:

  • CLUSTER_NAME: o nome do cluster a ser criado.
  • NUM_NODES: o número de nós a serem criados em cada local;
  • MIN_NODES: o número mínimo de nós que serão escalonados automaticamente para o pool de nós especificado.
  • MAX_NODES: o número máximo de nós para escalonar automaticamente no pool de nós especificado.
  • COMPUTE_REGION: se você estiver criando um cluster regional, especifique a região onde ele será criado.
  • COMPUTE_ZONE: se você estiver criando um cluster zonal, especifique a zona em que o cluster será criado.

Exemplo: como criar um cluster com o escalonamento automático de nós ativado

Com o comando a seguir, você cria um cluster com 30 nós. O escalonamento automático de nós está ativado e redimensiona o número deles com base na carga do cluster. O escalonador automático do cluster reduz o tamanho do pool de nós padrão para 15 nós ou aumenta para até 50.

gcloud container clusters create my-cluster --enable-autoscaling \
    --num-nodes 30 \
    --min-nodes 15 --max-nodes 50 \
    --zone us-central1-c

Console

Para criar um novo cluster no qual o pool de nós padrão esteja com o escalonamento automático ativado:

  1. Acesse a página do Google Kubernetes Engine no Console do Cloud:

    Acessar o Google Kubernetes Engine

  2. Clique em Criar.

  3. Configure o cluster como quiser.

  4. No painel de navegação, em Pools de nós, clique em default-pool.

  5. Marque a caixa de seleção Ativar escalonamento automático.

  6. Altere os valores dos campos Número mínimo de nós e Número máximo de nós como desejar.

  7. Clique em Criar.

Como adicionar um pool de nós com escalonamento automático

gcloud

Para adicionar um pool de nós com escalonamento automático a um cluster atual, use o comando a seguir:

gcloud container node-pools create POOL_NAME \
    --cluster CLUSTER_NAME \
    --enable-autoscaling \
    --min-nodes MIN_NODES \
    --max-nodes MAX_NODES \
    --zone COMPUTE_ZONE

Substitua:

  • POOL_NAME: o nome do pool de nós desejado.
  • CLUSTER_NAME: o nome do cluster em que o pool de nós será criado.
  • MIN_NODES: o número mínimo de nós para escalonar automaticamente no pool de nós especificado.
  • MAX_NODES: o número máximo de nós a serem escalonados automaticamente para o pool de nós especificado.
  • COMPUTE_ZONE: a zona em que o escalonador automático criará novos nós.

Exemplo: como adicionar um pool de nós com escalonamento automático de nós ativado

O comando a seguir cria um pool de nós de tamanho 3 (padrão), com o escalonamento automático de nós baseado na carga do cluster. O pool de nós é escalonado para um máximo de cinco nós e um mínimo de um nó:

gcloud container node-pools create my-node-pool \
    --cluster my-cluster \
    --enable-autoscaling \
    --min-nodes 1 --max-nodes 5 \
    --zone us-central1-c

Console

Para adicionar um pool de nós com escalonamento automático a um cluster atual:

  1. Acesse a página do Google Kubernetes Engine no Console do Cloud.

    Acessar o Google Kubernetes Engine

  2. Na lista de clusters, clique no nome do cluster que você quer modificar.

  3. Clique em Adicionar pool de nós.

  4. Configure o pool de nós como quiser.

  5. Em Tamanho, marque a caixa de seleção Ativar escalonamento automático.

  6. Altere os valores dos campos Número mínimo de nós e Número máximo de nós como desejar.

  7. Clique em Criar.

Como ativar o escalonamento automático de um pool de nós existente

gcloud

Para ativar o escalonamento automático em um pool de nós atual, use a sinalização --enable-autoscaling como no comando a seguir:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoscaling \
    --node-pool POOL_NAME \
    --min-nodes MIN_NODES \
    --max-nodes MAX_NODES \
    [--region COMPUTE_REGION | --zone COMPUTE_ZONE]

Substitua:

  • CLUSTER_NAME: o nome do cluster a se fazer upgrade.
  • POOL_NAME: o nome do pool de nós pretendido. Se você tiver apenas um pool de nós, forneça default-pool como o valor.
  • MIN_NODES: o número mínimo de nós para escalonar automaticamente no pool de nós especificado.
  • MAX_NODES: o número máximo de nós a serem escalonados automaticamente para o pool de nós especificado.
  • COMPUTE_REGION: para clusters regionais, especifique a região do cluster.
  • COMPUTE_ZONE: para clusters zonais, especifique a zona do cluster.

Console

Para ativar o escalonamento automático de um pool de nós atual:

  1. Acesse a página do Google Kubernetes Engine no Console do Cloud.

    Acessar o Google Kubernetes Engine

  2. Na lista de clusters, clique no nome do cluster que você quer modificar.

  3. Clique na guia Nós.

  4. Em Pools de nós, clique no nome do pool de nós que você quer modificar e clique em Editar.

  5. Em Tamanho, marque a caixa de seleção Ativar escalonamento automático.

  6. Altere os valores dos campos Número mínimo de nós e Número máximo de nós como desejar.

  7. Clique em Save.

Como desativar o escalonamento automático de um pool de nós existente

gcloud

Para desativar o escalonamento automático de um pool de nós específico, use a sinalização --no-enable-autoscaling, como no comando a seguir:

gcloud container clusters update CLUSTER_NAME \
    --no-enable-autoscaling \
    --node-pool POOL_NAME \
   [--region COMPUTE_REGION | --zone COMPUTE_ZONE]

Substitua:

  • CLUSTER_NAME: o nome do cluster a se fazer upgrade.
  • POOL_NAME: o nome do pool de nós pretendido.
  • COMPUTE_REGION: para clusters regionais, especifique a região do cluster.
  • COMPUTE_ZONE: para clusters zonais, especifique a zona do cluster.

O tamanho do cluster é determinado pelo tamanho atual do seu pool de nós padrão, que pode ser atualizado manualmente.

Console

Para desativar o escalonamento automático de um pool de nós específico:

  1. Acesse a página do Google Kubernetes Engine no Console do Cloud.

    Acessar o Google Kubernetes Engine

  2. Na lista de clusters, clique no nome do cluster que você quer modificar.

  3. Clique na guia Nós.

  4. Em Pools de nós, clique no nome do pool de nós que você quer modificar e clique em Editar.

  5. Em Tamanho, desmarque a caixa de seleção Ativar escalonamento automático.

  6. Clique em Save.

Como redimensionar um pool de nós

Para clusters com escalonamento automático ativado, o escalonador automático de cluster redefine automaticamente os pools de nós dentro dos limites especificados pelos valores de tamanho mínimo (--min-nodes) e tamanho máximo (--max-nodes). Não é possível redimensionar manualmente um pool de nós alterando esses valores.

Se você quiser redimensionar manualmente um pool de nós no cluster com o escalonamento automático ativado, faça o seguinte:

  1. Desative o escalonamento automático no pool de nós.
  2. Redimensione manualmente o cluster.
  3. Reative o escalonamento automático e especifique o tamanho mínimo e máximo do pool de nós.

Solução de problemas

Consulte as informações de solução de problemas a seguir para o escalonador automático de cluster:

  • Talvez você esteja enfrentando uma das limitações do escalonador automático de cluster.
  • Se você tiver problemas com a diminuição de cluster, consulte Programação e interrupção de pods. Talvez seja necessário adicionar um PodDisruptionBudget para os pods kube-system. Para mais informações sobre como adicionar manualmente um PodDisruptionBudget para os pods kube-system, consulte as Perguntas frequentes do escalonador automático de cluster do Kubernetes.
  • Ao reduzir a escala, o escalonador automático de clusters respeita as regras de programação e remoção definidas nos pods. Essas restrições podem impedir que um nó seja excluído pelo autoescalador. A exclusão de um nó pode ser evitada se ele contiver um pod com qualquer uma das seguintes condições:
    • As regras de afinidade ou antiafinidade impedem a reprogramação.
    • O pod tem armazenamento local.
    • O Pod não é gerenciado por um Controlador, como o Deployment, o StatefulSet, o Job ou o ReplicaSet.

Para mais informações sobre o escalonador automático de clusters e prevenção de interrupções, consulte os seguintes itens nas Perguntas frequentes sobre o escalonador automático de clusters do Kubernetes:

A seguir