Reservas de recursos de nó no AKS (Serviço de Kubernetes do Azure)

Neste artigo, você saberá mais sobre reservas de recursos de nó no AKS (Serviço de Kubernetes do Azure).

Reservas de recursos

O AKS usa recursos de nó para ajudar a função de nós como parte do cluster. Esse uso pode causar uma discrepância entre os recursos totais do nó e os recursos alocados no AKS.

O AKS reserva dois tipos de recursos, CPU e memória, em cada nó para manter o desempenho e a funcionalidade do nó. À medida que um nó aumenta em recursos, a reserva de recursos também cresce devido a uma necessidade maior de gerenciamento de pods implantados pelo usuário. Tenha em mente que você não pode alterar reservas de recursos em um nó.

Reservas de CPU

A CPU reservada depende do tipo de nó e da configuração de cluster, o que pode reduzir a CPU alocável devido à execução de recursos adicionais. A tabela a seguir mostra as reservas de CPU em mililitros:

Núcleos de CPU no host Um núcleo 2 núcleos 4 núcleos 8 núcleos 16 núcleos 32 núcleos 64 núcleos
CPU reservada para o Kube (multicores) 60 100 140 180 260 420 740

Reservas de memória

No AKS, a memória reservada consiste na soma de dois valores:

AKS 1.29 e versões posteriores

  • Por padrão, o daemon kubelet tem a regra de remoção memory.available<100 Mi. Essa regra garante que um nó tenha pelo menos 100 Mi passíveis de alocação em todos os momentos. Quando um host está abaixo do limite de memória disponível, o kubelet dispara o encerramento de um dos pods em execução e libera a memória no computador host.

  • Uma taxa de reservas de memória definida de acordo com o valor inferior de: 20 MB * número máximo de pods com suporte no nó + 50 MB ou 25% do total de recursos de memória do sistema.

    Exemplos:

    • Se a máquina virtual (VM) fornecer 8 GB de memória e o nó der suporte a até 30 pods, o AKS reservará 20 MB * 30 pods no máximo + 50 MB = 650 MB para kube-reserved. Allocatable space = 8 GB - 0.65 GB (kube-reserved) - 0.1 GB (eviction threshold) = 7.25 GB or 90.625% allocatable.
    • Se a VM fornecer 4 GB de memória e o nó der suporte a até 70 pods, o AKS reservará 25% * 4 GB = 1.000 MB para kube-reserved, pois isso é inferior a 20 MB * 70 pods no máximo + 50 MB = 1.450 MB.

    Para obter mais informações, confira Configurar o número máximo de pods por nó em um cluster do AKS.

Versões do AKS anteriores à 1.29

  • Por padrão, o daemon kubelet tem a regra de remoção memory.available<750 Mi. Essa regra garante que um nó tenha pelo menos 750 Mi passíveis de alocação em todos os momentos. Quando um host está abaixo do limite de memória disponível, o kubelet dispara o encerramento de um dos pods em execução e libera a memória no computador host.
  • Uma taxa regressiva de reservas de memória para o daemon kubelet funcionar adequadamente (kube-reserved).
    • 25% dos primeiros 4 GB de memória
    • 20% dos primeiros 4 GB de memória (até 8 GB)
    • 10% dos primeiros 8 GB de memória (até 16 GB)
    • 6% dos primeiros 112 GB de memória (até 128 GB)
    • 2% de qualquer memória com mais de 128 GB

Observação

O AKS reserva mais 2 GB para o processo do sistema em nós do Windows que não fazem parte da memória calculada.

As regras de alocação de memória e CPU foram projetadas para:

  • Mantenha a integridade dos nós de agente, incluindo alguns pods de sistema de hospedagem críticos para a integridade do cluster.
  • Faz com que o nó relate menos memória alocável e CPU do que relataria se ele não fosse parte de um cluster Kubernetes.

Por exemplo, se um nó oferecer 7 GB, ele relata 34% de memória não alocável, incluindo o limite de remoção rígido de 750Mi.

0.75 + (0.25*4) + (0.20*3) = 0.75 GB + 1 GB + 0.6 GB = 2.35 GB / 7 GB = 33.57% reserved

Além das reservas para o Kubernetes em si, o sistema operacional do nó subjacente também reserva uma quantidade de recursos de CPU e memória para manter o funcionamento das funções do SO.

Para ver as melhores práticas associadas, confira Melhores práticas para recursos básicos do agendador no AKS.

Próximas etapas