Dela via


Nodresursreservationer i Azure Kubernetes Service (AKS)

I den här artikeln får du lära dig mer om nodresursreservationer i Azure Kubernetes Service (AKS).

Resursreservationer

AKS använder nodresurser för att hjälpa noderna att fungera som en del av klustret. Den här användningen kan orsaka en avvikelse mellan nodens totala resurser och de allokerbara resurserna i AKS.

AKS reserverar två typer av resurser, CPU och minne, på varje nod för att upprätthålla nodprestanda och -funktioner. När en nod växer i resurser växer även resursreservationerna på grund av ett högre behov av hantering av användardistribuerade poddar. Tänk på att du inte kan ändra resursreservationer på en nod.

CPU-reservationer

Reserverad PROCESSOR är beroende av nodtyp och klusterkonfiguration, vilket kan leda till mindre allokerbar CPU på grund av att extra funktioner körs. I följande tabell visas CPU-reservationer i millicores:

CPU-kärnor på värden 1 kärna 2 kärnor 4 kärnor 8 kärnor 16 kärnor 32 kärnor 64 kärnor
Kube-reserverad CPU (millicores) 60 100 140 180 260 420 740

Minnesreservationer

I AKS består reserverat minne av summan av två värden:

AKS 1.29 och senare

  • kubelet daemon har regeln memory.available < 100 Mi borttagning som standard. Den här regeln säkerställer att en nod har minst 100 mi allokeringsbar hela tiden. När en värd ligger under tröskelvärdet kubelet för tillgängligt minne utlöser avslutningen av en av de poddar som körs och frigör minne på värddatorn.

  • En minnesreservationshastighet som anges enligt det lägre värdet: 20 MB * Maximalt antal poddar som stöds på noden + 50 MB eller 25 % av de totala systemminnesresurserna.

    Exempel:

    • Om den virtuella datorn (VM) ger 8 GB minne och noden stöder upp till 30 poddar reserverar AKS 20 MB * 30 maxpoddar + 50 MB = 650 MB för kube-reserverade. Allocatable space = 8 GB - 0.65 GB (kube-reserved) - 0.1 GB (eviction threshold) = 7.25 GB or 90.625% allocatable.
    • Om den virtuella datorn ger 4 GB minne och noden har stöd för upp till 70 poddar reserverar AKS 25 % * 4 GB = 1 000 MB för kube-reserverade, eftersom detta är mindre än 20 MB * 70 Max poddar + 50 MB = 1450 MB.

    Mer information finns i Konfigurera maximala poddar per nod i ett AKS-kluster.

AKS-versioner före 1.29

  • kubelet daemon har regeln memory.available < 750 Mi borttagning som standard. Den här regeln säkerställer att en nod har minst 750 Mi allokeringsbar hela tiden. När en värd är under tröskelvärdet kubelet för tillgängligt minne utlöser avslutningen av en av de poddar som körs och frigör minne på värddatorn.
  • En regressiv frekvens av minnesreservationer för kubelet-daemon för korrekt funktion (kube-reserverad).
    • 25 % av de första 4 GB minnet
    • 20 % av de kommande 4 GB minnet (upp till 8 GB)
    • 10 % av de kommande 8 GB minnet (upp till 16 GB)
    • 6 % av de kommande 112 GB minne (upp till 128 GB)
    • 2 % av allt minne mer än 128 GB

Kommentar

AKS reserverar ytterligare 2 GB för systemprocesser i Windows-noder som inte ingår i det beräknade minnet.

Regler för minnes- och CPU-allokering är utformade för att:

  • Håll agentnoderna felfria, inklusive vissa värdsystempoddar som är viktiga för klustrets hälsa.
  • Gör så att noden rapporterar mindre allokerbart minne och PROCESSOR än vad den skulle rapportera om den inte var en del av ett Kubernetes-kluster.

Om en nod till exempel erbjuder 7 GB rapporterar den att 34 % av minnet inte kan allokeras, inklusive tröskelvärdet på 750 mi för hård borttagning.

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

Förutom reservationer för Själva Kubernetes reserverar det underliggande nodoperativsystemet även en mängd PROCESSOR- och minnesresurser för att underhålla OS-funktioner.

För tillhörande metodtips, se Metodtips för grundläggande scheduler-funktioner i AKS.

Nästa steg