Mit Kapazitätsreserven können Sie die Startlatenz von Pods für Ihre Google Kubernetes Engine-Arbeitslasten (GKE) reduzieren, indem Sie proaktiv Stufen für aktive oder Standby-Kapazität in Ihrem Cluster deklarieren. Wenn Sie im Voraus Reservekapazität deklarieren, können Sie Arbeitslasten kostengünstig und schneller starten.
In diesem Dokument wird die Funktionsweise von Kapazitätspuffern erläutert. Informationen zum Aktivieren und Verwenden von Kapazitätsreserven finden Sie unter Kapazitätsreserven konfigurieren.
Wann ist ein Kapazitätsbuffer sinnvoll?
Verwenden Sie einen Kapazitätsbuffer für Anwendungen, die empfindlich auf 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 ausgelegt ist. Bei einem anhaltenden Anstieg des Traffics bietet ein Standby-Puffer eine kostengünstigere Möglichkeit für die Pod-Planung als die Vorab-Bereitstellung.
Kapazitätspuffer bieten folgende Vorteile:
- Skalierungslatenz minimieren: Aktive Puffer stellen laufende VMs bereit, was die Latenz minimiert. Standby-Puffer werden schnell reaktiviert, sodass die Kapazität schneller verfügbar ist als bei neuen Knoten.
- Kosteneffiziente Überbereitstellung: Mit Kapazitätsreserven können Sie ein Sicherheitsnetz mit fester Größe aufrechterhalten. Bei umfangreichen Arbeitslasten ist dieser Ansatz oft kosteneffizienter als andere Methoden zur Überbereitstellung, z. B. das Senken der HPA-Nutzungsziele (HorizontalPodAutoscaler), wodurch die Leerlaufkapazität linear mit dem Wachstum Ihres Clusters ansteigen kann.
- Arbeitslastanforderungen erfüllen:Sie haben die volle Kontrolle über die Größe des Kapazitätspuffers. Sie können beispielsweise benutzerdefinierte Daemonsets oder Daten einbinden und das Vorabladen von Images und den Vorabstart von Arbeitslasten an Ihre Anforderungen anpassen.
Wir empfehlen Kapazitätsreserven für latenzempfindliche Arbeitslasten, die eine schnelle Aufskalierung erfordern, z. B. KI-Agents, KI-Inferenz, Einzelhandelsanwendungen während Verkaufsaktionen oder Gameserver während der Hauptnutzungszeiten.
Wir empfehlen keine Kapazitätsreserven für Arbeitslasten, die nicht auf die Startlatenz reagieren, z. B. Batchverarbeitungsjobs. Bei diesen Arbeitslasten bietet die Überdimensionierung von Ressourcen keinen Vorteil.
Funktionsweise von Kapazitätsreserven
Implementieren Sie einen Kapazitätspuffer, indem Sie eine benutzerdefinierte Kubernetes-Ressource „CapacityBuffer“ verwenden, 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 Ressourcenanforderungen 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 für die verfügbare 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 bei der Knotenbereitstellung vermieden. Wenn für eine Arbeitslast eine Puffereinheit verwendet wird, stellt Cluster Autoscaler einen neuen Knoten bereit, um den Puffer wieder aufzufüllen.
Strategien für Kapazitätsreserven
Sie können Kapazitätsreserven mit verschiedenen Bereitstellungsstrategien konfigurieren, die auf Ihren Anforderungen an Latenz und Kosten basieren.
Aktiver Puffer
Ein aktiver Puffer stellt laufende VMs für die Skalierung von Arbeitslasten mit niedriger Latenz bereit, die in die reservierte Kapazität passen. Da die Knoten bereits bereit sind, ist die Latenz für den anfänglichen Pufferverbrauch bei einem Scale-up-Ereignis minimal.
Wir empfehlen diese Strategie für kritische Arbeitslasten, bei denen die Skalierungszeit höchste Priorität hat.
Stand‑by-Puffer
Ein Standby-Puffer stellt angehaltene VMs bereit. 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 geringfügige Verzögerung bei der Skalierung toleriert werden kann, um die Kosten zu optimieren.
CapacityBuffer CRD
Zum Konfigurieren eines Kapazitätsbuffers erstellen Sie eine CapacityBuffer CustomResourceDefinition (CRD). Sie können den Kapazitätspuffer so konfigurieren, dass er unterschiedliche 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 Skalierungsunterressource definiert (z. B. ein Deployment, StatefulSet, ReplicaSet oder 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 „replicas“ haben.
- Ressourcenlimits: Definieren Sie die Gesamtmenge an CPU und Arbeitsspeicher, die für den Puffer reserviert werden soll. Der Controller berechnet, wie viele Puffer-Pods basierend auf den Ressourcenanforderungen einer referenzierten Pod-Vorlage erstellt werden sollen.
Weitere Informationen finden Sie in der Referenzdokumentation zur CapacityBuffer CRD.
Anforderungen und Einschränkungen
Für Kapazitätsreserven gelten die folgenden Anforderungen und Einschränkungen:
- Kapazitätsreserven sind für GKE-Cluster mit Version 1.35.2-gke.1842000 oder höher für aktive Reserven und Version 1.35.2-gke.1842002 für Standby-Reserven verfügbar.
- Kapazitätsreserven werden nur für Arbeitslasten unterstützt, für die ein knotenbasiertes Abrechnungsmodell verwendet wird. Kapazitätspuffer werden nicht für Arbeitslasten unterstützt, die das Pod-basierte Abrechnungsmodell verwenden.
- Wir empfehlen, die automatische Knotenbereitstellung für Ihre Cluster 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 Cluster Autoscaler nur vorhandene Knotenpools hoch.
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.
- Confidential Google Kubernetes Engine-Knoten werden nicht unterstützt.
- Sie sollten mit den Einschränkungen im Zusammenhang mit Compute Engine-Vorgängen zum Anhalten und Fortsetzen vertraut sein, z. B. mit den Speicherlimits.
Nächste Schritte
- Informationen zum Implementieren eines Kapazitätsbuffers finden Sie unter Kapazitätsbuffer konfigurieren.