Escala automática de grupos de nós


Se usar nós de inquilino único para as suas cargas de trabalho, pode gerir automaticamente os tamanhos dos grupos de nós através do escalador automático de grupos de nós. Pode configurar o dimensionamento automático durante a criação de um grupo de nós ou depois de o criar.

O escalador automático pode ajudar a gerir automaticamente os tamanhos dos seus grupos de nós de inquilino único das seguintes formas:

  • Aumentar o tamanho de um grupo de nós quando existe capacidade insuficiente para outra instância de máquina virtual (VM) nesse grupo de nós. Depois de o dimensionamento automático aumentar o tamanho do grupo de nós, as VMs são agendadas de forma transparente.

  • Diminuir o tamanho de um grupo de nós quando existem nós vazios, o que evita que pague por nós de inquilino único não usados.

Ao dimensionar um grupo de nós, o redimensionador automático considera a capacidade necessária para a VM que está a ser agendada, a capacidade livre nos nós que está a segmentar e a política de escala automática do grupo de nós. A capacidade necessária baseia-se apenas no tamanho da VM. A capacidade livre é estimada com base no tamanho do nó, nas VMs já agendadas no mesmo e na proporção de sobrecompromisso da CPU opcional.

O diagrama seguinte mostra:

  1. O escalador automático do grupo de nós está a aumentar a escala adicionando um novo nó a um grupo de nós em resposta à implementação de uma VM num grupo de nós sem nós vazios.

  2. O escalador automático do grupo de nós está a dimensionar removendo um nó vazio de um grupo de nós de inquilino único.

O redimensionador automático do grupo de nós a gerir o tamanho do grupo de nós.

Modos do redimensionador automático

Por predefinição, o escalador automático não está ativado nos grupos de nós. Quando o dimensionamento automático não está ativado, tem de gerir manualmente os tamanhos dos grupos de nós. Se ativar o dimensionamento automático num grupo de nós, pode especificar que o dimensionamento automático aumenta e diminui o tamanho do grupo de nós (dimensiona para fora e dimensiona para dentro) ou que apenas aumenta o tamanho do grupo (apenas dimensiona para fora).

Aumente e diminua horizontalmente

Neste modo, o dimensionador automático do grupo de nós aumenta (dimensiona para fora) e diminui (dimensiona para dentro) o tamanho dos seus grupos de nós. Para este modo, tem de especificar um tamanho máximo e um tamanho mínimo para o grupo de nós. O escalador automático não dimensiona o tamanho do grupo de nós acima do máximo especificado nem abaixo do mínimo especificado.

O aumento da escala é acionado quando o agendamento de uma VM falha devido à falta de capacidade. Para resolver este problema, é adicionado um novo nó ao grupo e a operação é tentada novamente.

A redução é acionada quando um nó permanece vazio durante um período. Um nó vazio é o resultado da eliminação ou migração de uma VM para fora do grupo de nós. Se a política de escalamento automático do grupo de nós o permitir, o nó vazio é agendado para remoção após um período de estabilização. O período de estabilização garante que o nó continua disponível se precisar de o usar.

Apenas aumentar nós

Com este modo, o escalador automático aumenta o tamanho do grupo de nós em resposta a pedidos de agendamento de VMs, mas não remove nós vazios dos grupos de nós. A Google recomenda este modo para cargas de trabalho que aumentam monotonicamente ou cargas de trabalho que requerem afinidade com o servidor físico, como cargas de trabalho BYOL, que requerem que as licenças residam no mesmo servidor físico.

Tem de usar este modo se os seus grupos de nós estiverem configurados com a política de manutenção Migrate within node group.

Intervalo de tamanhos de um grupo de nós

Quando ativa o dimensionamento automático, define o intervalo de tamanho do grupo de nós especificando um valor mínimo e máximo para o tamanho do grupo de nós.

Se não especificar um valor para o tamanho mínimo, o escalador automático define o tamanho mínimo como zero (0). Se especificar um valor para o tamanho mínimo, tem de ser um número inteiro igual ou superior a 0 e tem de ser igual ou inferior ao tamanho máximo.

Tem de especificar um valor para o tamanho máximo do grupo de nós. O valor tem de ser um número inteiro superior ou igual a 0 e inferior ou igual a 100, que é o tamanho máximo permitido para um grupo de nós de inquilino único, e o valor tem de ser superior ou igual ao valor mínimo especificado.

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

Disponibilidade

Só pode usar o escalador automático de nós de inquilino único em regiões que suportam nós de inquilino único.

