GKE-Cluster zur Kostenoptimierung entwerfen und konfigurieren

In diesem Dokument finden Sie Richtlinien und Empfehlungen zur Kostenoptimierung in der Google Kubernetes Engine-Dokumentation (GKE). GKE bietet umfangreiche Autoscaling- und Planungsfunktionen, mit denen Sie die Clusterkosten minimieren und gleichzeitig die Anwendungsstabilität aufrechterhalten können.

Eine konsolidierte Übersicht über alle GKE-Best Practices finden Sie unter Best Practices für GKE.

Sie sollten bereits mit den folgenden Themen vertraut sein:

Übersicht

Bei der Implementierung von GKE müssen Sie verschiedene technische Aspekte berücksichtigen, um die Anwendungs- und Geschäftsanforderungen zu erfüllen. Neben der Definition von Netzwerk, Sicherheit, Speicher und anderen technischen Aspekten müssen Sie sowohl die Kosten als auch die Leistung bewerten, um die geschäftlichen Anforderungen zu erfüllen. Anstatt Kosten und Leistung als separate Einheiten zu betrachten, müssen Sie sie von Anfang an in die Infrastrukturplanung einbeziehen, um eine einheitliche Beziehung zu definieren, die sowohl die Zuverlässigkeit als auch die Cloud-Ausgaben bestimmt. Niedrige Kosten und hohe Zuverlässigkeit werden erwartet, aber mit zunehmender Skalierung steigt die Komplexität der Verwaltung dieses Kompromisses.

Um niedrige Kosten und Anwendungsstabilität zu erreichen, können Sie die folgenden GKE-Funktionen festlegen oder optimieren:

  • GKE-Konfiguration
  • Arbeitslastkonfiguration
  • Kosten-Baseline und -Transparenz

Sie können auch Best Practices zur Kostenoptimierung ermitteln und implementieren, indem Sie Compute Advisor (Vorschau) verwenden. Weitere Informationen finden Sie unter Compute Advisor verwenden.

GKE Autopilot verwenden

Wählen Sie für kleine Sandbox- oder Entwicklungsumgebungen Autopilot-Cluster aus. In Autopilot verwaltet GKE Knoten dynamisch und Sie werden nur für die angeforderte Pod-Kapazität in Rechnung gestellt. So vermeiden Sie Gebühren für VMs, Knotenbetriebssysteme und System-Overhead.

Weitere Informationen finden Sie unter GKE Autopilot – Übersicht.

Funktionsweise von Autoscaling

GKE-Autoscaling-Controller passen Ressourcen dynamisch an Änderungen bei Trafficanfragen an.

Pods anhand von Auslastungsmesswerten hinzufügen und entfernen

Ein HorizontalPodAutoscaler (HPA) fügt Pods basierend auf CPU- oder benutzerdefinierten Messwerten hinzu und entfernt sie.

Informationen zum horizontalen Pod-Autoscaling und dessen Konfiguration finden Sie in der folgenden GKE-Dokumentation:

Konfigurieren Sie einen Zielauslastungsschwellenwert (z. B. 70% oder 80%), um einen Puffer beizubehalten, der Trafficspitzen abfängt, während zusätzliche Replikat-Pods gestartet werden.

Pods anhand von Auslastungsmesswerten skalieren

Verwenden Sie VerticalPodAutoscaler (VPA), um die CPU- und Arbeitsspeicheranfragen für Container für Arbeitslasten dynamisch anzupassen, die kein horizontales Pod-Autoscaling verwenden oder bei denen die Spitzenarbeitslasten unbekannt sind.

Informationen zum vertikalen Pod-Autoscaling und dessen Konfiguration finden Sie in der folgenden GKE-Dokumentation:

Lassen Sie VPA in produktionsähnlichen Umgebungen mindestens 24 Stunden lang (idealerweise eine Woche) im Modus Off (nur Empfehlungen), um repräsentative Trafficmuster zu erfassen. Geben Sie explizite Mindest- und Höchstgrenzen in Ihrem VerticalPodAutoscaler-Objekt an, bevor Sie die Modi Initial oder Auto aktivieren, um unregelmäßige Anpassungen der Größe zu vermeiden.

