Sobre o escalonador automático de clusters

Neste documento, descrevemos o escalonador automático de cluster, que controla automaticamente o tamanho dos pools de nós. O escalonador automático de cluster é ativado quando você especifica valores mínimos e máximos para o número de nós em um pool de nós. Especifique esses valores ao Criar um pool de nós ou Atualizar um pool de nós.

Escalonar automaticamente um pool de nós

O escalonador automático de clusters redimensiona automaticamente o número de nós em um determinado pool de nós, com base nas demandas das cargas de trabalho. Você não precisa adicionar ou remover manualmente os nós ou provisionar em excesso seus pools de nós. Em vez disso, especifique um tamanho mínimo e máximo para o pool de nós, e o restante é automático.

Se os recursos precisarem ser excluídos ou movidos durante o escalonamento automático do cluster, as cargas de trabalho poderão sofrer interrupções temporárias. Por exemplo, se a carga de trabalho consistir em um controlador com uma única réplica, o pod dessa réplica poderá ser remarcado em um nó diferente caso o nó atual seja excluído. Por isso, é preciso projetar suas cargas de trabalho para tolerar possíveis interrupções ou garantir que os pods críticos não sejam interrompidos.

Como funciona o escalonador automático de clusters

O autoescalador de clusters funciona por pool de nós. Ao usar o escalonador automático de clusters para configurar um pool de nós, especifique um tamanho mínimo e máximo para o pool de nós. É possível alterar o tamanho mínimo e máximo ao criar um pool de nós ou atualizar um pool de nós.

O escalonador automático de clusters aumenta ou diminui o tamanho do pool de nós automaticamente, com base nas solicitações de recursos dos pool de nós em vez da utilização real de recursos. O escalonador automático de cluster adicionará nós se os objetos do pod não puderem ser programados e não houver capacidade suficiente no pool de nós para atender às solicitações.

O escalonador automático de cluster também remove nós se eles forem subutilizados e todos os objetos de pod puderem ser programados em um número menor de nós. Se não for possível esvaziar o nó após 10 minutos, ele será encerrado. Esse período não é configurável.

Se um pod solicitar poucos recursos (por exemplo, se os padrões forem insuficientes), o escalonador automático de cluster não corrigirá a situação. Para garantir que o escalonador automático de clusters trabalhe com a maior precisão possível, crie solicitações de recursos adequadas para todas as cargas de trabalho. Para mais informações, veja Como gerenciar recursos para contêineres.

Critérios de operação

O escalonador automático de clusters parte dos seguintes pressupostos ao redimensionar um pool de nós:

  • Todos os objetos de pod replicados podem ser reiniciados em outro nó, o que pode causar uma breve interrupção. Se a carga de trabalho não tolerar interrupção, configure-a para ser executada em um pool de nós com o escalonamento automático desativado. Para mais informações, veja Como controlar a programação com taints de nó.
  • O escalonador automático de clusters pode substituir qualquer operação manual de gerenciamento de nós que você realize.
  • Todos os nós em um único pool têm o mesmo conjunto de rótulos.
  • O escalonador automático de clusters seleciona um grupo de nós com a CPU menos ociosa ou a memória não utilizada após efetuar o escalonamento vertical. Esse comportamento afeta quais pools de nós são escalonados verticalmente se você tiver tamanhos diferentes de nós, por exemplo, nós com grande quantidade de CPU ou de memória, no mesmo cluster.

Tamanho mínimo e máximo do pool de nós

É possível especificar os tamanhos mínimo e máximo de cada pool de nós no cluster com as sinalizações min-nodes e max-nodes. Para desativar o escalonamento automático, defina min-nodes e max-nodes como o mesmo número. O escalonador automático de clusters toma decisões de escalonamento dentro desses limites de tamanho.

Quando você define o tamanho máximo dos pools de nós, verifique se é grande o suficiente para executar todas as cargas de trabalho. Se os pools de nós em seu cluster não tiverem memória e CPU suficientes disponíveis para executar todas as cargas de trabalho, poderão ocorrer interrupções.

Usar um PodDisruptionBudget para proteger cargas de trabalho

É possível configurar o GKE na AWS para se proteger contra interrupções da carga de trabalho com um PodDisruptionBudget. Ao criar uma PodDisruptionBudget, você especifica o número mínimo de réplicas de pod que precisam estar disponíveis ou o número máximo de réplicas de pod que podem não estar disponíveis a qualquer momento. Para mais informações, consulte Como especificar um orçamento de interrupção para seu aplicativo.

Escalonar verticalmente do zero nó

Começando com as seguintes versões do GKE na AWS, o escalonador automático de cluster é compatível com o escalonamento vertical de pools de nós a partir de zero nós:

  • Versão 1.29 e mais recentes
  • Versões de 1.28 a partir de 1.28.8-gke.800 e mais recentes
  • Versões da 1.27 a partir da 1.27.12-gke.800

Se você estiver usando uma versão anterior, será necessário fazer upgrade do cluster para uma dessas versões para usar o recurso. Para ativar esse recurso nos clusters atuais, atualize o cluster para uma versão compatível e execute uma atualização gradual dos pools de nós atualizando a versão do Kubernetes. Para mais informações sobre como atualizar os pools de nós, consulte Atualizar um pool de nós.

O escalonador automático de cluster respeita os rótulos e as manchas que você define nos pools de nós ao tomar decisões de escalonamento, mesmo quando nenhum nó está disponível para referência. O GKE na AWS define automaticamente as tags necessárias de rótulo e taint no grupo do AWS Auto Scaling do pool de nós. Para mais informações sobre essas tags, consulte a seção Configuração de descoberta automática da página do GitHub que descreve a configuração do escalonador automático de cluster para a AWS.

Ao definir essas tags de rótulo e taint, o GKE na AWS permite que o escalonador automático de clusters crie modelos de nó precisos. Os modelos de nó são representações virtuais de nós que incluem a configuração, os rótulos e os taints corretos, mesmo quando não há nós físicos presentes no pool de nós. Como resultado de ter esses modelos de nó precisos, o escalonador automático de cluster pode tomar decisões corretas de escalonamento vertical.

Ao configurar taints nos pools de nós, lembre-se de que os grupos do AWS Auto Scaling têm uma limitação: se você aplicar vários taints com a mesma chave, mas diferentes combinações de efeito de valor, somente o último taint aplicado com a chave duplicada será considerado pelo escalonador automático de cluster.

A seguir