Prenotazioni di risorse del nodo nel servizio Azure Kubernetes
Questo articolo illustra le prenotazioni delle risorse del nodo nel servizio Azure Kubernetes.
Prenotazioni di risorse
Il servizio Azure Kubernetes usa le risorse del nodo per facilitare la funzione del nodo nell’ambito del cluster. Questo utilizzo può causare una discrepanza tra le risorse totali del nodo e le risorse allocabili nel servizio Azure Kubernetes.
Il servizio Azure Kubernetes riserva due tipi di risorse, CPU e memoria, in ogni nodo per mantenere le prestazioni e le 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.
Prenotazioni 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 CPU nell'host | 1 core | 2 core | 4 core | 8 core | 16 core | 32 core | 64 core |
---|---|---|---|---|---|---|---|
CPU riservata kube (millicore) | 60 | 100 | 140 | 180 | 260 | 420 | 740 |
Prenotazioni di memoria
Nel servizio Azure Kubernetes la memoria riservata è costituita dalla somma di due valori:
Servizio Azure Kubernetes 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, il servizio Azure Kubernetes riserva 20 MB * 30 pod massimi + 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 macchina virtuale fornisce 4 GB di memoria e il nodo supporta fino a 70 pod, il servizio Azure Kubernetes riserva il 25% * 4 GB = 1000 MB per kube-reserved, perché è minore di 20 MB * 70 pod massimi + 50 MB = 1450 MB.
Per altre informazioni, vedere Configurare il numero massimo di pod per nodo in un cluster del servizio Azure Kubernetes.
- Se la macchina virtuale (VM) fornisce 8 GB di memoria e il nodo supporta fino a 30 pod, il servizio Azure Kubernetes riserva 20 MB * 30 pod massimi + 50 MB = 650 MB per kube-reserved.
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. - Frequenza regressiva delle prenotazioni di memoria per il daemon kubelet per il corretto funzionamento (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
Il servizio Azure Kubernetes riserva 2 GB aggiuntivi per i processi di sistema nei nodi Windows che non fanno parte della 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 associate, vedere Procedure consigliate per le funzionalità dell’utilità di pianificazione di base del servizio Azure Kubernetes.
Passaggi successivi
Azure Kubernetes Service