Escalonamento automático de grupos de nós


Se você usa nós de locatário individual para suas cargas de trabalho, é possível gerenciar automaticamente os tamanhos dos grupos de nós usando o escalonador automático do grupo de nós. É possível configurar o escalonamento automático durante ou após a criação de um grupo de nós.

O escalonador automático pode ajudar a gerenciar automaticamente os tamanhos dos grupos de nós de locatário individual ao fazer o seguinte:

  • Aumentar o tamanho de um grupo de nós quando não houver capacidade suficiente para outra instância de máquina virtual (VM, na sigla em inglês) nesse grupo de nós. Depois que o escalonador automático aumenta o tamanho do grupo de nós, as VMs são programadas de forma transparente.

  • Diminuir o tamanho de um grupo de nós quando há nós vazios, o que impede que você pague por nós de locatário individual não utilizados.

Ao dimensionar um grupo de nós, o escalonador automático considera a capacidade necessária para a VM que está sendo programada, a capacidade livre nos nós de destino e a política de escalonamento automático do grupo de nós. A capacidade necessária é baseada apenas no tamanho da VM. A capacidade livre é estimada com base no tamanho do nó, nas VMs já programadas nele e na razão de alocação excessiva de CPU opcional.

Veja no diagrama a seguir:

  1. O escalonador automático realizando esse processo horizontalmente em um grupo de nós ao adicionar um novo nó a um grupo de nós em resposta à implantação de uma VM em um grupo de nós em que nenhum deles está vazio.

  2. O escalonador automático do grupo de nós reduzindo um escalonamento ao remover um nó vazio de um grupo de nós de locatário individual.

Escalonador automático do grupo de nós para gerenciar o tamanho dele.

Modos do escalonador automático

Por padrão, o escalonador automático não está ativado nos grupos de nós. Quando o escalonador automático não está ativado, é preciso gerenciar manualmente os tamanhos dos grupos de nós. Se você ativar o escalonador automático em um grupo de nós, poderá especificar que o escalonador automático aumenta e diminui o tamanho do grupo de nós (escalonamento horizontal e vertical) ou que apenas aumenta o tamanho do grupo (somente escalonamento horizontal).

Escalonamento horizontal e vertical

Neste modo, o escalonador automático do grupo de nós aumenta (escalonamento horizontal) e diminui (escalonamento vertical) o tamanho dos grupos de nós. Para este modo, é preciso especificar um tamanho máximo e um tamanho mínimo para o grupo de nós. O escalonador automático não dimensionará o tamanho do grupo de nós acima do máximo especificado ou abaixo do mínimo especificado.

O escalonamento horizontal é acionado quando a programação de uma VM falha devido à falta de capacidade. Para resolver esse problema, um novo nó é adicionado ao grupo e a operação é tentada novamente.

A redução é acionada quando um nó permanece vazio por um período. Um nó vazio é o resultado de uma VM excluída ou migrada para fora do grupo de nós. Se a política de escalonamento automático do grupo de nós permitir, o nó vazio será programado para remoção após um período de estabilização. O período de estabilização garante que o nó ainda esteja disponível se você precisar usá-lo.

Somente escalonamento horizontal

Com este modo, o escalonador automático aumenta o tamanho do grupo de nós em resposta a solicitações de programação de VMs, mas não remove nós vazios de grupos de nós. O Google recomenda este modo para cargas de trabalho em constante crescimento ou que exigem afinidade de servidor físico, como cargas de trabalho BYOL, que exigem licenças para residir no mesmo servidor físico.

Use este modo se os grupos de nós estiverem configurados com a política de manutenção Migrar no grupo de nós.

Intervalo de tamanho de um grupo de nós

Ao ativar o escalonador automático, você define o intervalo de tamanho do grupo de nós ao especificar um valor mínimo e máximo para o tamanho do grupo de nós.

Se você não especificar um valor para o tamanho mínimo, o escalonador automático definirá o tamanho mínimo como zero (0). Se você especificar um valor para o tamanho mínimo, ele precisará ser um número inteiro maior ou igual a 0 e menor ou igual ao tamanho máximo.

Especifique um valor para o tamanho máximo do grupo de nós. O valor precisa ser um número inteiro maior ou igual a 0 e menor ou igual a 100, que é o tamanho máximo permitido para um grupo de nós de locatário individual. Além disso, o valor precisa ser maior ou igual ao valor mínimo especificado.

Para acomodar cargas de trabalho que possam exceder o tamanho máximo de 100 em um grupo de nós, crie vários grupos de nós com rótulos de afinidade correspondentes, por exemplo, workload:in:my-autoscaled-node-groups. Em seguida, programe as VMs usando esse rótulo de afinidade e ative o escalonamento automático em cada grupo para criar um grupo de grupos de nós com escalonamento dinâmico.

Disponibilidade

Só é possível usar o escalonador automático de nó de locatário individual em regiões que aceitam nós de locatário individual.

Antes de começar

  • Configure a autenticação, caso ainda não tenha feito isso. A autenticação é o processo de verificação da sua identidade para acesso a serviços e APIs do Google Cloud. Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no Compute Engine selecionando uma das seguintes opções:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.