Antes de começar

  • Se ainda não o tiver feito, configure a autenticação. A autenticação valida a sua identidade para aceder a Google Cloud serviços e APIs. Para executar código ou exemplos a partir de um ambiente de desenvolvimento local, pode autenticar-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. Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

    2. Set a default region and zone.

    REST

    Para usar os exemplos da API REST nesta página num ambiente de desenvolvimento local, usa as credenciais que fornece à CLI gcloud.

      Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

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

Ative o escalador automático do grupo de nós

Configure o dimensionamento automático num novo grupo de nós.

gcloud

O exemplo abaixo mostra como usar o comando node-groups create para ativar o dimensionador automático quando estiver a criar um grupo de nós. Para adicionar um escalador automático a um grupo de nós existente, 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 o seguinte:

  • group-name: nome do grupo de nós a criar.
  • template-name: nome do modelo de nó a partir do qual criar o grupo de nós.
  • size: número inicial de nós no grupo de nós de destino.
  • maintenance-policy: especifica se as VMs migram e se são reiniciadas durante eventos de manutenção do anfitrião. Defina-o para um dos seguintes valores:
    • default: as VMs são migradas em direto para um novo nó.
    • migrate-within-node-group: as VMs são migradas em direto para outro nó no grupo de nós.
    • restart-in-place: as VMs são reiniciadas no mesmo nó depois de serem terminadas devido a um evento de manutenção.
  • zone: zona na qual criar o grupo de nós.
  • mode: modo do escalador automático neste grupo de nós. Definido para um dos seguintes valores:
    • off: desativa o redimensionador automático.
    • on: permite aumentar e diminuir a escala.
    • only-scale-out: permite apenas o aumento da escala. Tem de usar este modo se os seus grupos de nós estiverem configurados para reiniciar as VMs alojadas em servidores mínimos.
  • max-nodes: tamanho máximo do grupo de nós. Definido para um valor inferior ou igual a 100 e superior ou igual a min-nodes.
  • min-nodes: tamanho mínimo do grupo de nós e tem de ser um valor inteiro inferior ou igual a max-nodes. O valor predefinido é 0.

REST

O exemplo seguinte mostra como usar o comando nodeGroups.insert para ativar o dimensionamento automático quando cria um grupo de nós. Para adicionar um escalador automático a um grupo de nós existente, 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 o seguinte:

  • project-id: ID do projeto para o qual adicionar um grupo de nós com um escalador automático.
  • zone: zona na qual criar o novo grupo de nós.
  • initial-node-count: obrigatório quando cria o grupo de nós. Isto especifica o número inicial de nós no grupo de nós. Se o valor de min-nodes for superior à quantidade de nós inicial, o tamanho do grupo de nós é expandido 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 criar o grupo de nós.
  • mode: modo do escalador automático neste grupo de nós. Defina uma das seguintes opções:
    • OFF: desativa o redimensionador automático.
    • ON: permite aumentar e diminuir a escala.
    • ONLY_SCALE_OUT: permite apenas o aumento da escala. Tem de usar este modo se os seus grupos de nós estiverem configurados para reiniciar as VMs alojadas em servidores mínimos.
  • max-nodes: tamanho máximo do grupo de nós. Definido para um valor inferior ou igual a 100 e superior ou igual a min-nodes.
  • min-nodes: tamanho mínimo do grupo de nós e tem de ser um valor inteiro inferior ou igual a max-nodes. O valor predefinido é 0.
  • maintenance-policy: especifica se as VMs migram e se são reiniciadas durante eventos de manutenção do anfitrião. Defina este elemento para um dos seguintes valores:
    • DEFAULT: as VMs são migradas em direto para um novo nó.
    • MIGRATE_WITHIN_NODE_GROUP: as VMs são migradas em direto para outro nó no grupo de nós.
    • RESTART_IN_PLACE: as VMs são reiniciadas no mesmo nó depois de serem terminadas devido a um evento de manutenção.

Atualize as definições do redimensionador automático

Altere as definições do redimensionador automático num grupo de nós atualizando o modo do redimensionador automático ou atualizando o tamanho mínimo e máximo do grupo de nós.

gcloud

O exemplo seguinte mostra como usar o comando node-groups update para alterar o modo do escalador automático num grupo de nós.

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

