Escala automática de um cluster


Esta página mostra como dimensionar automaticamente os clusters do Google Kubernetes Engine (GKE) Standard. Para saber como funciona o redimensionador automático de clusters, consulte o artigo Redimensionador automático de clusters.

Com os clusters do Autopilot, não tem de se preocupar com o aprovisionamento de nós nem com a gestão de conjuntos de nós, porque os conjuntos de nós são aprovisionados automaticamente através do aprovisionamento automático de nós e são dimensionados automaticamente para satisfazer os requisitos das suas cargas de trabalho.

Usar o redimensionador automático de clusters

As secções seguintes explicam como usar o escalamento automático de clusters.

Criar um cluster com escala automática

Pode criar um cluster com o dimensionamento automático ativado através da Google Cloud CLI ou da Google Cloud consola.

gcloud

Para criar um cluster com o dimensionamento automático ativado, use a flag --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 o seguinte:

  • CLUSTER_NAME: o nome do cluster a criar.
  • NUM_NODES: o número de nós a criar em cada localização.
  • MIN_NODES: o número mínimo de nós a dimensionar automaticamente para o node pool especificado por zona. Para especificar o número mínimo de nós para todo o conjunto de nós nas versões 1.24 e posteriores do GKE, use --total-min-nodes. As flags --total-min-nodes e --total-max-nodes são mutuamente exclusivas com as flags --min-nodes e --max-nodes.
  • MAX_NODES: o número máximo de nós a dimensionar automaticamente para o node pool especificado por zona. Para especificar o número máximo de nós para todo o conjunto de nós nas versões 1.24 e posteriores do GKE, use --total-max-nodes. As flags --total-min-nodes e --total-max-nodes são mutuamente exclusivas com as flags --min-nodes e --max-nodes.
  • CONTROL_PLANE_LOCATION: a localização do Compute Engine do plano de controlo do seu cluster. Indique uma região para clusters regionais ou uma zona para clusters zonais.

Exemplo: criar um cluster com o redimensionamento automático de nós ativado e nós mínimos e máximos

O comando seguinte cria um cluster com 90 nós ou 30 nós em cada uma das 3 zonas presentes na região. A escala automática de nós está ativada e redimensiona o número de nós com base na carga do cluster. O escalador automático do cluster pode reduzir o tamanho do conjunto de nós predefinido para 15 nós ou aumentar o conjunto de nós para um máximo de 50 nós por zona.

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

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

O comando seguinte cria um cluster com 30 nós ou 10 nós em cada uma das 3 zonas presentes na região. A escala automática de nós está ativada e redimensiona o número de nós com base na carga do cluster. Neste exemplo, o tamanho total do cluster pode estar entre 10 e 60 nós, independentemente da distribuição entre zonas.

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

Consola

Para criar um novo cluster no qual o conjunto de nós predefinido tem o escalamento automático ativado:

  1. Na Google Cloud consola, aceda à página Criar um cluster do Kubernetes.

    Aceda a Crie um cluster do Kubernetes

  2. Configure o cluster conforme pretendido.

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

  4. Selecione a caixa de verificação Ativar o dimensionamento automático.

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

  6. Clique em Criar.

Adicionar um conjunto de nós com o dimensionamento automático

Pode criar um conjunto de nós com o dimensionamento automático ativado através da CLI gcloud ou da Google Cloud consola.

gcloud

Para adicionar um conjunto de nós com o dimensionamento automático a um cluster existente, use o seguinte comando:

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 o seguinte:

  • POOL_NAME: o nome do node pool pretendido.
  • CLUSTER_NAME: o nome do cluster no qual o conjunto de nós é criado.
  • MIN_NODES: o número mínimo de nós a dimensionar automaticamente para o node pool especificado por zona. Para especificar o número mínimo de nós para todo o conjunto de nós nas versões 1.24 e posteriores do GKE, use --total-min-nodes. As flags --total-min-nodes e --total-max-nodes são mutuamente exclusivas com as flags --min-nodes e --max-nodes.
  • MAX_NODES: o número máximo de nós a dimensionar automaticamente para o node pool especificado por zona. Para especificar o número máximo de nós para todo o conjunto de nós nas versões 1.24 e posteriores do GKE, use --total-max-nodes. As flags --total-min-nodes e --total-max-nodes são mutuamente exclusivas com as flags --min-nodes e --max-nodes.
  • CONTROL_PLANE_LOCATION: a localização do Compute Engine do plano de controlo do seu cluster. Indique uma região para clusters regionais ou uma zona para clusters zonais.