Infrastrukturskalierung mit Cluster Autoscaler automatisieren

Wenn Sie die zugrunde liegenden Compute-Knoten anhand einer aktiven Planungssimulation und nicht anhand von Messwertlasten skalieren möchten, aktivieren Sie Cluster Autoscaler in GKE Standard-Knotenpools. Geben Sie die Mindestparameter für Knoten an, um die Baseline-Kapazität für die Nacht zu unterstützen.

Konfigurieren Sie immer ein PodDisruptionBudget-Objekt (PDB) für System- und Anwendungspods. Diese Konfiguration trägt dazu bei, dass Cluster Autoscaler nicht versehentlich zu Dienstunterbrechungen führt, wenn unterlastete Knotenpools konsolidiert oder verkleinert werden.

Informationen zum Cluster Autoscaler und dessen Konfiguration finden Sie in der folgenden GKE-Dokumentation:

Dynamische Knotenpools mit automatischer Knotenpoolerstellung bereitstellen

Aktivieren Sie die automatische Knotenpoolerstellung, um automatisch benutzerdefinierte GKE-Knotenpools zu generieren, deren Formen, CPU-Anzahlen oder Arbeitsspeicherlimits genau den Planungsparametern der ausstehenden Pods entsprechen. Mit dieser Funktion werden die Ressourcen minimiert, die auf überdimensionierten Knoten übrig bleiben.

Informationen zur automatischen Knotenpoolerstellung und deren Konfiguration finden Sie in der folgenden GKE-Dokumentation:

Checkliste für Autoscaling

Infrastrukturmerkmale

Richten Sie die Clusterhardware, den Standort und die Knotennetzwerkregeln an den Prioritäten für die Kostenoptimierung aus.

Geeignete Maschinentypen auswählen

Wählen Sie die geeigneten Maschinentypen für Ihren Cluster basierend auf dem Standort Ihrer Nutzer und dem Standort der Daten aus, auf die Ihr Cluster zugreifen muss.

Weitere Informationen finden Sie im Leitfaden zu Ressourcen und Vergleichen für Maschinenfamilien.

Fehlertolerante Arbeitslasten auf Spot-VMs bereitstellen

Mit Spot-VMs können Sie zustandslose, fehlertolerante oder Batch-Arbeitslasten mit einem Rabatt von bis zu 91% im Vergleich zu On-Demand-VM-Instanzen ausführen.

Weitere Informationen finden Sie in der folgenden GKE-Dokumentation:

Effiziente Maschinenfamilien und Betriebssystemeinstellungen zuordnen

Passen Sie die Maschineneinstellungen für Knotenpools mit kostengünstigen Instanzprofilen an (z. B. E2-VM-Architekturen).

Weitere Informationen zum Anpassen der Größe von Knoten, zum Konfigurieren der Zeitpunkte für die vorzeitige Beendigung von Spot-VM und zum Konfigurieren von Kernelkonfigurationen finden Sie unter Knotenpools.

Die geeignete Region auswählen

Wenn die Latenz Ihre Nutzer nicht beeinträchtigt, führen Sie Clusterarbeitslasten in Compute Engine-Regionen mit niedrigeren Betriebskosten aus.

Weitere Informationen finden Sie unter Best Practices für die Auswahl der Region in Compute Engine.

Für Rabatte für zugesicherte Nutzung registrieren

Erwerben Sie Rabatte für zugesicherte Nutzung (Committed Use Discounts, CUDs), um sich für ein oder drei Jahre einen stark ermäßigten Preis (bis zu 70%) für Compute-Ressourcen zu sichern.

Weitere Informationen finden Sie unter Ressourcenbasierte Rabatte für zugesicherte Nutzung.

Netzwerkkosten berücksichtigen

Regionale und multizonale GKE-Cluster verbessern die Zuverlässigkeit von Anwendungen, können aber interne Kosten für ausgehenden Netzwerk-Traffic zwischen Zonen verursachen.