Substitua o seguinte:

  • name: nome do grupo de nós no qual alterar o modo do escalador automático.
  • mode: modo do escalador automático neste grupo de nós. Defina uma das seguintes opções:
    • off: desativa o redimensionador automático.
    • on: permite aumentar e diminuir a escala.
    • only-scale-out: permite apenas o aumento da escala. Tem de usar este modo se os seus grupos de nós estiverem configurados para reiniciar as VMs alojadas em servidores mínimos.
  • max-nodes: tamanho máximo do grupo de nós. Definido para um valor inferior ou igual a 100 e superior ou igual a min-nodes.
  • min-nodes: tamanho mínimo do grupo de nós e tem de ser um valor inteiro inferior ou igual a max-nodes. O valor predefinido é 0.

REST

O exemplo seguinte mostra como usar o comando nodeGroups.patch para alterar o modo de um escalador automático num 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 o seguinte:

  • project-id: ID do projeto que contém o grupo de nós para o qual alterar o modo do escalador automático.
  • group-zone: zona que contém o grupo de nós para o qual alterar o modo do redimensionador automático.
  • group-name: nome do grupo de nós para o qual quer alterar o modo do redimensionador automático.
  • template-name: nome do modelo de nó a partir do qual o grupo de nós foi criado.
  • mode: modo do escalador automático neste grupo de nós. Definido para uma das seguintes opções:

    • OFF: desativa o redimensionador automático.
    • ON: permite aumentar e diminuir a escala.

    • ONLY_SCALE_OUT: permite apenas o aumento da escala. Tem de usar este modo se os seus grupos de nós estiverem configurados com a política de manutenção Migrar no grupo de nós.

  • max-nodes: tamanho máximo do grupo de nós. Definido para um valor inferior ou igual a 100 e superior ou igual a min-nodes.

  • min-nodes: tamanho mínimo do grupo de nós e tem de ser um valor inteiro inferior ou igual a max-nodes. O valor predefinido é 0.

Atualize manualmente o tamanho dos grupos de nós com dimensionamento automático

Quando o escalador automático está ativado, o tamanho do grupo de nós é gerido automaticamente, mas pode agendar ou remover VMs nesse grupo de nós para atualizar manualmente o tamanho do grupo.

Para diminuir manualmente o tamanho de um grupo de nós com escalonamento automático, elimine VMs do nó até que o nó esteja vazio. Quando o nó está vazio, o escalador automático remove o nó vazio, o que diminui o tamanho do grupo de nós.

Para aumentar manualmente o tamanho de um grupo de nós com escalamento automático, defina o tamanho mínimo do grupo para um valor superior ao tamanho atual. Quando o tamanho mínimo de um grupo é definido para um valor superior ao tamanho atual, o dimensionamento automático aumenta o tamanho do grupo para o tamanho mínimo especificado recentemente.

Quando os grupos de nós estão definidos para serem apenas dimensionados horizontalmente, o dimensionador automático gere automaticamente os aumentos no tamanho do grupo e desativa os aumentos manuais do tamanho do grupo. Com esta definição, pode diminuir o tamanho de um grupo removendo VMs de um nó até que esse nó fique vazio e, em seguida, pode remover o nó vazio.

Desative o escalador automático

Quando já não precisar de usar o dimensionador automático para gerir automaticamente os tamanhos dos seus grupos de nós ou se precisar de gerir manualmente os tamanhos dos seus grupos de nós, desative o dimensionador automático.

gcloud

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

Substitua name pelo nome do grupo de nós do qual quer remover a política de escalabilidade automática.

REST

O exemplo seguinte mostra como usar o comando nodeGroups.patch para desativar um escalador automático num 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 o seguinte:

  • project-id: ID do projeto que contém o grupo de nós para o qual alterar o modo do escalador automático.
  • group-zone: zona que contém o grupo de nós para o qual alterar o modo do redimensionador automático.
  • group-name: nome do grupo de nós para o qual quer alterar o modo do redimensionador automático.
  • template-name: nome do modelo de nó a partir do qual o grupo de nós foi criado.
  • mode: modo do escalador automático neste grupo de nós. Defina como OFF para desativar o redimensionador automático neste grupo de nós.

Veja a atividade do escalador automático

Na Google Cloud consola, veja o escalador automático a ajustar os tamanhos dos seus grupos de nós. A Google Cloud consola mostra o tamanho atual do grupo de nós e, se o escalador automático estiver a ajustar o tamanho do grupo, também pode ver o tamanho alvo do grupo de nós.

Consola

  1. Na Google Cloud consola, aceda à página Nós de inquilino único.

    Aceda a Nós de inquilino único

  2. Clique em Grupos de nós.

  3. Veja o número de nós em cada grupo de nós e, se o Compute Engine estiver a dimensionar o grupo de nós, também pode ver o número de nós de destino.

O que se segue?