Acerca do redimensionador automático de clusters

Este documento descreve o escalador automático de clusters, que controla automaticamente a dimensão dos seus conjuntos de nós. A escala automática do cluster é ativada quando especifica valores mínimos e máximos para o número de nós num node pool. Especifica esses valores quando cria um node pool ou atualiza um node pool.

O GKE on AWS usa o redimensionador automático de clusters do Kubernetes de código aberto.

Escalone automaticamente um node pool

O redimensionador automático de clusters redimensiona automaticamente o número de nós num determinado conjunto de nós com base nas exigências das suas cargas de trabalho. Não precisa de adicionar nem remover nós manualmente, nem de aprovisionar em excesso os seus conjuntos de nós. Em alternativa, especifica um tamanho mínimo e máximo para o conjunto de nós, e o resto é automático.

Se for necessário eliminar ou mover recursos enquanto dimensiona automaticamente o cluster, as suas cargas de trabalho podem sofrer uma interrupção temporária. Por exemplo, se a sua carga de trabalho consistir num controlador com uma única réplica, o pod dessa réplica pode ser reagendado para um nó diferente se o nó atual for eliminado. Por este motivo, tem de conceber as suas cargas de trabalho para tolerarem uma potencial interrupção ou garantir que os pods críticos não são interrompidos.

Como funciona o redimensionador automático de clusters

O redimensionador automático de clusters funciona por node pool. Quando usa o escalador automático de clusters para configurar um node pool, especifica um tamanho mínimo e máximo para o node pool. Pode alterar o tamanho mínimo e máximo quando criar um conjunto de nós ou atualizar um conjunto de nós.

O redimensionador automático de cluster aumenta ou diminui automaticamente o tamanho do conjunto de nós com base nos pedidos de recursos (em vez da utilização real de recursos) nesse conjunto de nós. O escalador automático do cluster adiciona nós se os objetos Pod não forem agendáveis e não houver capacidade suficiente no conjunto de nós para satisfazer os pedidos.

O redimensionador automático de clusters também remove nós se estiverem subutilizados e todos os objetos Pod puderem ser agendados num número menor de nós. Se não for possível esvaziar o nó corretamente após 10 minutos, o nó é terminado à força. Este período não é configurável.

Se um pod pedir recursos insuficientes (por exemplo, se as predefinições forem insuficientes), o redimensionador automático de cluster não corrige a situação. Pode ajudar a garantir que o redimensionador automático de clusters funciona com a maior precisão possível criando pedidos de recursos adequados para todas as suas cargas de trabalho. Para mais informações, consulte o artigo Gerir recursos para contentores.

Anotações de pods e comportamento do redimensionador automático de cluster

O redimensionador automático de cluster tem em conta determinadas anotações de pods ao tomar decisões de redimensionamento. Por exemplo, o redimensionador automático de cluster suporta anotações de pods, como "cluster-autoscaler.kubernetes.io/safe-to-evict": "false". Esta anotação, quando definida como "false", impede que o nó que aloja o pod seja removido durante um evento de redução de escala. Compreender e usar estas anotações pode ajudar a ajustar o comportamento do escalador automático para satisfazer os requisitos da sua carga de trabalho.

Para mais informações sobre as anotações de pods e os respetivos efeitos no escalador automático do cluster, consulte os seguintes recursos:

Critérios de funcionamento

O redimensionador automático de cluster faz as seguintes suposições ao redimensionar um node pool:

  • Todos os objetos Pod replicados podem ser reiniciados noutro nó, o que pode causar uma breve interrupção. Se a sua carga de trabalho não tolerar interrupções, configure a carga de trabalho para ser executada num conjunto de nós com o dimensionamento automático desativado. Para mais informações, consulte Controlar a programação com taints de nós.
  • O redimensionador automático de clusters pode substituir quaisquer operações de gestão de nós manuais que realize.
  • Todos os nós num único conjunto de nós têm o mesmo conjunto de etiquetas.
  • O escalador automático do cluster seleciona um grupo de nós com o menor número de CPUs inativas ou memória não usada após o aumento da escala. Este comportamento afeta os conjuntos de nós que são dimensionados se tiver diferentes tamanhos de nós (por exemplo, nós com CPU elevada ou memória elevada) no mesmo cluster.

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

Pode especificar o tamanho mínimo e máximo de cada conjunto de nós no cluster com as flags min-nodes e max-nodes. Para desativar a escala automática, defina min-nodes e max-nodes para o mesmo número. O redimensionador automático de clusters toma decisões de escalabilidade dentro destes limites de tamanho.

Quando define o tamanho máximo dos seus conjuntos de nós, certifique-se de que é suficientemente grande para executar todas as suas cargas de trabalho. Se os conjuntos de nós no seu cluster não tiverem memória e CPU suficientes disponíveis para executar todas as suas cargas de trabalho, podem ocorrer interrupções.

Use um PodDisruptionBudget para proteger cargas de trabalho

Pode configurar o GKE no AWS para se proteger contra a interrupção da carga de trabalho com um PodDisruptionBudget. Quando cria um PodDisruptionBudget, especifica o número mínimo de réplicas do pod que devem estar disponíveis ou o número máximo de réplicas do pod que podem estar indisponíveis em qualquer altura. Para mais informações, consulte o artigo Especificar um orçamento de interrupção para a sua aplicação.

Aumente a escala a partir de zero nós

A partir das seguintes versões do GKE no AWS, o escalador automático de clusters suporta o aumento da escala de node pools a partir de zero nós:

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

Se estiver a usar uma versão anterior, tem de atualizar o cluster para uma destas versões para usar esta funcionalidade. Para ativar esta funcionalidade para clusters existentes, atualize o cluster para uma versão suportada e, em seguida, faça uma atualização contínua dos node pools atualizando a respetiva versão do Kubernetes. Para mais informações sobre como atualizar os node pools, consulte o artigo Atualize um node pool.

O escalador automático de clusters respeita as etiquetas e as restrições que define nos node pools quando toma decisões de escalamento, mesmo quando não estão disponíveis nós para referência. O GKE on AWS define automaticamente as etiquetas e as tags de contaminação necessárias no grupo de dimensionamento automático da AWS subjacente do conjunto de nós. Para mais informações acerca destas etiquetas, consulte a secção Configuração da deteção automática da página do GitHub que descreve a configuração do redimensionador automático de clusters para a AWS.

Ao definir estas etiquetas de identificação e de contaminação, o GKE na AWS permite que o escalador automático do cluster crie modelos de nós precisos. Os modelos de nós são representações virtuais de nós que incluem a configuração, as etiquetas e as restrições corretas dos nós, mesmo quando não existem nós físicos no conjunto de nós. Como resultado de ter estes modelos de nós precisos, o redimensionador automático de cluster pode tomar decisões de expansão corretas.

Ao configurar taints nos seus conjuntos de nós, tenha em atenção que os grupos de dimensionamento automático da AWS têm uma limitação: se aplicar vários taints com a mesma chave, mas combinações de valor-efeito diferentes, apenas o último taint aplicado com a chave duplicada é considerado pelo dimensionador automático do cluster.

Mais informações

Para saber mais sobre o escalador automático de clusters e como evitar interrupções, consulte os seguintes recursos:

O que se segue?