In dieser Anleitung erfahren Sie, wie Sie die Größe Ihrer Google Kubernetes Engine-Arbeitslasten (VPA) und Nutzungsmesswerte anpassen.
Warum die Größenanpassung von Ressourcen wichtig ist
Eine Unterdimensionierung kann den Containern die erforderlichen Ressourcen für die Ausführung der Anwendungen vorenthalten, sodass sie langsam und unzuverlässig sind. Eine Überdimensionierung hat keine Auswirkungen auf die Leistung Ihrer Anwendungen, kann jedoch Ihre monatliche Rechnung erhöhen.
In der folgenden Tabelle werden die Auswirkungen einer Unter- und Überdimensionierung von CPU und Arbeitsspeicher beschrieben:
Ressource | Status der Nutzerverwaltung | Risiko | Erklärung |
---|---|---|---|
CPU | Überdimensionierung | Kosten | Erhöht die Kosten Ihrer Arbeitslasten, da unnötige Ressourcen reserviert werden. |
Unterdimensionierung | Leistung | Kann Arbeitslasten verlangsamen oder dazu führen, dass sie nicht mehr reagieren. | |
Nicht festgelegt | Zuverlässigkeit | Die CPU kann auf 0 gedrosselt werden, wodurch Ihre Arbeitslasten nicht mehr reagieren. | |
Speicher | Überdimensionierung | Kosten | Erhöht die Kosten Ihrer Arbeitslasten, da unnötige Ressourcen reserviert werden. |
Unterdimensionierung | Zuverlässigkeit | Kann dazu führen, dass Anwendungen mit einem Fehler aufgrund fehlenden Arbeitsspeichers beendet werden. | |
Nicht festgelegt | Zuverlässigkeit | kubelet kann Ihre Pods jederzeit anhalten und als fehlgeschlagen markieren. |
Lernziele
In dieser Anleitung erhalten Sie Informationen zu folgenden Themen:
- Beispielanwendung bereitstellen
- GKE-Empfehlungsmesswerte aus Monitoring nach BigQuery exportieren
- GKE-Containerempfehlungen mit BigQuery und Looker Studio projektübergreifend aufrufen
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:
Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
Nach Abschluss der in diesem Dokument beschriebenen Aufgaben können Sie weitere Kosten vermeiden, indem Sie die erstellten Ressourcen löschen. Weitere Informationen finden Sie unter Bereinigen.
Hinweis
Projekt einrichten
Die Software, die Sie für diese Anleitung benötigen, ist in Cloud Shell vorinstalliert. Dazu gehören: Docker,
kubectl
,
gcloud CLI und Terraform.
Wenn Sie Cloud Shell nicht verwenden, müssen Sie die gcloud CLI installieren.
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Resource Manager, Google Kubernetes Engine, Cloud Monitoring, BigQuery, Cloud Run, Cloud Build APIs:
gcloud services enable cloudresourcemanager.googleapis.com
container.googleapis.com monitoring.googleapis.com bigquery.googleapis.com run.googleapis.com cloudbuild.googleapis.com cloudscheduler.googleapis.com artifactregistry.googleapis.com - Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Resource Manager, Google Kubernetes Engine, Cloud Monitoring, BigQuery, Cloud Run, Cloud Build APIs:
gcloud services enable cloudresourcemanager.googleapis.com
container.googleapis.com monitoring.googleapis.com bigquery.googleapis.com run.googleapis.com cloudbuild.googleapis.com cloudscheduler.googleapis.com artifactregistry.googleapis.com -
Grant roles to your user account. Run the following command once for each of the following IAM roles:
roles/serviceusage.serviceUsageAdmin, roles/container.clusterAdmin, roles/iam.serviceAccountAdmin, roles/iam.securityAdmin, roles/container.admin
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
- Replace
PROJECT_ID
with your project ID. -
Replace
USER_IDENTIFIER
with the identifier for your user account. For example,user:myemail@example.com
. - Replace
ROLE
with each individual role.
- Replace
Umgebung einrichten
So richten Sie Ihre Umgebung ein:
Legen Sie Umgebungsvariablen fest:
export PROJECT_ID=PROJECT_ID export REGION=us-central1 export ZONE=us-central1-f export IMAGE=$REGION-docker.pkg.dev/$PROJECT_ID/main/vpa-recs-image:latest
Ersetzen Sie
PROJECT_ID
durch Ihre Google Cloud-Projekt-ID.Legen Sie die Standardumgebungsvariablen fest:
gcloud config set project $PROJECT_ID gcloud config set compute/region $REGION gcloud config set compute/zone $ZONE
Klonen Sie das Code-Repository.
git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples
Wechseln Sie in das Arbeitsverzeichnis.
cd kubernetes-engine-samples/cost-optimization/gke-vpa-recommendations
(Optional) Beispielanwendung einrichten
Dies ist ein optionaler Abschnitt zum Bereitstellen einer Beispielanwendung. Achten Sie bei der Verwendung eines vorhandenen Clusters darauf, dass Cloud Monitoring auf Ihrem Cluster konfiguriert ist.
Zum Simulieren einer realistischen Umgebung verwenden Sie ein Setupscript, um Online Boutique bereitzustellen.
Mit den folgenden Schritten installieren Sie die Beispielanwendung und ändern die Standardkonfiguration. Beispielsweise wird in der Anleitung für einige Arbeitslasten das horizontale Pod-Autoscaling (HPA) konfiguriert und es werden Ressourcenanforderungen und -limits geändert.
Führen Sie das Setupscript aus:
./scripts/setup.sh
Das Setupscript tut Folgendes:
- Es erstellt einen GKE-Cluster.
- Es stellt die Beispielanwendung „Online Boutique“ bereit.
- Es aktualisiert Pod-CPU- und Arbeitsspeicher-Ressourcenanfragen.
- Es konfiguriert eine HorizontalPodAutoscaler-Ressource für die Arbeitslasten
adservice
und , um eine realistische Umgebung zu simulieren.
Das Setupscript kann bis zu zehn Minuten erfordern.
Prüfen Sie, ob die Beispielanwendung bereit ist:
kubectl get deployment
Die Ausgabe sieht in etwa so aus:
NAME READY UP-TO-DATE AVAILABLE AGE adservice 2/2 2 2 4m54s cartservice 1/1 1 1 4m55s checkoutservice 1/1 1 1 4m56s currencyservice 1/1 1 1 4m55s emailservice 1/1 1 1 4m56s frontend 1/1 1 1 4m55s loadgenerator 1/1 1 1 4m55s paymentservice 1/1 1 1 4m55s productcatalogservice 1/1 1 1 4m55s recommendationservice 1/1 1 1 4m56s redis-cart 1/1 1 1 4m54s shippingservice 1/1 1 1 4m54s
Repository erstellen
Erstellen Sie das Repository zum Speichern des Messwert-Exporters-Images.
Erstellen Sie ein neues Docker-Repository:
gcloud artifacts repositories create main --repository-format=docker \ --location=$REGION \ --description="docker repository"
Richten Sie die Authentifizierung für Docker-Repositories ein:
gcloud auth configure-docker $REGION-docker.pkg.dev
Führen Sie folgenden Befehl aus, um das Image bereitzustellen:
gcloud builds submit metrics-exporter --region=$REGION --tag $IMAGE
Anwendung bereitstellen
Im folgenden Abschnitt verwenden Sie Terraform, um die folgenden Aufgaben auszuführen:
- Erstellen Sie ein Dienstkonto und weisen Sie die Berechtigungen zu, die zum Verwalten und Interagieren mit Google Cloud-Ressourcen erforderlich sind.
- Gewähren Sie dem Dienstkonto die Monitoring-Betrachter, BigQuery-Datenbearbeiter, BigQuery-Dateninhaber, BigQuery-Jobnutzer und Cloud Run-Aufrufer-Rollen.
- Stellen Sie einen Cloud Run-Job bereit, der ein Docker-Image aus der Artifact Registry abruft und mit der angegebenen Konfiguration ausführt.
- Einen Cloud Scheduler-Job erstellen, der täglich den Cloud Run-Dienst auslöst.
- Erstellen Sie ein BigQuery-Dataset, eine Tabelle und eine Ansicht, um Messwertdaten und Empfehlungen zu speichern.
Terraform konfigurieren
Legen Sie Konfigurationsumgebungsvariablen fest:
export TF_VAR_BIGQUERY_DATASET=gke_metrics_dataset export TF_VAR_BIGQUERY_TABLE=gke_metrics export TF_VAR_RECOMMENDATION_WINDOW_SECONDS=1209600 export TF_VAR_RECOMMENDATION_DISTANCE=86400 export TF_VAR_LATEST_WINDOW_SECONDS=600 export TF_VAR_METRIC_WINDOW=259200 export TF_VAR_METRIC_DISTANCE=600
Dieser Befehl umfasst Folgendes:
TF_VAR_BIGQUERY_DATASET
undTF_VAR_BIGQUERY_TABLE
: enthalten die GKE-Messwertdaten.TF_VAR_RECOMMENDATION_WINDOW_SECONDS
: Zeitraum für VPA-Empfehlungen. Der Standardwert ist 259.200 Sekunden oder 14 Tage.TF_VAR_RECOMMENDATION_DISTANCE
: Das Intervall, in dem VPA-Empfehlungsdaten zurückgegeben werden. Die Standardeinstellung ist 86.400 Sekunden oder jeder Tag.TF_VAR_LATEST_WINDOW_SECONDS
: der Zeitraum zum Abrufen der zuletzt angeforderten und zu begrenzenden Ressourcenwerte. Der Standardwert ist 600 Sekunden oder 10 Minuten.METRIC_WINDOW
: legt den Zeitraum für GKE-Nutzungs- und -Auslastungsmesswerte fest. Der Standardwert ist 259.200 Sekunden oder 3 Tage.METRIC_DISTANCE
: Das Intervall, in dem Datenpunkte zurückgegeben werden. Der Standardwert ist 600 Sekunden oder jede 10 Minuten.
Passen Sie diese Werte an die Anforderungen Ihrer Arbeitslasten an. Aktualisieren Sie beispielsweise für Batcharbeitslasten, die einmal im Monat ausgeführt werden,
TF_VAR_RECOMMENDATION_WINDOW_SECONDS
undMETRIC_WINDOW
auf2592000
Sekunden (30 Tage).
Terraform-Konfiguration bereitstellen
Initialisieren, validieren und wenden Sie Ihre Konfiguration an:
terraform -chdir=terraform init terraform -chdir=terraform validate terraform -chdir=terraform apply -var project_id=$PROJECT_ID -var region=$REGION -var image=$IMAGE
Dieser Befehl erstellt einen Ausführungsplan und bittet um Ihre Genehmigung, bevor Änderungen vorgenommen werden. Prüfen Sie den Plan. Geben Sie
yes
ein, wenn Sie fortfahren möchten.Nach erfolgreicher Anwendung des Befehls werden Ihre Ressourcen von Terraform erstellt und verwaltet.
Führen Sie den Cloud Scheduler-Job manuell aus:
gcloud scheduler jobs run recommendation-schedule --location ${REGION}
Deployment prüfen
Wählen Sie auf der Detailseite
workload-recommendations
den Tab Logs aus.Prüfen Sie, ob die Messwertlogs in der Cloud Run-Konsole verarbeitet werden:
Die Logs zeigen Messwerte an, die in BigQuery geschrieben werden. Die Ausgabe sollte in etwa so aussehen:
INFO - Building Row INFO - Successfully wrote 12 rows to BigQuery table [PROJECT_ID].gke_metric_dataset.gke_metrics. INFO - Run Completed
Wenn die Ausgabe nicht übereinstimmt, warten Sie fünf Minuten und führen Sie dann den Befehl
gcloud scheduler jobs run recommendation-schedule --location $REGION
aus.
Containerempfehlung in BigQuery ansehen
Rufen Sie in der Google Cloud Console die Seite "BigQuery" auf:
Prüfen Sie, ob die Daten in der Tabelle
gke_metrics
und in der Ansichtcontainer_recommendations
sichtbar sind. Je nach Anzahl der Arbeitslasten kann es einige Minuten dauern, bis alle Messwerte in BigQuery geschrieben sind.Wählen Sie im Abfrageeditor alle Zeilen in der Ansicht
container_recommendations
aus:SELECT * FROM `PROJECT_ID.gke_metrics_dataset.container_recommendations`
Dieses Programm extrahiert die folgenden Messwerte aus Cloud Monitoring:
Arbeitslastdetails: die Projekt-ID, der Clustername, der Controller und der Containername.
CPU-/Speicherauslastung und -auslastung: die von der Arbeitslast verwendete CPU- und Arbeitsspeichermenge sowie der Prozentsatz der verwendeten CPU- und Arbeitsspeicherressourcen.
Angefordert und begrenzt: die CPU- und Speicherkapazität, die für die Arbeitslast angefordert wurde, sowie die maximal zulässige CPU- und Arbeitsspeicherkapazität für die Arbeitslast.
Empfehlungen für CPU- und Arbeitsspeicherarbeitslasten: Empfehlungen dazu, wie viel CPU und Arbeitsspeicher der Arbeitslast zugewiesen werden sollten, um einen reibungslosen Betrieb zu gewährleisten, basierend auf den VPA-Empfehlungen für Bereitstellungen sowie auf der tatsächlichen Nutzung und den Zielauslastungen für Nicht-Deploymentobjekte.
Empfehlungen in Looker Studio visualisieren
Looker Studio ist eine kostenlose Selfservice-Business-Intelligence-Plattform, mit der Sie Datenvisualisierungen, Dashboards und Berichte erstellen und nutzen können. Mit Looker Studio können Sie eine Verbindung zu Ihren Daten herstellen, Visualisierungen erstellen und Ihre Informationen mit anderen teilen.
Verwenden Sie Looker Studio, um Daten in der BigQuery-Ansicht container_recommendations
zu visualisieren:
- Öffnen Sie die Dashboard-Vorlage zur Arbeitslastanpassung.
- Klicken Sie auf Eigene Daten verwenden.
- Wählen Sie Ihr Projekt aus.
- Wählen Sie als Dataset
gke_metric_dataset
aus. - Wählen Sie als Tabelle
container_recommendations
aus. - Klicken Sie auf Add (Hinzufügen).
- Klicken Sie auf Zum Bericht hinzufügen.
Details zur Looker Studio-Vorlage
Die Detailseite der Looker Studio-Vorlage enthält folgende Informationen:
- Übersicht über die GKE-Arbeitslastgröße: Bietet einen Überblick über Ihre Cluster, einschließlich:
- Die Anzahl der Best-Effort- und Bursting-Arbeitslasten, die Zuverlässigkeits- und Leistungsproblemen ausgesetzt sind.
- Mögliche Einsparungen bei den CPU- und Arbeitsspeicherressourcen. Positive Werte weisen auf eine Überdimensionierung hin, negative Werte auf eine unzureichende Bereitstellung.
- Workload Recommendations: Empfehlungen für CPU- und Speicheranforderungen und Limits für Arbeitslasten.
- GKE-Workloads bei Risiko: Zeigt Arbeitslasten an, bei denen das Risiko der größten Zuverlässigkeit und Leistungsprobleme am höchsten ist.
- Verlauf – Größenanpassung bei Arbeitslasten: Wie geht es uns? Bietet eine historische Ansicht darüber, wie gut die Größenanpassung von Arbeitslasten und die Reduzierung der Anzahl der Best-Effort-Arbeitslasten implementiert wurden.
Containerempfehlung für angeforderte CPU und CPU-Limit
Wenn die Werte für die angeforderten CPU und das CPU-Limit der Arbeitslasten gleich sind, gilt die Dienstqualität als garantiert und die CPU-Empfehlung wird innerhalb des Zeitraums von 14 Tagen auf das Maximum gesetzt. Andernfalls wird das 95. Perzentil der angeforderten CPU-Empfehlung innerhalb von 14 Tagen verwendet.
Wenn die CPU-Anfrage- und die CPU-Limitwerte gleich sind, wird die Empfehlung für das CPU-Limit auf die maximale VPA-Empfehlung für Deployment-Objekte festgelegt und die CPU-Nutzung mit einer Zielauslastung von 70 %. Wenn die Anfrage und das Limit der Arbeitslast nicht identisch sind, wird das vorhandene Limitverhältnis verwendet.
Containerempfehlung für angeforderten Arbeitsspeicher und Arbeitsspeicherlimit
In den Arbeitsspeicherempfehlungen wird die maximale VPA-Empfehlung nur für Deployment-Objekte und die maximale Arbeitsspeichernutzung mit einer Zielauslastung von 80 % verwendet, um die Zuverlässigkeit der Arbeitslasten zu gewährleisten. Sie können die Zielauslastungswerte in der Abfrage der container_recommendation
-Ansicht aktualisieren.
Es empfiehlt sich, für Anfragen und Limits die gleiche Arbeitsspeichermenge zu verwenden, da Arbeitsspeicher eine nicht komprimierbare Ressource ist. Wenn der Arbeitsspeicher aufgebraucht ist, muss der Pod heruntergefahren werden. Damit das Herunterfahren von Pods und eine Destabilisierung Ihrer Umgebung vermieden wird, müssen Sie den angeforderten Arbeitsspeicher auf das Arbeitsspeicherlimit festlegen.
Empfehlungen priorisieren
Jeder Zeile wird ein Prioritätswert zugewiesen, um Arbeitslasten anzuzeigen, die auf Grundlage der Empfehlungen sofort geprüft werden müssen. Die Einheiten von CPU und Arbeitsspeicher sind unterschiedlich. Zur Normalisierung der Einheiten wird das On-Demand-Preisverhältnis von E2-Maschinentypen für CPU und Arbeitsspeicher als Näherung für die Konvertierung von Arbeitsspeichereinheiten in CPU-Einheiten verwendet.
Die Priorität wird mithilfe der folgenden Formel berechnet:
priority = (CPU requested - CPU recommendation) + ((memory requested -
memory recommendation) / (vCPUs on-demand pricing /memory on-demand pricing ))
Für Autopilot sollten die von Ihrer Bereitstellungskonfiguration angeforderten Gesamtressourcen innerhalb der unterstützten Mindest- und Höchstwerte liegen.
VPA-Empfehlungen für mehrere Projekte aufrufen
Verwenden Sie ein neues Projekt als den Umfang festlegendes Projekt, um VPA-Containerempfehlungen für mehrere Projekte aufzurufen.
Wenn Sie dieses Projekt in Ihrer Produktionsumgebung bereitstellen, fügen Sie alle zu analysierenden Projekte dem Messwertbereich des neuen Projekts hinzu.
Bereinigen
Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, löschen Sie entweder das Projekt, das die Ressourcen enthält, oder Sie behalten das Projekt und löschen die einzelnen Ressourcen.
Projekt löschen
Sie vermeiden weitere Kosten am einfachsten, wenn Sie das für die Anleitung erstellte Projekt löschen.
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Nächste Schritte
- Weitere Informationen zur GKE-Kostenoptimierung finden Sie unter Best Practices zum Ausführen kostenoptimierter Kubernetes-Anwendungen in GKE.
- Designempfehlungen und Best Practices zur Optimierung der Kosten von Google Cloud-Arbeitslasten finden Sie unter Google Cloud-Architektur-Framework: Kostenoptimierung.
- Mehr über die Kostenoptimierung Ihres Clusters zu Zeiten geringer Nachfrage erfahren Sie unter Kostensenkung durch Herunterskalieren von GKE-Clustern außerhalb der Spitzenzeiten.
- Weitere Informationen zur GKE-Kostenoptimierung finden Sie unter GKE-Cluster zur Kostenoptimierung mit Monitoring beobachten.