Conceitos de escalabilidade de cluster

Concluído

Nó de fome

spec.containers.resources Na chave de um arquivo YAML pod, você define o número de recursos que o pod requer. Depois de criar um novo pod dentro de um nó, o Kubernetes aloca automaticamente esse número especificado de recursos para o pod para que ele seja executado com a quantidade de energia necessária.

Um único nó é uma única máquina virtual (VM) que tem uma quantidade limitada de recursos disponíveis para pods, como CPU e RAM. Você não pode girar 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 para os recursos do nó, o que leva à fome do nó. O pod permanece em um status Pendente e não é agendado para nenhum nó até que recursos suficientes estejam disponíveis.

Escalabilidade do cluster

Para evitar a inanição do nó, o operador precisa dimensionar o cluster e adicionar mais VMs ao pool de nós. Você pode executar o dimensionamento manual de cluster usando o comando CLI az aks scale do Azure. Você também pode usar o portal do Azure para dimensionar manualmente seu cluster. Entre no portal e selecione seu cluster do Serviço Kubernetes do Azure (AKS). Em Configurações, selecione Pools de nós. Selecione o pool de nós que deseja dimensionar e, em seguida, selecione Dimensionar pool de nós.

O dimensionamento manual pode ser avassalador, especialmente para clusters com demanda inconsistente e flutuante. Quando o número de pods flutua consistentemente, você precisa monitorá-lo constantemente para pods não programados e fazer os ajustes necessários em tempo real.

Dimensionador automático de cluster

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

Diagrama que mostra como o autoscaler de cluster funciona.

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

Há algumas situações em que o autoscaler do cluster não pode remover um nó devido a pods que não podem ser movidos para fora desse nó. Estas situações incluem:

  • Um pod é criado diretamente com um arquivo YAML e não está vinculado a nenhum controlador, como Deployments ou ReplicaSets.
  • O Pod Disruption Budget (PDB) é muito restritivo e não permite que o número de pods fique abaixo de um 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 está habilitado, o dimensionamento manual do cluster é desabilitado.

Verifique o seu conhecimento

1.

Qual é a diferença entre o autoscaler de cluster e o HPA?

2.

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

3.

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