Kapazitätsreserven

Mit Kapazitätspuffern können Sie die Startlatenz von Pods für Ihre Google Kubernetes Engine-Arbeitslasten (GKE) reduzieren, indem Sie die freie Kapazität in Ihrem Cluster proaktiv verwalten. Wenn Sie freie Kapazität im Voraus reservieren, ist bei Bedarf Kapazität auf den Knoten verfügbar. So wird die Zeit verkürzt, die zum Planen neuer Pods bei Skalierungsereignissen benötigt wird.

In diesem Dokument wird die Funktionsweise von Kapazitätspuffern erläutert. Informationen zum Aktivieren und Verwenden von Kapazitätspuffern finden Sie unter Kapazitätspuffer konfigurieren.

Wann sollte ein Kapazitätspuffer verwendet werden?

Verwenden Sie einen Kapazitätspuffer für Anwendungen, die empfindlich auf die Startlatenz reagieren und schnell skaliert werden müssen. Bei plötzlichen Traffic-Spitzen bietet ein Kapazitätspuffer vorab bereitgestellte Kapazität.

Kapazitätspuffer bieten folgende Vorteile:

  • Minimierung der Skalierungslatenz: Mit Kapazitätspuffern werden kritische Arbeitslasten sofort auf vorab bereitgestellten Knoten ausgeführt. Kapazitätspuffer tragen dazu bei, die Verzögerung zu vermeiden, die mit dem VM-Start und dem Abrufen von Images verbunden ist. So können Sie auch bei Traffic-Spitzen strenge Service Level Objectives (SLOs) einhalten.
  • Kosteneffiziente Überbereitstellung: Mit Kapazitätspuffern können Sie ein Sicherheitsnetz mit fester Größe aufrechterhalten. Bei großen Arbeitslasten ist dieser Ansatz oft kostengünstiger als andere Methoden zur Überbereitstellung (z. B. das Senken der Zielnutzung von HorizontalPodAutoscaler (HPA)), bei denen die Leerlaufkapazität mit dem Wachstum des Clusters linear ansteigen kann.
  • Erfüllung der Arbeitslastanforderungen:Sie haben die volle Kontrolle über die Größe des Kapazitätspuffers. Sie können benutzerdefinierte DaemonSets oder Daten einbinden und das Vorabladen von Images sowie den Vorabstart von Arbeitslasten steuern.

Wir empfehlen Kapazitätspuffer für latenzempfindliche Arbeitslasten, die schnell skaliert werden müssen, z. B. für KI-Inferenz, Einzelhandelsanwendungen bei Verkaufsaktionen oder Spielserver bei hoher Spieleraktivität.

Wir empfehlen Kapazitätspuffer nicht für Arbeitslasten, die nicht empfindlich auf die Startlatenz reagieren, z. B. für Batchverarbeitungsjobs. Für diese Arbeitslasten bietet die Überbereitstellung von Ressourcen keinen Vorteil.

Funktionsweise von Kapazitätspuffern

Implementieren Sie einen Kapazitätspuffer mit einer benutzerdefinierten Kubernetes-Ressource CapacityBuffer, um einen Puffer mit freier Kapazität zu definieren. Der GKE-Cluster-Autoscaler überwacht CapacityBuffer-Ressourcen und behandelt sie als ausstehende Nachfrage, um sicherzustellen, dass freie Kapazität verfügbar ist. Wenn Ihr Cluster nicht genügend Kapazität hat, um die im Puffer definierten Ressourcenanfragen zu erfüllen, stellt der Cluster-Autoscaler zusätzliche Knoten bereit.

Wenn eine Arbeitslast mit hoher Priorität skaliert wird, plant GKE die Arbeitslast sofort auf der verfügbaren Kapazität im Puffer. Diese sofortige Planung gilt für die Anzahl der Replikate oder die im Puffer reservierte Ressourcenmenge. So wird die typische Verzögerung vermieden, die mit der Knotenbereitstellung verbunden ist. Wenn eine Arbeitslast eine Puffereinheit verwendet, stellt der Cluster-Autoscaler einen neuen Knoten bereit, um den Puffer wieder aufzufüllen.

Ein aktiver Puffer bietet laufende VMs für die Skalierung von Arbeitslasten mit niedriger Latenz, die in die reservierte Kapazität passen. Da die Knoten bereits bereit sind, bieten sie die niedrigstmögliche Latenz für die anfängliche Puffernutzung bei einem Skalierungsereignis.

CapacityBuffer CRD

Um einen Kapazitätspuffer zu konfigurieren, erstellen Sie eine benutzerdefinierte Ressourcendefinition (CustomResourceDefinition, CRD) vom Typ CapacityBuffer. Sie können den Kapazitätspuffer nach verschiedenen Kriterien konfigurieren:

  • Feste Replikate: Geben Sie eine feste Anzahl von Puffer-Pods an. Diese Konfiguration ist die einfachste Möglichkeit, einen Puffer mit einer bekannten Größe zu erstellen.
  • Prozentual: Definieren Sie die Puffergröße als Prozentsatz einer vorhandenen skalierbaren Arbeitslast, z. B. einer Bereitstellung. Die Puffergröße wird dynamisch angepasst, während die Referenzarbeitslast skaliert wird.
  • Ressourcenlimits: Definieren Sie die Gesamtmenge an CPU und Arbeitsspeicher, die der Puffer reservieren soll. Der Controller berechnet anhand der Ressourcenanfragen einer referenzierten Pod-Vorlage, wie viele Puffer-Pods erstellt werden müssen.

Weitere Informationen finden Sie in der Referenzdokumentation zur CapacityBuffer CRD.

Anforderungen und Einschränkungen

Für Kapazitätspuffer gelten die folgenden Anforderungen und Einschränkungen:

  • Kapazitätspuffer sind für GKE-Cluster mit Version 1.35.2-gke.1842000 oder höher verfügbar.
  • Kapazitätspuffer unterstützen nur Arbeitslasten, die ein knotenbasiertes Abrechnungsmodell verwenden. Kapazitätspuffer unterstützen keine Arbeitslasten, die das Pod-basierte Abrechnungsmodell verwenden.
  • Wir empfehlen, die automatische Knotenbereitstellung in Ihren Clustern zu aktivieren. Mit der automatischen Knotenbereitstellung kann der Cluster-Autoscaler neue Knotenpools basierend auf den Ressourcenanfragen in Ihrem CapacityBuffer erstellen. Wenn Sie die automatische Knotenbereitstellung nicht aktivieren, skaliert der Cluster-Autoscaler nur vorhandene Knotenpools.

Nächste Schritte