Exemplo: adicionar um conjunto de nós com o dimensionamento automático de nós ativado

O comando seguinte cria um node pool com o dimensionamento automático de nós que dimensiona o node pool para um máximo de 5 nós e um mínimo de 1 nó:

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

Consola

Para adicionar um conjunto de nós com o dimensionamento automático a um cluster existente:

  1. Aceda à página do Google Kubernetes Engine na Google Cloud consola.

    Aceda ao Google Kubernetes Engine

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

  3. Clique em Adicionar conjunto de nós.

  4. Configure o node pool conforme pretendido.

  5. Em Tamanho, selecione a caixa de verificação Ativar o ajuste de escala automático.

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

  7. Clique em Criar.

Ativar o dimensionamento automático para um conjunto de nós existente

Pode ativar o dimensionamento automático para um conjunto de nós existente através da CLI gcloud ou da consola Google Cloud .

gcloud

Para ativar o dimensionamento automático para um conjunto de nós existente, use o seguinte comando:

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 o seguinte:

  • CLUSTER_NAME: o nome do cluster a atualizar.
  • POOL_NAME: o nome do node pool pretendido. Se tiver apenas um conjunto de nós, indique default-pool como valor.
  • MIN_NODES: o número mínimo de nós a dimensionar automaticamente para o node pool especificado por zona. Para especificar o número mínimo de nós para todo o conjunto de nós nas versões 1.24 e posteriores do GKE, use --total-min-nodes. As flags --total-min-nodes e --total-max-nodes são mutuamente exclusivas com as flags --min-nodes e --max-nodes.
  • MAX_NODES: o número máximo de nós a dimensionar automaticamente para o node pool especificado por zona. Para especificar o número máximo de nós para todo o conjunto de nós nas versões 1.24 e posteriores do GKE, use --total-max-nodes. As flags --total-min-nodes e --total-max-nodes são mutuamente exclusivas com as flags --min-nodes e --max-nodes.
  • CONTROL_PLANE_LOCATION: a localização do Compute Engine do plano de controlo do seu cluster. Indique uma região para clusters regionais ou uma zona para clusters zonais.

Consola

Para ativar a escala automática para um conjunto de nós existente:

  1. Aceda à página do Google Kubernetes Engine na Google Cloud consola.

    Aceda ao Google Kubernetes Engine

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

  3. Clique no separador Nós.

  4. Em Conjuntos de nós, clique no nome do conjunto de nós que quer modificar e, de seguida, clique em Editar.

  5. Em Tamanho, selecione a caixa de verificação Ativar o ajuste de escala automático.

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

  7. Clique em Guardar.

Verificar se o dimensionamento automático para o conjunto de nós existente está ativado

Valida que o cluster está a usar o dimensionamento automático com a CLI Google Cloud ou a Google Cloud consola.

gcloud

Descreva os node pools no cluster:

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

Substitua o seguinte:

  • POOL_NAME: o nome do novo node pool que escolher.
  • CLUSTER_NAME: o nome do cluster.

Se o dimensionamento automático estiver ativado, o resultado é semelhante ao seguinte:

autoscaling:
  enabled: true

Consola

  1. Aceda à página do Google Kubernetes Engine na Google Cloud consola.

    Aceda ao Google Kubernetes Engine

  2. Na lista de clusters, clique no nome do cluster que quer validar.

  3. Clique no separador Nós.

  4. Em Conjuntos de nós, verifique o estado do conjunto de nós Autoscalling.

