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

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

Reservas de recursos

O AKS usa recursos de nó para ajudar os nós a funcionar como parte do cluster. Esse uso pode causar uma discrepância entre os recursos totais do nó e os recursos alocáveis 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ó cresce em recursos, as reservas de recursos também crescem devido a uma maior necessidade de gerenciamento de pods implantados pelo usuário. Lembre-se de que não é possível alterar as reservas de recursos em um nó.

Reservas de CPU

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

Núcleos de CPU no host 1 núcleo 2 núcleos 4 cores 8 núcleos 16 núcleos 32 núcleos 64 núcleos
CPU com Kube reservado (milicores) 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 posterior

  • kubelet daemon tem a regra de remoção memory.available < 100 Mi por padrão. Esta regra garante que um nó tenha pelo menos 100 Mi alocáveis em todos os momentos. Quando um host está abaixo desse limite de memória disponível, o kubelet dispara o encerramento de um dos pods em execução e libera memória na máquina host.

  • Uma taxa de reservas de memória definida de acordo com o menor valor de: 20 MB * Max Pods suportados 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ó suportar até 30 pods, o AKS reservará 20 MB * 30 Max Pods + 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ó suportar até 70 pods, o AKS reservará 25% * 4 GB = 1000 MB para kube-reserved, pois isso é menos de 20 MB * 70 Max Pods + 50 MB = 1450 MB.

    Para obter mais informações, consulte Configurar pods máximos por nó em um cluster AKS.

Versões do AKS anteriores à 1.29

  • kubelet daemon tem a regra de despejo memory.available < 750 Mi por padrão. Esta regra garante que um nó tenha pelo menos 750 Mi alocáveis em todos os momentos. Quando um host está abaixo desse limite de memória disponível, o kubelet aciona o encerramento de um dos pods em execução e libera memória na máquina host.
  • Uma taxa regressiva de reservas de memória para o daemon kubelet funcionar corretamente (kube-reserved).
    • 25% dos primeiros 4 GB de memória
    • 20% dos próximos 4 GB de memória (até 8 GB)
    • 10% dos próximos 8 GB de memória (até 16 GB)
    • 6% dos próximos 112 GB de memória (até 128 GB)
    • 2% de qualquer memória superior a 128 GB

Nota

O AKS reserva 2 GB extras para processos 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 são projetadas para:

  • Mantenha os nós do agente íntegros, incluindo alguns pods do sistema de hospedagem críticos para a integridade do cluster.
  • Faça com que o nó relate menos memória e CPU alocáveis do que relataria se não fizesse parte de um cluster Kubernetes.

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

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 próprio Kubernetes, o sistema operacional do nó subjacente também reserva uma quantidade de recursos de CPU e memória para manter as funções do sistema operacional.

Para obter as práticas recomendadas associadas, consulte Práticas recomendadas para recursos básicos do agendador no AKS.

Próximos passos