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 escalonador automático de cluster

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

Como criar um cluster com escalonamento automático

É possível criar um cluster com escalonamento automático ativado usando a Google Cloud CLI ou o console Google Cloud .

gcloud

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

gcloud container clusters create CLUSTER_NAME \
    --enable-autoscaling \
    --num-nodes NUM_NODES \
    --min-nodes MIN_NODES \
    --max-nodes MAX_NODES \
    --location=CONTROL_PLANE_LOCATION

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 a ser escalonado automaticamente para o pool de nós especificado por zona. Para especificar o número mínimo de nós para todo o pool de nós no GKE versões 1.24 e posteriores, use --total-min-nodes. As sinalizações --total-min-nodes e --total-max-nodes são mutuamente exclusivas com as sinalizações --min-nodes e --max-nodes.
  • MAX_NODES: o número máximo de nós a ser escalonado automaticamente para o pool de nós especificado por zona. Para especificar o número máximo de nós para todo o pool de nós no GKE versões 1.24 e posteriores, use --total-max-nodes. As sinalizações --total-min-nodes e --total-max-nodes são mutuamente exclusivas com as sinalizações --min-nodes e --max-nodes.
  • CONTROL_PLANE_LOCATION: o local do Compute Engine do plano de controle do cluster. Forneça uma região para clusters regionais ou uma zona para clusters zonais.

Exemplo: como criar um cluster com o escalonamento automático de nós ativado e os nós mínimo e máximo

O comando a seguir cria um cluster com 90 nós, ou 30 nós em cada uma das três zonas presentes na região. 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 por zona.

gcloud container clusters create my-cluster --enable-autoscaling \
    --num-nodes=30 \
    --min-nodes=15 --max-nodes=50 \
    --location=us-central

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

O comando a seguir cria um cluster com 30 nós, ou 10 nós em cada uma das 3 zonas presentes na região. O escalonamento automático de nós está ativado e redimensiona o número deles com base na carga do cluster. Neste exemplo, o tamanho total do cluster pode estar entre 10 e 60 nós, independentemente da propagação entre as zonas.

gcloud container clusters create my-cluster --enable-autoscaling \
    --num-nodes 10 \
    --location us-central1 \
    --total-min-nodes 10  --total-max-nodes 60

Console

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

  1. No console Google Cloud , acesse a página Criar um cluster do Kubernetes.

    Acessar "Criar um cluster do Kubernetes"

  2. Configure o cluster como quiser.

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

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

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

  6. Clique em Criar.

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

É possível criar um pool de nós com escalonamento automático ativado usando a CLI gcloud ou o console Google Cloud .

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 \
    --location=CONTROL_PLANE_LOCATION

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 a ser escalonado automaticamente para o pool de nós especificado por zona. Para especificar o número mínimo de nós para todo o pool de nós no GKE versões 1.24 e posteriores, use --total-min-nodes. As sinalizações --total-min-nodes e --total-max-nodes são mutuamente exclusivas com as sinalizações --min-nodes e --max-nodes.
  • MAX_NODES: o número máximo de nós a ser escalonado automaticamente para o pool de nós especificado por zona. Para especificar o número máximo de nós para todo o pool de nós no GKE versões 1.24 e posteriores, use --total-max-nodes. As sinalizações --total-min-nodes e --total-max-nodes são mutuamente exclusivas com as sinalizações --min-nodes e --max-nodes.
  • CONTROL_PLANE_LOCATION: o local do Compute Engine do plano de controle do cluster. Forneça uma região para clusters regionais ou uma zona para clusters zonais.

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 com escalonamento automático de nós que escalona o pool de nós 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 \
    --location 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 Google Cloud console.

    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

É possível ativar o escalonamento automático de um pool de nós atual usando a CLI gcloud ou o console Google Cloud .

gcloud

Para ativar o escalonamento automático em um pool de nós atual, use o comando a seguir:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoscaling \
    --node-pool=POOL_NAME \
    --min-nodes=MIN_NODES \
    --max-nodes=MAX_NODES \
    --location=CONTROL_PLANE_LOCATION

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 a ser escalonado automaticamente para o pool de nós especificado por zona. Para especificar o número mínimo de nós para todo o pool de nós no GKE versões 1.24 e posteriores, use --total-min-nodes. As sinalizações --total-min-nodes e --total-max-nodes são mutuamente exclusivas com as sinalizações --min-nodes e --max-nodes.
  • MAX_NODES: o número máximo de nós a ser escalonado automaticamente para o pool de nós especificado por zona. Para especificar o número máximo de nós para todo o pool de nós no GKE versões 1.24 e posteriores, use --total-max-nodes. As sinalizações --total-min-nodes e --total-max-nodes são mutuamente exclusivas com as sinalizações --min-nodes e --max-nodes.
  • CONTROL_PLANE_LOCATION: o local do Compute Engine do plano de controle do cluster. Forneça uma região para clusters regionais ou uma zona para clusters zonais.

