Mit Kapazitätspuffern können Sie die Startlatenz von Pods für Ihre Google Kubernetes Engine-Arbeitslasten (GKE) reduzieren, indem Sie proaktiv Stufen der aktiven oder Standby-Kapazität in Ihrem Cluster deklarieren. Wenn Sie im Voraus zusätzliche Kapazität deklarieren, können Sie Arbeitslasten schneller und kostengünstiger starten.
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 auf die Startlatenz reagieren und schnell skaliert werden müssen. Bei plötzlichen Traffic-Spitzen bietet ein aktiver Puffer vorab bereitgestellte Kapazität, die für die Skalierung mit niedriger Latenz entwickelt wurde. Bei einem anhaltenden Anstieg des Traffics bietet ein Standby-Puffer die Pod-Planung zu einem günstigeren Preis als die Vorabbereitstellung.
Kapazitätspuffer bieten folgende Vorteile:
- Minimierung der Skalierungslatenz: Aktive Puffer bieten laufende VMs, die die Latenz minimieren. Standby-Puffer werden schnell wieder aufgenommen und bieten eine schnellere Kapazitätsverfügbarkeit als neue Knoten.
- Kosteneffiziente Überbereitstellung: Mit Kapazitätspuffern können Sie ein Sicherheitsnetz mit fester Größe aufrechterhalten. Für große Arbeitslasten ist dieser Ansatz oft kosteneffizienter als andere Methoden zur Überbereitstellung (z. B. das Senken der HorizontalPodAutoscaler-Nutzungsziele (HPA)), die die Leerlaufkapazität mit dem Wachstum Ihres Clusters linear erhöhen können.
- 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 an Ihre Anforderungen anpassen.
Wir empfehlen Kapazitätspuffer für latenzempfindliche Arbeitslasten, die eine schnelle Aufskalierung erfordern, z. B. KI-Agents, KI-Inferenz, Einzelhandelsanwendungen bei Verkaufsveranstaltungen oder Gameserver bei hoher Spieleraktivität.
Wir empfehlen keine Kapazitätspuffer für Arbeitslasten, die nicht auf die Startlatenz reagieren, z. B. 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 zusätzlicher Kapazität zu definieren. Der GKE-Cluster-Autoscaler überwacht CapacityBuffer-Ressourcen und behandelt sie als ausstehende Nachfrage, um sicherzustellen, dass zusätzliche 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 Ressourcenmenge, die im Puffer reserviert ist. So wird die typische Verzögerung bei der Knotenbereitstellung vermieden. Wenn eine Arbeitslast eine Puffereinheit verwendet, stellt der Cluster-Autoscaler einen neuen Knoten bereit, um den Puffer wieder aufzufüllen.
Strategien für Kapazitätspuffer
Sie können Kapazitätspuffer mit verschiedenen Bereitstellungsstrategien konfigurieren, die auf Ihren Anforderungen an Latenz und Kosten basieren.
Aktiver Puffer
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 eine minimale Latenz für den anfänglichen Pufferverbrauch bei einer Aufskalierung.
Wir empfehlen diese Strategie für kritische Arbeitslasten, bei denen die Aufskalierungszeit höchste Priorität hat.
Standby-Puffer
Ein Standby-Puffer bietet angehaltene VMs. Die Standby-Strategie ist kostengünstiger als die aktive Strategie, führt aber zu einer kurzen Verzögerung beim Fortsetzen der VM, bevor sie Arbeitslasten akzeptiert.
Wir empfehlen diese Strategie für Arbeitslasten, bei denen eine geringe Verzögerung bei der Skalierung akzeptabel ist, um die Kosten zu optimieren.
CapacityBuffer CRD
Zum Konfigurieren eines Kapazitätspuffers erstellen Sie eine CapacityBuffer-CustomResourceDefinition (CRD). Sie können den Kapazitätspuffer so konfigurieren, dass er verschiedene Kriterien erfüllt:
- 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 eines vorhandenen skalierbaren Objekts, das eine Skalierungs-Unterressource definiert (z. B. eine Bereitstellung, ein StatefulSet, ein ReplicaSet oder ein Job). Die Puffergröße wird dynamisch angepasst, wenn die Referenzarbeitslast skaliert wird. Sie können keinen prozentualen Puffer für Pod-Vorlagen definieren, da sie kein Feld für Replikate haben.
- 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 sollen.
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 für aktive Puffer und Version 1.35.2-gke.1842002 für Standby-Puffer 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.
Für Standby-Puffer gelten die folgenden zusätzlichen Einschränkungen:
- Sie werden nur für Standardcluster unterstützt.
- VMs mit angehängten GPUs oder TPUs werden nicht unterstützt.
- Lokale SSDs werden nicht unterstützt.
- Vertrauliche Google Kubernetes Engine-Knoten werden nicht unterstützt.
- Sie sollten mit den Einschränkungen im Zusammenhang mit den Vorgängen zum Anhalten und Fortsetzen von Compute Engine, z. B. mit den Arbeitsspeicherlimits, vertraut sein.
Nächste Schritte
- Informationen zum Implementieren eines Kapazitätspuffers finden Sie unter Kapazitätspuffer konfigurieren.