Ativar o escalonador automático do grupo de nós

Configure o escalonamento automático em um novo grupo de nós.

gcloud

No exemplo abaixo, mostramos como usar o comando node-groups create para ativar o escalonador automático ao criar um grupo de nós. Para adicionar um escalonador automático a um grupo de nós atual, use o comando node-groups update.

gcloud compute sole-tenancy node-groups create group-name \
    --node-template template-name \
    --target-size size \
    --maintenance-policy maintenance-policy \
    --zone zone \
    --autoscaler-mode mode \
    --max-nodes max-nodes \
    --min-nodes min-nodes

Substitua:

  • group-name: nome do grupo de nós a ser criado;
  • template-name: nome do modelo de nó a partir do qual o grupo de nós será criado;
  • size: segmenta o número inicial de nós no grupo de nós.
  • maintenance-policy: especifica se as VMs são migradas e reiniciadas durante eventos de manutenção do host. Defina um dos seguintes valores:
    • default: as VMs migram em tempo real para um novo nó.
    • migrate-within-node-group: as VMs migram em tempo real para outro nó no grupo de nós.
    • restart-in-place: as VMs são reiniciadas no mesmo nó depois de serem encerradas devido a um evento de manutenção.
  • zone: a zona em que o grupo de nós será criado.
  • mode: o modo para o escalonador automático neste grupo de nós. Defina um dos seguintes valores:
    • off: desativa o escalonamento automático.
    • on: ativa o escalonamento horizontal e vertical.
    • only-scale-out: ativa somente o escalonamento horizontal. Use esse modo se os grupos de nós estiverem configurados para reiniciar as VMs hospedadas em servidores mínimos.
  • max-nodes: o tamanho máximo do grupo de nós. Defina um valor menor ou igual a 100 e maior ou igual a min-nodes.
  • min-nodes: o tamanho mínimo do grupo de nós. O valor precisa ser um inteiro menor ou igual a max-nodes. O valor padrão é 0.

REST

No exemplo abaixo, mostramos como usar o comando nodeGroups.insert para ativar o escalonador automático ao criar um grupo de nós. Para adicionar um escalonador automático a um grupo de nós atual, use o comando nodeGroups.patch.

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/nodeGroups?initialNodeCount=initial-node-count

  {
    "name": "group-name",
    "nodeTemplate": "template-name",
    "autoscalingPolicy": {
      "mode": "mode",
      "min_nodes": min-nodes,
      "max_nodes": max-nodes
    }
    "maintenancePolicy": maintenance-policy
  }

Substitua:

  • project-id: código do projeto em que será adicionado um grupo de nós com um escalonador automático.
  • zone: zona em que o novo grupo de nós será criado.
  • initial-node-count: obrigatório ao criar o grupo de nós. Especifica o número inicial de nós no grupo de nós. Se o valor de min-nodes for maior que a contagem de nós inicial, o tamanho do grupo de nós será escalonado horizontalmente para o valor de min-nodes.
  • group-name: nome do novo grupo de nós;
  • template-name: nome do modelo de nó a partir do qual o grupo de nós será criado;
  • mode: o modo para o escalonador automático neste grupo de nós. Defina como um dos seguintes:
    • OFF: desativa o escalonamento automático.
    • ON: ativa o escalonamento horizontal e vertical.
    • ONLY_SCALE_OUT: ativa somente o escalonamento horizontal. Use esse modo se os grupos de nós estiverem configurados para reiniciar as VMs hospedadas em servidores mínimos.
  • max-nodes: o tamanho máximo do grupo de nós. Defina um valor menor ou igual a 100 e maior ou igual a min-nodes.
  • min-nodes: o tamanho mínimo do grupo de nós. O valor precisa ser um inteiro menor ou igual a max-nodes. O valor padrão é 0.
  • maintenance-policy: especifica se as VMs são migradas e reiniciadas durante eventos de manutenção do host. Defina-o como um dos seguintes valores:
    • DEFAULT: as VMs migram em tempo real para um novo nó.
    • MIGRATE_WITHIN_NODE_GROUP: as VMs migram em tempo real para outro nó no grupo de nós.
    • RESTART_IN_PLACE: as VMs são reiniciadas no mesmo nó depois de serem encerradas devido a um evento de manutenção.

Atualizar as configurações do escalonador automático

Para alterar as configurações do escalonador automático em um grupo de nós, atualize o modo do escalonador automático ou o tamanho mínimo e máximo do grupo de nós.

gcloud

O exemplo a seguir mostra como usar o comando node-groups update para mudar o modo do escalonador automático em um grupo de nós.

gcloud compute sole-tenancy node-groups update name \
    --autoscaler-mode mode \
    --max-nodes max-nodes \
    --min-nodes min-nodes

