Knotenressourcenreservierungen in Azure Kubernetes Service (AKS)

In diesem Artikel erfahren Sie mehr über Knotenressourcenreservierungen in Azure Kubernetes Service (AKS).

Ressourcenreservierungen

AKS verwendet Knotenressourcen, damit die Knoten als Teil des Clusters fungieren können. Diese Verwendung kann zu einer Abweichung zwischen den Gesamtressourcen des Knotens und den Ressourcen führen, die in AKS zugewiesen werden können.

Um die Leistung und Funktionalität des Knotens zu gewährleisten, reserviert AKS zwei Ressourcentypen auf jedem Knoten, CPU und Arbeitsspeicher. Wenn die Ressourcen eines Knotens zunehmen, steigen auch die Ressourcenreservierungen aufgrund des höheren Verwaltungsaufwands für vom Benutzer bereitgestellte Pods. Denken Sie daran, dass Sie keine Ressourcenreservierungen auf einem Knoten ändern können.

CPU-Reservierungen

Die reservierten CPU-Ressourcen hängen vom Knotentyp und der Clusterkonfiguration ab. Diese können dazu führen, dass weniger CPU-Ressourcen zugewiesen werden können, da zusätzliche Features ausgeführt werden. Die folgende Tabelle zeigt CPU-Reservierungen in Millicores:

CPU-Kerne auf dem Host 1 Kern 2 Kerne 4 Kerne 8 Kerne 16 Kerne 32 Kerne 64 Kerne
Kube-reservierte CPU (Millicores) 60 100 140 180 260 420 740

Speicherreservierungen

In AKS besteht der reservierte Speicher aus der Summe zweier Werte:

AKS 1.29 und höher

  • kubelet Daemon verfügt standardmäßig über die memory.available< 100Mi-Entfernungsregel. Durch diese Regel wird sichergestellt, dass ein Knoten immer über mindestens 100 Mi verfügt. Wenn ein Host unter diesen Schwellenwert für verfügbaren Speicher fällt, veranlasst kubelet die Beendigung eines der laufenden Pods und gibt Speicher auf dem Hostsystem frei.

  • Eine Speicherreservierungsrate, die anhand des kleineren der folgenden Werte festgelegt wird: 20 MB * maximale Anzahl der auf dem Knoten unterstützten Pods + 50 MB oder 25 % des gesamten Systemspeichers.

    Beispiele:

    • Wenn die virtuelle Maschine (VM) 8 GB Arbeitsspeicher bereitstellt und der Knoten bis zu 30 Pods unterstützt, reserviert AKS 20 MB * 30 max. Pods + 50 MB = 650 MB für kube-reserved. Allocatable space = 8 GB - 0.65 GB (kube-reserved) - 0.1 GB (eviction threshold) = 7.25 GB or 90.625% allocatable.
    • Wenn die VM 4 GB Arbeitsspeicher bereitstellt und der Knoten bis zu 70 Pods unterstützt, reserviert AKS 25 % * 4 GB = 1000 MB für kube-reserved, da dies weniger als 20 MB * 70 max. Pods + 50 MB = 1450 MB ist.

    Weitere Informationen finden Sie unter Konfigurieren der maximalen Pods pro Knoten in einem AKS-Cluster.

Hinweis

Um kubeReserved CPU- und Arbeitsspeicherwerte oder hardEvictionThreshold in Linux-Knotenpools anzupassen, verwenden Sie die Vorschau-Einstellungen für die benutzerdefinierte Knotenkonfiguration und registrieren Sie das AKSNodeCustomizationPreview-Featureflag. Weitere Informationen finden Sie unter Anpassen der Knotenkonfiguration für Azure Kubernetes Service (AKS) Knotenpools.

AKS-Versionen vor 1.29

  • kubelet Daemon verfügt standardmäßig über die memory.available<750Mi-Entfernungsregel. Durch diese Regel wird sichergestellt, dass ein Knoten immer über mindestens 750 Mi verfügt. Wenn ein Host unter diesen Schwellenwert für den verfügbaren Speicher fällt, löst kubelet das Beenden eines der laufenden Pods aus, um Speicher auf dem Host freizugeben.
  • Eine regressive Rate von Arbeitsspeicherreservierungen für den Kubelet-Daemon, damit er ordnungsgemäß funktioniert (kube-reserved)
    • 25 % der ersten 4 GB Arbeitsspeicher
    • 20 % der nächsten 4 GB Arbeitsspeicher (bis 8 GB)
    • 10 % der nächsten 8 GB Arbeitsspeicher (bis 16 GB)
    • 6 % der nächsten 112 GB Arbeitsspeicher (bis 128 GB)
    • 2 % des Arbeitsspeichers über 128 GB

Hinweis

AKS reserviert zusätzliche 2 GB für Systemprozesse in Windows-Knoten, die nicht Teil des berechneten Arbeitsspeichers sind.

Speicher- und CPU-Zuteilungsregeln sind konzipiert für:

  • Halten Sie die Agent-Knoten funktionsfähig, einschließlich einiger, die System-Pods hosten, die für die Gesundheit des Clusters entscheidend sind.
  • Dafür sorgen, dass der Knoten weniger zuteilbaren Arbeitsspeicher und CPU meldet, als wenn er nicht Teil eines Kubernetes-Clusters wäre.

Wenn ein Knoten beispielsweise 7 GB bietet, meldet er 34 % des Arbeitsspeichers einschließlich des festen Verdrängungsschwellenwerts von 750 Mi als nicht zuteilbar.

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

Zusätzlich zu den Reservierungen für Kubernetes selbst reserviert das zugrunde liegende Knotenbetriebssystem ebenfalls CPU- und Arbeitsspeicherressourcen für die Aufrechterhaltung der Betriebssystemfunktionen.

Entsprechende bewährte Methoden finden Sie unter Best Practices für grundlegende Schedulerfunktionen in Azure Kubernetes Service (AKS).

Nächste Schritte