Berücksichtigen Sie Folgendes, um die Netzwerkkosten zu minimieren und zu kontrollieren:

  • Datenübertragungen zwischen Zonen:Regionale Cluster erhöhen zwar die Verfügbarkeit, indem sie Arbeitslasten auf mehrere Zonen verteilen, aber es fallen Kosten für Daten an, die zwischen diesen Zonen übertragen werden.

Weitere Informationen finden Sie unter Alle Netzwerkpreise.

Cluster mit einer Zone für Nicht-Produktionsumgebungen bereitstellen

Um in Nicht-Produktionsumgebungen Netzwerkgebühren zwischen Zonen zu vermeiden und den VM-Aufwand zu reduzieren, stellen Sie Cluster mit einer Zone anstelle von regionalen oder multizonalen Clustern bereit.

Weitere Informationen finden Sie unter Cluster-Konfigurationsoptionen.

DNS-Auflösungspfade und eingehender Traffic für Cluster optimieren

Um die DNS-Auflösung und den eingehenden Traffic für Cluster zu optimieren, können Sie NodeLocal DNSCache und Netzwerk-Endpunktgruppen (Network Endpoint Groups, NEGs) bereitstellen.

Wenn Sie Arbeitslasten mit hohem DNS-Aufkommen ausführen, führt NodeLocal DNSCache auf jedem Knoten einen lokalen DNS-Daemon aus. Diese Konfiguration verhindert, dass CoreDNS durch hohe Abfragelasten überlastet wird. So ist keine Skalierung von CoreDNS erforderlich und die GKE-Gesamtkosten werden gesenkt.

Beim eingehenden Traffic leitet das containernative Load-Balancing über NEGs den Traffic direkt an Pod-IP-Adressen anstelle von Instanzgruppen weiter. Diese direkte Weiterleitung ermöglicht eine ordnungsgemäße Trafficumleitung bei Pod-Skalierungsaktionen.

Weitere Informationen finden Sie unter:

Ressourcenkontingente pro Namespace anwenden

Stellen Sie in mehrmandantenfähigen Clustern standardmäßige Kubernetes-ResourceQuota-Objekte pro Namespace bereit, um Schwellenwerte für CPU- und Arbeitsspeicherformen festzulegen und zu verhindern, dass einzelne Teams nicht konforme Arbeitslasten planen, die unerwartete Compute-Gebühren verursachen.

Weitere Informationen finden Sie in der Kubernetes-Dokumentation unter Namespaces.

Policy Controller-Prüfungen implementieren

Stellen Sie Policy Controller bereit, um die Cluster-Compliance mit Unternehmensstandards dynamisch zu prüfen und zu erzwingen. Policy Controller verwendet die Zugangssteuerung, um falsch konfigurierte Ressourcen abzulehnen.

Weitere Informationen finden Sie unter:

Nicht konforme Manifeste in CI/CD-Pipelines verhindern

Prüfen Sie die Einhaltung der Kostenrichtlinien früher im Entwicklungszyklus. Integrieren Sie Validierungsskripts (z. B. kpt-Parsing) in Pre-Commit- oder Pull-Request-Prüfungen, um nicht konforme Manifeste zu prüfen und zu blockieren, bevor sie den Cluster erreichen.

Weitere Informationen finden Sie unter Anwendungen anhand von Unternehmensrichtlinien in einer CI-Pipeline validieren.

Checkliste für die Infrastruktur

Anwendungs- und Arbeitslastoptimierung

Konfigurieren Sie Ihre Arbeitslasten so, dass Ressourcen effizient genutzt und der Betriebsaufwand reduziert wird.

Übereinstimmende Arbeitsspeicheranfragen und -limits angeben

Geben Sie vor der Bereitstellung genaue CPU- und Arbeitsspeicheranfragen für Container an. Konfigurieren Sie für die CPU Anfragen, die Ihren Service Level Objectives (SLOs) entsprechen, lassen Sie die Limits aber uneingeschränkt. Achten Sie beim Arbeitsspeicher darauf, dass die angeforderte Zuweisung dem Arbeitsspeicherlimit entspricht.

