Prenotazioni di risorse dei nodi in Servizio Azure Kubernetes (AKS)

Questo articolo illustra le prenotazioni delle risorse del nodo nel servizio Azure Kubernetes.

Prenotazioni di risorse

AKS usa le risorse dei nodi per aiutare i nodi a funzionare come parte del cluster. Questo uso può causare una discrepanza tra le risorse totali del nodo e le risorse allocabili in AKS.

AKS riserva due tipi di risorse, CPU e memoria, su ogni nodo per mantenere prestazioni e funzionalità del nodo. Man mano che un nodo aumenta di dimensioni nelle risorse, la prenotazione delle risorse aumenta anche a causa della maggiore necessità di gestire i pod distribuiti dall'utente. Tenere presente che non è possibile modificare le prenotazioni delle risorse in un nodo.

Riserve della CPU

La CPU riservata dipende dal tipo di nodo e dalla configurazione del cluster, quindi la CPU potrebbero essere meno allocabile a causa dell'esecuzione di funzionalità aggiuntive. La tabella seguente mostra le prenotazioni della CPU in millicore:

Core della CPU sull'host 1 nucleo 2 nuclei 4 nuclei 8 nuclei 16 nuclei 32 core 64 core
CPU riservata a kube (millicore) 60 100 140 180 260 420 740

Prenotazioni di memoria

In AKS, la memoria riservata è la somma di due valori:

AKS 1.29 e versioni successive

  • Per impostazione predefinita, il kubelet daemon usa la regola di rimozione memory.available< 100 Mi. Questa regola garantisce che un nodo abbia almeno 100 Mi allocabili in qualsiasi momento. Quando un host è inferiore alla soglia di memoria disponibile, kubelet attiva la terminazione di uno dei pod in esecuzione e libera memoria nel computer host.

  • Frequenza di prenotazioni di memoria impostata in base al valore minore di: 20 MB * Numero massimo di pod supportati nel nodo + 50 MB o 20% delle risorse di memoria di sistema totali.

    Esempi:

    • Se la macchina virtuale (VM) fornisce 8 GB di memoria e il nodo supporta fino a 30 pod, AKS riserva 20 MB * 30 Max Pods + 50 MB = 650 MB per kube-reserved. Allocatable space = 8 GB - 0.65 GB (kube-reserved) - 0.1 GB (eviction threshold) = 7.25 GB or 90.625% allocatable.
    • Se la VM fornisce 4 GB di memoria e il nodo supporta fino a 70 pod, AKS riserva il 25% * 4 GB = 1000 MB per kube-reserved, poiché questo valore è inferiore a 20 MB * 70 pod max + 50 MB = 1450 MB.

    Per ulteriori informazioni, vedere Configurare il numero massimo di pod per nodo in un cluster di Azure Kubernetes Service (AKS).

Nota

Per personalizzare kubeReserved i valori di CPU e memoria o hardEvictionThreshold dei pool di nodi Linux, usare le impostazioni di anteprima per la configurazione personalizzata dei nodi e registrare il flag della funzionalità AKSNodeCustomizationPreview. Per altre informazioni, vedere Personalizzare la configurazione dei nodi per i pool di nodi di Servizio Azure Kubernetes (AKS).

Versioni del servizio Azure Kubernetes precedenti alla 1.29

  • Per impostazione predefinita, il kubelet daemon usa la regola di rimozione memory.available< 750 Mi. Questa regola garantisce che un nodo abbia almeno 750 Mi allocabili in qualsiasi momento. Quando un host è inferiore alla soglia di memoria disponibile, kubelet attiva la terminazione di uno dei pod in esecuzione e libera memoria nel computer host.
  • Una quantità regressiva di memoria riservata affinché il daemon kubelet funzioni correttamente (kube-reserved).
    • 25% dei primi 4 GB di memoria
    • 20% dei successivi 4 GB di memoria (fino a 8 GB)
    • 10% dei successivi 8 GB di memoria (fino a 16 GB)
    • 6% dei successivi 112 GB di memoria (fino a 128 GB)
    • 2% di qualsiasi memoria superiore a 128 GB

Nota

AKS riserva ulteriori 2 GB per i processi di sistema nei nodi Windows che non rientrano nella memoria calcolata.

Le regole di allocazione della memoria e della CPU sono progettate per:

  • Mantenere integri i nodi dell'agente, inclusi alcuni pod del sistema di hosting critici per l'integrità del cluster.
  • Verificare che il nodo segnali meno memoria e CPU allocabili rispetto a quanto segnalerebbe se non facesse parte di un cluster Kubernetes.

Ad esempio, se un nodo offre 7 GB, segnala il 34% della memoria non allocabile, inclusa la soglia di rimozione totale di 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

Oltre alle prenotazioni per Kubernetes stesso, il sistema operativo del nodo sottostante riserva anche una quantità di risorse CPU e memoria per gestire le funzioni del sistema operativo.

Per le procedure consigliate correlate, vedere Procedure consigliate per le funzionalità di base del pianificatore in AKS.

Passaggi successivi