Criar um node pool que priorize a otimização de reservas não usadas

Pode usar a flag --location_policy=ANY quando cria um conjunto de nós para dar instruções ao escalador automático do cluster para priorizar a utilização de reservas não usadas:

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

Substitua o seguinte:

  • POOL_NAME: o nome do novo node pool que escolher.
  • CLUSTER_NAME: o nome do cluster.

Desativar o dimensionamento automático para um node pool existente

Pode desativar o dimensionamento automático para um conjunto de nós existente através da CLI gcloud ou da Google Cloud consola.

gcloud

Para desativar o dimensionamento automático para um node pool específico, use a flag --no-enable-autoscaling:

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

Substitua o seguinte:

  • CLUSTER_NAME: o nome do cluster a atualizar.
  • POOL_NAME: o nome do node pool pretendido.
  • CONTROL_PLANE_LOCATION: a localização do Compute Engine do plano de controlo do seu cluster. Indique uma região para clusters regionais ou uma zona para clusters zonais.

O tamanho do cluster é fixo no tamanho atual do node pool predefinido do cluster, que pode ser atualizado manualmente.

Consola

Para desativar o dimensionamento automático para um node pool específico:

  1. Aceda à página do Google Kubernetes Engine na Google Cloud consola.

    Aceda ao Google Kubernetes Engine

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

  3. Clique no separador Nós.

  4. Em Conjuntos de nós, clique no nome do conjunto de nós que quer modificar e, de seguida, clique em Editar.

  5. Em Tamanho, desmarque a caixa de verificação Ativar ajuste de escala automático.

  6. Clique em Guardar.

Redimensionar um node pool

Para clusters com a escala automática ativada, o escalador automático de clusters redimensiona automaticamente os node pools dentro dos limites especificados pelos valores de tamanho mínimo (--min-nodes) e tamanho máximo (--max-nodes) ou pelos valores de tamanho total mínimo (--total-min-nodes) e tamanho total máximo (--total-max-nodes). Estas flags são mutuamente exclusivas. Não pode redimensionar manualmente um conjunto de nós alterando estes valores.

Se quiser redimensionar manualmente um node pool no seu cluster com a escala automática ativada, faça o seguinte:

  1. Desative a escala automática no node pool.
  2. Redimensionar manualmente o cluster.
  3. Volte a ativar a escala automática e especifique o tamanho mínimo e máximo do node pool.

Impedir o agendamento de pods em nós selecionados

Pode usar contaminações startup ou status para impedir o agendamento de pods em nós selecionados, consoante o exemplo de utilização.

Esta funcionalidade está disponível no GKE na versão 1.28 e posteriores.

Startup taints

Use startup taints quando existir uma operação que tem de ser concluída antes de qualquer Pod poder ser executado no nó. Por exemplo, os pods não devem ser executados até que a instalação dos controladores no nó termine.

O redimensionador automático de clusters trata os nós contaminados com contaminações startup como não preparados, mas tem-nos em conta durante a lógica de expansão, partindo do princípio de que vão ficar preparados em breve.

As contaminações de arranque são definidas como todas as contaminações com o prefixo startup-taint.cluster-autoscaler.kubernetes.io/

Status taints

Use statuscontaminações quando o GKE não deve usar um determinado nó para executar pods.

O redimensionador automático de clusters trata os nós contaminados com contaminações status como prontos, mas ignora-os durante a lógica de expansão. Embora o nó contaminado esteja pronto, não devem ser executados pods. Se os pods precisarem de mais recursos, o GKE aumenta a escala do cluster e ignora os nós contaminados.

As contaminações de estado são definidas como todas as contaminações com o prefixo status-taint.cluster-autoscaler.kubernetes.io/

Ignorar contaminações

As rejeições são definidas como todas as rejeições com o prefixo ignore-taint.cluster-autoscaler.kubernetes.io/

Resolução de problemas

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

O que se segue?