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

Neste artigo, vai aprender sobre reservas de recursos nos nós no Azure Kubernetes Service (AKS).

Reservas de recursos

AKS usa recursos dos nós para que os nós funcionem 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ó passa a ter mais recursos, as reservas de recursos também aumentam devido à maior necessidade de gestão dos pods implementados pelo utilizador. 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 da CPU no anfitrião 1 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 (millicores) 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 posteriores

  • kubelet daemon tem, por predefinição, a regra de expulsão memory.available < 100 Mi. Esta regra garante que um nó tenha, a todo o momento, pelo menos 100 Mi de capacidade alocável. 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 reserva de memória definida de acordo com o menor dos seguintes valores: 20 MB * número máximo de Pods suportado pelo nó + 50 MB ou 25% dos recursos totais 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, uma vez que este valor é inferior a 20 MB * 70 pods máximos + 50 MB = 1450 MB.

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

Nota

Para personalizar kubeReserved os valores de CPU e memória ou hardEvictionThreshold em conjuntos de nós Linux, utilize as definições de pré-visualização da configuração personalizada dos nós e registe o sinalizador de funcionalidade AKSNodeCustomizationPreview. Para mais informações, consulte Personalizar a configuração dos nós para conjuntos de nós do Azure Kubernetes Service (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 de capacidade alocável a todo o momento. 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ó indique menos memória e capacidade de CPU alocáveis do que indicaria se não fizesse parte de um cluster Kubernetes.

Por exemplo, se um nó oferece 7 GB, indica que 34% da memória não é alocável, incluindo o limiar de despejo rígido 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