Weitere Informationen finden Sie in der Kubernetes-Dokumentation unter CPU- und Arbeitsspeicherressourcen für Container anpassen.

Containerstartzeiten beschleunigen

Halten Sie Container-Images so klein wie möglich, um die Downloadzeiten für Images zu minimieren.

PDBs konfigurieren

Geben Sie ein PodDisruptionBudget-Objekt (PDB) für Anwendungsreplikate an, um freiwillige Unterbrechungen zu begrenzen und die Stabilität zu gewährleisten, wenn GKE verkleinert wird oder Knoten-Upgrades ausgeführt werden.

Weitere Informationen finden Sie unter Unterbrechungsbudget für Ihre Anwendung festlegen.

Aussagekräftige Bereitschafts- und Aktivitätsprüfungen festlegen

Konfigurieren Sie Bereitschafts- und Aktivitätsprüfungen für alle Container, um sicherzustellen, dass GKE den Traffic nur an bereite Pods weiterleitet und fehlerhafte Instanzen neu startet. So wird Trafficverlust während des Autoscalings verhindert.

Weitere Informationen finden Sie unter Aktivitäts-, Bereitschafts- und Start prüfungen konfigurieren.

Ordnungsgemäßes Herunterfahren von Anwendungen konfigurieren

Bereiten Sie Container auf das ordnungsgemäße Beenden vor, indem Sie auf das Signal SIGTERM warten, laufende Anfragen abschließen, bevor Sie beenden, oder preStop-Hooks konfigurieren.

Weitere Informationen finden Sie unter Beenden und ordnungsgemäßes Herunterfahren von VMs auf Abruf.

Wiederholungsversuche mit exponentiellem Backoff implementieren

Implementieren Sie Wiederholungsversuche mit exponentiellem Backoff auf Anwendungs- oder Service-Mesh-Ebene, um vorübergehende Fehler oder potenzielle vorzeitige Beendigungen von Spot-VM zu verarbeiten.

Weitere Informationen finden Sie in der Istio-Dokumentation unter Wiederholungsversuche.

Checkliste für die Anwendungs- und Arbeitslastoptimierung

Kosten-Baseline und -Transparenz

Um Kosten zu optimieren, benötigen Sie zuerst Transparenz bei Ihren GKE-Ausgaben und deren Zuordnung. So können Sie Kosten den Teams und Geschäftseinheiten zuordnen, die sie verursachen.

In der folgenden GKE-Dokumentation wird beschrieben, wie Sie detaillierte Einblicke in die GKE-Abrechnung, den Ressourcenverbrauch und die Baseline-Messwerte erhalten.

GKE-Kostenzuordnung aktivieren

Aktivieren Sie die GKE-Kostenzuordnung, um Einblick in Ressourcenanfragen für Arbeitslasten und die zugehörigen Kosten zu erhalten. Bei der Kostenzuordnung werden Clusterkosten Namespaces und Kubernetes-Labels Ihrer Arbeitslasten zugeordnet.

Exportieren Sie diese Details nach BigQuery, um die Daten in Cloud Billing zu analysieren. Mit dieser Analyse können Sie ermitteln, welche Arbeitslasten Abrechnungsspitzen verursachen, Rückbuchungen vornehmen und Ressourcenanfragen optimieren.

Weitere Informationen finden Sie unter Informationen zu Ausgaben für Ihre GKE-Ressourcenzuordnung und Clusterkosten erhalten.

Aufnahmevolumen für Logs und Messwerte prüfen

Die Aktivierung von Cloud Logging und Cloud Monitoring für Ihre Cluster verursacht Kosten. Hohe Aufnahmevolumen für Logs und benutzerdefinierte Messwerte können zu unerwarteten Gebühren führen. Prüfen Sie zentral, welche Logebenen und benutzerdefinierten Messwerte aufgenommen werden.