Console

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

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

    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 Salvar.

Como verificar se o escalonamento automático do pool de nós está ativado

Verifique se o cluster está usando o escalonamento automático com a Google Cloud CLI ou o console do Google Cloud. Google Cloud

gcloud

Descreva os pools de nós no cluster:

gcloud container node-pools describe NODE_POOL_NAME --cluster=CLUSTER_NAME |grep autoscaling -A 1

Substitua:

  • POOL_NAME: o nome do novo pool de nós escolhido.
  • CLUSTER_NAME: o nome do cluster.

Se o escalonamento automático estiver ativado, a saída será semelhante a esta:

autoscaling:
  enabled: true

Console

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

    Acessar o Google Kubernetes Engine

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

  3. Clique na guia Nós.

  4. Em Pools de nós, verifique o estado Autoscalling do pool.

Como criar um pool de nós que prioriza a otimização de reservas não utilizadas

Use a sinalização --location_policy=ANY ao criar um pool de nós para instruir o escalonador automático de clusters a priorizar o uso de reservas não utilizadas:

gcloud container node-pools create POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location_policy=ANY

Substitua:

  • POOL_NAME: o nome do novo pool de nós escolhido.
  • CLUSTER_NAME: o nome do cluster.

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

É possível desativar o escalonamento automático de um pool de nós atual usando a CLI gcloud ou o console Google Cloud .

gcloud

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

gcloud container clusters update CLUSTER_NAME \
    --no-enable-autoscaling \
    --node-pool=POOL_NAME \
    --location=CONTROL_PLANE_LOCATION

Substitua:

  • CLUSTER_NAME: o nome do cluster a se fazer upgrade.
  • POOL_NAME: o nome do pool de nós pretendido.
  • CONTROL_PLANE_LOCATION: o local do Compute Engine do plano de controle do cluster. Forneça uma região para clusters regionais ou uma zona para clusters zonais.

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 Google Cloud console.

    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 Salvar.

Como redimensionar um pool de nós

Para clusters com escalonamento automático ativado, o escalonador automático de clusters redimensiona automaticamente os pools de nós dentro dos limites especificados pelo tamanho mínimo (--min-nodes) e o tamanho máximo (--max-nodes) ou o tamanho mínimo total (--total-min-nodes) e o tamanho total máximo (--total-max-nodes). Essas sinalizações são mutuamente exclusivas. 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.

Como impedir a programação de pods em nós selecionados

É possível usar taints startup ou status para evitar que os pods sejam programados em nós selecionados, dependendo do caso de uso.

Este recurso está disponível no GKE a partir da versão 1.28.

Taints de inicialização

Use taints startup quando houver uma operação que precise ser concluída antes que qualquer pod possa ser executado no nó. Por exemplo, os pods não devem ser executados até que a instalação dos drivers no nó seja concluída.

O escalonador automático de clusters trata os nós com taints startup como não lidos, mas são considerados durante a lógica de escalonamento vertical, supondo que ficarão prontos em breve.

Os taints de inicialização são definidos como todos os taints com o prefixo startup-taint.cluster-autoscaler.kubernetes.io/

Taints de status

Use taints status quando o GKE não puder usar um determinado nó para executar pods.

O escalonador automático de clusters trata os nós com taint com status como prontos, mas os ignora durante a lógica de escalonamento vertical. Mesmo que o nó com taint esteja pronto, nenhum pod será executado. Se os pods precisarem de mais recursos, o GKE vai escalonar o cluster e ignorar os nós com taint.

Os taints de status são definidos como todos os taints com o prefixo status-taint.cluster-autoscaler.kubernetes.io/

Ignorar taints

Taints de ignorar são definidos como todos os taints com o prefixo ignore-taint.cluster-autoscaler.kubernetes.io/

Solução de problemas

Para receber conselhos sobre solução de problemas, consulte as seguintes páginas:

A seguir