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 ein Knoten mehr Ressourcen nutzt, steigt auch die Anzahl der reservierten Ressourcen aufgrund eines höheren Verwaltungsbedarfs 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 sich ein Host unter dem verfügbaren Speicherschwellenwert befindet, löst die kubelet das Beenden eines der ausgeführten Pods aus und gibt Arbeitsspeicher auf dem Hostcomputer frei.

  • Eine Rate der Speicherreservierungen gemäß dem niedrigeren Wert von: 20 MB * Max Pods unterstützt auf dem Knoten + 50 MB oder 25 % der gesamten Systemspeicherressourcen.

    Beispiele:

    • Wenn der virtuelle Computer (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-reserviert. 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-reserviert, 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.

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 sich ein Host unter dem verfügbaren Speicherschwellenwert befindet, löst die kubelet das Beenden eines der ausgeführten Pods aus und gibt Arbeitsspeicher auf dem Hostcomputer frei.
  • 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:

  • Gewährleisten Sie die Integrität der Agent-Knoten, von denen einige Systempods hosten, die für die Clusterintegrität wichtig 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, werden 34 % des Arbeitsspeichers einschließlich des festen Entfernungsschwellenwerts von 750 Mi als nicht zuteilbar angegeben.

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