Weitere Informationen zur Fehlerbehebung bei hoher Nutzung der Logging API oder Zeitüberschreitungen des Limits für das Schreiben von Logs finden Sie unter:

Integrität von Metrics Server überwachen

Überwachen Sie die Integrität der Metrics Server-Bereitstellung, da die integrierten Autoscaling-Controller von GKE darauf angewiesen sind, CPU- und Arbeitsspeichermesswerte abzurufen.

Weitere Informationen finden Sie unter Fehlerbehebung beim horizontalen Pod-Autoscaling.

Kultur der Kosteneinsparung fördern

Geben Sie Entwicklern Zugriff auf Dashboards für Cloud-Ausgaben und richten Sie FinOps-Schulungen ein, um Architekturentscheidungen an den Kostenbudgets des Unternehmens auszurichten.

Weitere Informationen zur Unternehmenskultur der Kosteneffizienz finden Sie unter Kultur der Kosteneinsparung etablieren.

Checkliste für Kosten-Baseline und -Transparenz

Compute Advisor verwenden

Compute Advisor ist eine KI-gestützte Oberfläche in der Google Cloud Console, die von Gemini unterstützt wird und Ihnen hilft, robuste und kostengünstige Architekturen für GKE zu entwerfen.

Compute Advisor bietet nahezu in Echtzeit Verfügbarkeitsinformationen für Flex-Start-VMs und Spot-VMs und prüft vor der Bereitstellung die Richtlinien und Ressourcenkontingente Ihrer Organisation. Compute Advisor bietet keine Verfügbarkeitsinformationen für Arbeitslasten, die On-Demand-Ressourcen erfordern.

So greifen Sie in der Google Cloud Console auf Gemini zu:

  1. Rufen Sie in der Google Cloud Console die Seite Übersicht auf.

    Zur Übersicht

  2. Geben Sie im Bereich Infrastruktur mit Compute Advisor gestalten einen Prompt ein. Gemini beginnt mit der Generierung einer Antwort.

  3. Führen Sie einen der folgenden Beispielprompts in Compute Advisor aus, um Architekturempfehlungen zu generieren. Wenn Sie auf die Schaltfläche Prompt in Compute Advisor ausführen klicken, kann es Google Cloud länger als 15 Sekunden dauern, bis die Console geladen wird:

  • Autoscaling und Bin-Packing:

    Anwendungsfall:Um das Bin-Packing zu maximieren und den CPU-Leerlauf-Overhead zu minimieren, verwenden Sie diesen Prompt, um eine Strategie für das GKE-Cluster-Autoscaling und Knotenpools zu konfigurieren.

      Configure a GKE cluster to use autoscaler and node pool strategy
      to maximize bin packing and minimize idle CPU overhead.
    

    Prompt in Compute Advisor ausführen

  • Governance für Mehrmandantenfähigkeit:

    Anwendungsfall:Um zu verhindern, dass Entwicklungs-Namespaces die Budgetgrenzen überschreiten, verwenden Sie diesen Prompt, um eine ResourceQuota-Richtlinie für einen mehrmandantenfähigen GKE-Cluster zu entwerfen.

      Draft a ResourceQuota policy for a multi-tenant GKE
      cluster to keep development namespaces within budget bounds.
    

    Prompt in Compute Advisor ausführen

  • Arbeitslastoptimierung:

    Anwendungsfall:Wenn Sie sich nicht sicher sind, ob Sie GKE Autopilot oder den Standardmodus für eine Batcharbeitslast mit variablen Ressourcenanforderungen verwenden sollen, verwenden Sie diesen Prompt, um eine Empfehlung zu erhalten:

      Recommend whether to use GKE Autopilot or Standard mode for a batch processing workload with highly variable resource demands.
    

    Prompt in Compute Advisor ausführen

Nächste Schritte

Weitere Informationen zu den architektonischen Prinzipien und der Unternehmenskultur, die für Kosteneffizienz erforderlich sind, finden Sie unter Best Practices zum Ausführen kostenoptimierter Kubernetes-Anwendungen in GKE.