Sobre o autoescalador de cluster

Este documento descreve o dimensionador automático de cluster, que controla automaticamente o tamanho dos seus pools de nós. O dimensionador automático de cluster é ativado quando você especifica valores mínimo e máximo para o número de nós em um pool de nós. Você especifica esses valores ao criar um pool de nós ou atualizar um pool de nós .

O GKE no Azure usa o dimensionador automático de cluster Kubernetes de código aberto.

Dimensionamento automático de um pool de nós

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

Se recursos precisarem ser excluídos ou movidos durante o dimensionamento automático do cluster, suas cargas de trabalho poderão sofrer interrupções temporárias. Por exemplo, se sua carga de trabalho consistir em um controlador com uma única réplica, o Pod dessa réplica poderá ser reprogramado para um nó diferente se o nó atual for excluído. Por isso, você deve projetar suas cargas de trabalho para tolerar possíveis interrupções ou garantir que Pods críticos não sejam interrompidos.

Como funciona o autoescalador de cluster

O dimensionador automático de cluster funciona por pool de nós. Ao usar o dimensionador automático de cluster para configurar um pool de nós, você especifica um tamanho mínimo e máximo para o pool. Você pode alterar os tamanhos mínimo e máximo ao criar um pool de nós ou atualizar um pool de nós .

O dimensionador automático de cluster aumenta ou diminui o tamanho do pool de nós automaticamente, com base nas solicitações de recursos (em vez da utilização real dos recursos) nesse pool de nós. O dimensionador automático de cluster adiciona nós se os objetos do Pod não puderem ser agendados 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 estiverem subutilizados e todos os objetos do Pod puderem ser agendados em um número menor de nós. Se o nó não puder ser drenado normalmente após 10 minutos, ele será encerrado à força. Este período não é configurável.

Se um Pod solicitar poucos recursos (por exemplo, se os padrões forem insuficientes), o dimensionador automático de cluster não corrigirá a situação. Você pode ajudar a garantir que o dimensionador automático de cluster funcione com a maior precisão possível criando solicitações de recursos adequadas para todas as suas cargas de trabalho. Para obter mais informações, consulte Gerenciando recursos para contêineres .

Anotações de pod e comportamento do autoescalador de cluster

O escalonador automático de cluster considera determinadas anotações de Pod ao tomar decisões de escalonamento. Por exemplo, o escalonador automático de cluster oferece suporte a anotações de Pod, como "cluster-autoscaler.kubernetes.io/safe-to-evict": "false" . Essa anotação, quando definida como "false", impede que o nó que hospeda o Pod seja removido durante um evento de redução de escala. Entender e usar essas anotações pode ajudar você a ajustar o comportamento do escalonador automático para atender aos seus requisitos de carga de trabalho.

Para obter mais informações sobre anotações de Pod e seus efeitos no dimensionador automático de cluster, consulte os seguintes recursos:

Critérios operacionais

O dimensionador automático de cluster faz as seguintes suposições ao redimensionar um pool de nós:

  • Todos os objetos Pod replicados podem ser reiniciados em algum outro nó, possivelmente causando uma breve interrupção. Se a sua carga de trabalho não tolerar interrupções, configure-a para ser executada em um pool de nós com o escalonamento automático desabilitado. Para obter mais informações, consulte Controlando o agendamento com contaminações de nós .
  • O autoescalador de cluster pode substituir quaisquer operações manuais de gerenciamento de nós que você executar.
  • Todos os nós em um único pool de nós têm o mesmo conjunto de rótulos.
  • O dimensionador automático de cluster seleciona um grupo de nós com a menor quantidade de CPU ociosa ou memória não utilizada após o dimensionamento vertical. Esse comportamento afeta quais pools de nós serão dimensionados verticalmente se você tiver tamanhos diferentes de nós (por exemplo, nós com alta CPU ou alta memória) no mesmo cluster.

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

Você pode especificar o tamanho mínimo e máximo para cada pool de nós no seu cluster com os sinalizadores min-nodes e max-nodes . Para desabilitar o dimensionamento automático, defina min-nodes e max-nodes com o mesmo número. O dimensionador automático do cluster toma decisões de dimensionamento dentro desses limites de tamanho.

Ao definir o tamanho máximo dos seus pools de nós, certifique-se de que eles sejam grandes o suficiente para executar todas as suas cargas de trabalho. Se os pools de nós do seu cluster não tiverem memória e CPU suficientes para executar todas as suas cargas de trabalho, poderão ocorrer interrupções.

Use um PodDisruptionBudget para proteger cargas de trabalho

Você pode configurar o GKE no Azure para proteger contra interrupções de carga de trabalho com um PodDisruptionBudget . Ao criar um PodDisruptionBudget , você especifica o número mínimo de réplicas de pod que devem estar disponíveis ou o número máximo de réplicas de pod que podem ficar indisponíveis a qualquer momento. Para obter mais informações, consulte Especificando um Orçamento de Interrupção para seu Aplicativo .

Mais informações

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

O que vem a seguir