Conceitos de escalabilidade de cluster

Concluído

Consumo de nós

Na chave spec.containers.resources de um arquivo YAML de pod, você define o número de recursos que o pod requer. Depois que você cria um pod em um nó, o Kubernetes aloca automaticamente esse número especificado de recursos para o pod a fim de permitir a execução dele com a quantidade de energia necessária.

Um único nó é uma única VM (máquina virtual) que tem uma quantidade limitada de recursos, como CPU e RAM, disponíveis para pods. Não é possível ativar um número infinito de pods em um nó. Quando um nó não atende aos requisitos necessários para o recurso do pod, o pod compete com os recursos especificados pelos recursos do nó, o que leva à inanição do nó. O pod permanece em um status Pendente e não é agendado para nenhum nó até que recursos suficientes estejam disponíveis.

Escalabilidade de cluster

Para evitar a falta de nós, o operador precisa escalar horizontalmente o cluster e adicionar mais VMs ao pool de nós. É possível realizar manualmente a colocação em escala do cluster usando o comando az aks scale da CLI do Azure. Você também pode usar o portal do Microsoft Azure para escalar manualmente seu cluster. Entre no portal e selecione o cluster do AKS (Serviço de Kubernetes do Azure). Em Configurações, selecione pools de Nós. Selecione o pool de nós que você deseja escalar e, em seguida, selecione Escalar pool de Nós.

A colocação em escala manual pode ser desgastante, especialmente para clusters com demanda inconsistente e flutuante. Quando o número de pods flutua de forma consistente, é preciso monitorar constantemente a existência de pods não programados e fazer os ajustes necessários em tempo real.

Dimensionador automático de cluster

No AKS, a ferramenta dimensionador automático de cluster automatiza o processo de dimensionamento do cluster. Quando você o habilita em seu cluster do AKS, ele inspeciona pods não agendados com restrições de recursos e aumenta automaticamente o número de nós para atender aos requisitos.

Diagrama que mostra como funciona o dimensionador automático de clusters.

O dimensionador automático de cluster também pode diminuir o número de nós em um cluster se existir capacidade de cluster não utilizada por um período especificado. Quando essa condição é atendida, o dimensionador automático isola o nó (torna-o indisponível para o agendamento de novas cargas de trabalho) e o drena (move as cargas de trabalho atuais para outro nó). Como resultado, todos os pods agendados nesse nó são movidos com segurança para outros. Isso garante também que nenhum outro pod seja agendado durante o processo. Em seguida, ele remove o nó do pool.

Existem algumas situações em que o dimensionador automático do cluster não pode remover um nó devido a pods que não podem ser movidos para fora desse nó. Essas situações incluem:

  • Um pod é criado diretamente com um arquivo YAML e não está associado a nenhum controlador, como Implantações ou ConjuntosDeRéplica.
  • O PDB (orçamento de interrupção de pods) é muito restritivo e não permite que o número de pods fique abaixo de determinado limite.
  • O pod tem um seletor de nó para esse nó específico ou uma afinidade de nó que o impede de ir para outro lugar.

Quando o dimensionamento automático estiver habilitado, a colocação em escala manual do cluster será desabilitada.

Verificar seu conhecimento

1.

Como o dimensionador automático de cluster é diferente do HPA?

2.

Por que o dimensionador automático de cluster é necessário em um ambiente de produção?

3.

Em qual destas situações o cluster não consegue remover um nó?