Substitua:

  • name: nome do grupo de nós em que o modo escalonador automático será alterado.
  • mode: o modo para o escalonador automático neste grupo de nós. Defina como um dos seguintes:
    • off: desativa o escalonamento automático.
    • on: ativa o escalonamento horizontal e vertical.
    • only-scale-out: ativa somente o escalonamento horizontal. Use esse modo se os grupos de nós estiverem configurados para reiniciar as VMs hospedadas em servidores mínimos.
  • max-nodes: o tamanho máximo do grupo de nós. Defina um valor menor ou igual a 100 e maior ou igual a min-nodes.
  • min-nodes: o tamanho mínimo do grupo de nós. O valor precisa ser um inteiro menor ou igual a max-nodes. O valor padrão é 0.

REST

No exemplo abaixo, mostramos como usar o comando nodeGroups.patch para alterar o modo de um escalonador automático em um grupo de nós.

PATCH https://compute.googleapis.com/compute/beta/projects/project-id/zones/group-zone/nodeGroups/group-name

{
  "nodeTemplate": "template-name",
  "autoscalingPolicy": {
    "mode": "mode",
    "minSize": min-nodes,
    "maxSize": max-nodes
  }
}

Substitua:

  • project-id: código do projeto que contém o grupo de nós em que o modo escalonador automático será alterado.
  • group-zone: zona que contém o grupo de nós em que o modo do escalonador automático será alterado.
  • group-name: nome do grupo de nós em que o modo do escalonador automático será alterado.
  • template-name: nome do modelo de nó a partir do qual o grupo de nós foi criado.
  • mode: o modo para o escalonador automático neste grupo de nós. Defina como uma destas opções:

    • OFF: desativa o escalonamento automático.
    • ON: ativa o escalonamento horizontal e vertical.

    • ONLY_SCALE_OUT: ativa somente o escalonamento horizontal. Use este modo se os grupos de nós estiverem configurados com a política de manutenção Migrar no grupo de nós.

  • max-nodes: o tamanho máximo do grupo de nós. Defina um valor menor ou igual a 100 e maior ou igual a min-nodes.

  • min-nodes: o tamanho mínimo do grupo de nós. O valor precisa ser um inteiro menor ou igual a max-nodes. O valor padrão é 0.

Como atualizar manualmente o tamanho dos grupos de nós com escalonamento automático

Quando o escalonador automático está ativado, o tamanho do grupo de nós é gerenciado automaticamente, mas é possível programar ou remover VMs desse grupo de nós para atualizar o tamanho do grupo de maneira eficaz.

Para diminuir manualmente o tamanho de um grupo de nós com escalonamento automático, exclua as VMs do nó até que ele esteja vazio. O nó vazio é removido pelo escalonador automático, o que diminui o tamanho do grupo de nós.

Para aumentar manualmente o tamanho de um grupo de nós com escalonamento automático, defina o tamanho mínimo do grupo como um valor maior que o atual. Quando o tamanho mínimo de um grupo é definido como um valor maior que o tamanho atual, o escalonador automático dimensiona o tamanho do grupo para o tamanho mínimo recém-especificado.

Quando os grupos de nós são definidos para escalonar horizontalmente, o escalonador automático gerencia automaticamente os aumentos no tamanho do grupo e desativa os aumentos manuais. Com essa configuração, é possível diminuir o tamanho de um grupo removendo VMs de um nó até que esse nó esteja vazio e, em seguida, remover o nó vazio.

Desativar o escalonador automático

Desative o escalonador automático se ele não for mais necessário para gerenciar automaticamente os tamanhos dos grupos de nós ou se você precisar gerenciar manualmente os tamanhos dos grupos de nós.

gcloud

gcloud compute sole-tenancy node-groups update name \
    --autoscaler-mode OFF

Substitua name pelo nome do grupo de nós do qual a política de escalonamento automático será removida.

REST

O exemplo a seguir mostra como usar o comando nodeGroups.patch para desativar um escalonador automático em um grupo de nós.

PATCH https://compute.googleapis.com/compute/beta/projects/project-id/zones/group-zone/nodeGroups/group-name

{
  "nodeTemplate": "template-name",
  "autoscalingPolicy": {
    "mode": "mode"
  }
}

Substitua:

  • project-id: código do projeto que contém o grupo de nós em que o modo escalonador automático será alterado.
  • group-zone: zona que contém o grupo de nós em que o modo do escalonador automático será alterado.
  • group-name: nome do grupo de nós em que o modo do escalonador automático será alterado.
  • template-name: nome do modelo de nó a partir do qual o grupo de nós foi criado.
  • mode: o modo para o escalonador automático neste grupo de nós. Defina como OFF para desativar o escalonador automático neste grupo de nós.

Conferir a atividade do escalonador automático

No Console do Google Cloud, veja o escalonador automático ajustando os tamanhos dos grupos de nós. O console do Google Cloud mostra o tamanho atual do grupo de nós. Se o escalonador automático estiver ajustando o tamanho do grupo, também será possível ver o tamanho de destino do grupo de nós.

Console

  1. No Console do Google Cloud, acesse a página Nós de locatário individual.

    Acesse "nós de locatário individual"

  2. Clique em Grupos de nós.

  3. Visualize o número de nós em cada grupo de nós e, se o Compute Engine estiver escalonando o grupo de nós, também será possível visualizar o número de nós de destino.

A seguir