Auf dieser Seite erfahren Sie, wie Sie mithilfe der GKE-Kostenzuordnung (Google Kubernetes Engine) wichtige Ausgabenstatistiken erhalten, um Entscheidungen zur Ressourcenverteilung und Kostenoptimierung zu treffen. Hier erfahren Sie mehr über den Unterschied zwischen GKE-Kostenzuordnung und Messung der Clusternutzung, die Einschränkungen der GKE-Kostenzuordnung, wie Sie die GKE-Kostenzuordnung für neue und vorhandene Cluster aktivieren und wie Sie Ihren Cloud Billing-BigQuery-Export filtern und abfragen.
Diese Seite richtet sich an Betreiber, Cloud-Architekten, Entwickler und Datenadministratoren, die Kosten verwalten müssen, wenn sie Cluster erstellen und konfigurieren und Arbeitslasten in GKE bereitstellen. Weitere Informationen zu gängigen Rollen finden Sie unter Häufig verwendete GKE-Nutzerrollen und ‑Aufgaben.
Bevor Sie diese Seite lesen, sollten Sie sich mit den Best Practices zum Ausführen kostenoptimierter Kubernetes-Anwendungen in GKE vertraut machen.
Mögliche Erhöhung des Datenvolumens
Das Aktivieren der GKE-Kostenzuordnung kann Ihre Speicher- und Abfragekosten in BigQuery erhöhen. Die genaue Erhöhung hängt von der Anzahl der unterschiedlichen Label- und Namespace-Kombinationen ab, die Sie in Pods und Clustern verwenden.
Das Aktivieren der GKE-Kostenzuordnung ändert nicht die Gesamtkosten Ihrer GKE-Nutzung. Die Summe der Kostenpositionen in Ihrem Export ist die gleiche und die vorhandenen Abfragen und Berichte, die Sie im Abrechnungsexport erstellt haben, geben die gleichen Werte zurück.
GKE-Kostenzuordnung und Messung der Clusternutzung
Die GKE-Kostenzuordnung unterscheidet sich von der Messung der Clusternutzung in folgender Weise:
- Die GKE-Kostenzuordnung bietet eine Alternative zur Messung der Clusternutzung für das Abrufen von Clusterinformationen.
- Die GKE-Kostenzuordnung berechnet die Clusterkosten in Ihrem Cloud-Rechnungskonto, statt die Daten in einer Looker Studio-Vorlage zu aggregieren.
- Mit der GKE-Kostenzuweisung können Sie die Kostendaten eines Clusters in der Cloud Billing- Google Cloud Konsole und im detaillierten Cloud Billing-Export ansehen.
Hinweise
Führen Sie die folgenden Aufgaben aus, bevor Sie beginnen:
- Aktivieren Sie die Google Kubernetes Engine API. Google Kubernetes Engine API aktivieren
- Wenn Sie die Google Cloud CLI für diesen Task verwenden möchten, müssen Sie die gcloud CLI installieren und dann initialisieren. Wenn Sie die gcloud CLI bereits installiert haben, rufen Sie die neueste Version mit dem Befehl
gcloud components update
ab. In früheren gcloud CLI-Versionen werden die Befehle in diesem Dokument möglicherweise nicht unterstützt.
- Führen Sie die Schritte zum Exportieren detaillierter Nutzungskostendaten nach BigQuery aus. Wenn Ihre Organisation bereits Daten exportiert, müssen Sie Zugriff auf die Tabellen haben.
- Prüfen Sie, ob Sie einen vorhandenen Standardcluster haben. Informationen zum Erstellen eines Standardclusters finden Sie unter Regionalen Cluster erstellen.
Limits und Einschränkungen
- Sie können GKE-Kostenzuordnungsdaten nur im Datenexport der detaillierten BigQuery-Nutzungskosten von Cloud Billing einsehen.
- Sie benötigen die Google Cloud CLI-Version 392.0.0 oder höher
- Wenn Sie die GKE-Kostenzuordnung aktivieren, beginnt Ihr Abrechnungsexport ab diesem Datum mit zusätzlichen Positionen für Ihre GKE-Ressourcen. Für den Abrechnungsexport wird kein Backfill von Daten durchgeführt.
- Wenn Sie die GKE-Kostenzuordnung deaktivieren, wird der Abrechnungsexport einschließlich zusätzlicher Positionen beendet. Frühere Positionen, die generiert wurden, als die Funktion aktiviert war, werden jedoch nicht geändert oder entfernt.
- Die Daten zur GKE-Kostenzuordnung basieren auf Ressourcenanfragen und nicht auf verbrauchten Ressourcen. Weitere Informationen zu den Unterschieden zwischen Ressourcenanfragen, Ressourcenlimits und Ressourcenverbrauch finden Sie unter Kubernetes-Best Practices: Ressourcenanfragen und -limits.
- Die GKE-Kostenzuordnung unterstützt die folgenden Ressourcen-SKU-Typen:
- vCPU-SKUs der Compute Engine-VM-Instanz
- RAM-SKUs der Compute Engine-VM-Instanz
- RAM-SKUs für benutzerdefinierte erweiterte Compute Engine-VM-Instanzen
- GPU-SKUs der Compute Engine-VM-Instanz
- Kapazitäts-SKUs des Compute Engine-PD
- Cloud TPU-Instanz-Artikelnummern
- Hat ein Pod mehr als 50 Kubernetes-Labels, ist keines dieser Labels im Abschnitt „Cloud Billing“ der Google Cloud -Konsole oder im detaillierten Export von Cloud Billing verfügbar.
- Nachdem Sie die GKE-Kostenzuordnung aktiviert haben, kann es bis zu drei Tage dauern, bis die Daten in Cloud Billing angezeigt werden.
- Die GKE-Kostenzuordnung enthält Daten von nichtflüchtigem Speicher mit folgenden Ausnahmen:
- Unterstützt nur
PersistentVolume
-Ressourcen, die dynamisch überPersistentVolumeClaims
oder generische flüchtige Volumes bereitgestellt werden. - Unterstützt nur
PersistentVolume
-Ressourcen, die vom CSI-Treiber für nichtflüchtigen Compute Engine-Speicher oder über das veraltete Speicher-Plug-inkubernetes.io/gce-pd
mit dem ZugriffsmodusReadWriteOnce
oderReadWriteOncePod
bereitgestellt werden. - Nichtflüchtige Speicher mit einer Betriebszeit von weniger als 30 Minuten werden möglicherweise nicht verfolgt. Nichtflüchtige Speicher mit mindestens 30 Minuten Betriebszeit werden immer verfolgt.
- Unterstützt nur
- Die Cloud TPU-Version muss Cloud TPU v4 oder höher sein.
Kosten für GKE-Cluster anzeigen
Wenn Sie die GKE-Kostenzuordnung aktivieren, werden der Clustername und der Namespace Ihrer GKE-Arbeitslasten im Feld labels
des Abrechnungsexports nach BigQuery angezeigt:
Schlüssel des Ressourcenlabels (labels.key ) |
Wert des Ressourcenlabels (labels.value ) |
|
Beschreibung |
Kubernetes-Labels haben das folgende Format: k8s-label/${k8s-label-key} , wobei ${k8s-label-key} der Schlüssel des Kubernetes-Labels des Pods ist. Das Abrechnungslabel k8s-label/${k8s-label-key} hat denselben Wert wie das entsprechende Kubernetes-Pod-Label. |
Wenn ein Kubernetes-Labelschlüssel mit einem VM-Labelschlüssel kollidiert, überschreibt der Wert des Kubernetes-Labels den Wert des VM-Labels.
Cluster- und Knotenpool-Ressourcenlabels werden mit der folgenden Priorität (in absteigender Reihenfolge) auf Ressourcen angewendet:
|
Clustername | goog-k8s-cluster-name |
[cluster-name] |
Namespace | k8s-namespace |
[namespace] |
Arbeitslasttyp | k8s-workload-type |
[workload-type] (z. B. apps/v1-Deployment , apps/v1-StatefulSet , apps/v1-DaemonSet , apps/v1-ReplicaSet , batch/v1-Job , batch/v1-CronJob , core/v1-Pod ) |
Arbeitslastname | k8s-workload-name |
[workload-name] |
Weitere Informationen finden Sie unter Schema der detaillierten Nutzungskosten.
Außerdem werden die folgenden Namespaces zum Verfolgen von betriebssystembedingten Aufwand und nicht zugewiesenen Ressourcen verwendet:
kube:system-overhead
: Dies berücksichtigt Knotenressourcen, die für Pods nicht verfügbar sind. Diese Ressourcen werden vom System für die Ausführung des Kubernetes-Frameworks reserviert (einschließlich, aber nicht beschränkt auf kubelet, kube-proxy, containerd). Dies ist der Unterschied zwischen der Kapazität des Knotens und den zuweisbaren Ressourcen.kube:unallocated
: Ressourcen werden weder von Arbeitslasten noch für den Systemaufwand angefordert.
Wenn GKE die Kostenzuordnung für eine Ressource nicht ermitteln kann, enthält der Export einen der folgenden Werte:
goog-k8s-unknown
: Cloud Billing konnte die Artikelnummer nicht verarbeiten. Das kann passieren, wenn eine neue Compute Engine-Instanz bereitgestellt wird. Während des Startens und Herunterfahrens von Knoten sind einigegoog-k8s-unknown
-Werte zu erwarten, z. B. wenn GKE einen Cluster automatisch skaliert.goog-k8s-unsupported-sku
: Die GKE-Kostenzuordnung unterstützt diese SKU nicht. Behandeln Sie dies genauso wie<blank>
/NULL
. Es gibt keine Garantie, dass eine SKU immer mit diesem Wert gekennzeichnet wird.<blank>
/NULL
: Die GKE-Kostenaufteilung erfasst diese Ressource nicht. Dies kann auftreten, wenn die GKE-Kostenzuordnung nicht aktiviert ist oder die Ressource nicht zu einem von GKE verwalteten Cluster gehört.
Die Kosten für nichtflüchtige Speicher werden verfolgt, wenn die Sicherungs-PersistentVolumeClaims
des nichtflüchtigen Speichers von Pods beansprucht wird. Die Kosten für den nichtflüchtigen Speicher übernehmen alle Metadaten wie Pod-Labels und Namespaces des Anspruchs-Pods, bis die zugehörigen PersistentVolumeClaims
gelöscht werden. Bei PersistentVolumeClaims
, die gelöscht werden, aber PersistentVolumes
gemäß der Richtlinie zur Rückforderung beibehalten, werden die Kosten der nichtflüchtigen Speicher als nicht zugewiesen erfasst.
Labels, die direkt auf PersistentVolumeClaims
angewendet werden, werden nicht im Abschnitt „Cloud Billing“ der Google Cloud Console oder im detaillierten Cloud Billing-Export angezeigt.
Bei Extended RAM wird derselbe Anteil der Gesamtkosten einer Arbeitslast für die Regular RAM- und Extended RAM-SKUs basierend auf der angeforderten Ressource zugewiesen.
GKE-Kostenzuordnung aktivieren
Sie können die GKE-Kostenzuordnung für einen neuen oder vorhandenen Cluster mit der gcloud CLI oder der Google Cloud -Konsole aktivieren.
gcloud
Aktualisieren Sie einen Cluster mit dem --enable-cost-allocation
-Flag:
gcloud container clusters update CLUSTER_NAME \
--enable-cost-allocation
Ersetzen Sie CLUSTER_NAME
durch den Namen des Clusters.
Sie können das Flag --enable-cost-allocation
auch verwenden, wenn Sie einen neuen Cluster mit dem Befehl gcloud container clusters create
erstellen.
Console
So aktivieren Sie die GKE-Kostenzuordnung für einen vorhandenen Cluster:
- Öffnen Sie in der Google Cloud Console die Seite Google Kubernetes Engine. Zur Seite „Google Kubernetes Engine“
- Klicken Sie auf den Namen des Clusters, den Sie ändern möchten.
- Klicken Sie auf der Seite Cluster im Abschnitt Features auf edit neben Kostenzuordnung.
- Markieren Sie im Dialogfeld Kostenzuordnung bearbeiten das Kästchen Kostenzuordnung aktivieren.
- Klicken Sie auf Änderungen speichern.
Prüfen, ob die GKE-Kostenzuordnung aktiviert ist
gcloud
Cluster beschreiben:
gcloud container clusters describe CLUSTER_NAME
Die Ausgabe sieht etwa so aus:
...
costManagementConfig:
enabled: true
...
In dieser Ausgabe gibt costManagementConfig
an, dass die Kostenzuordnung für GKE aktiviert ist.
Console
So prüfen Sie, ob die GKE-Kostenzuordnung für einen vorhandenen Cluster aktiviert ist:
- Öffnen Sie in der Google Cloud Console die Seite Google Kubernetes Engine. Zur Seite „Google Kubernetes Engine“
- Klicken Sie auf den Namen des Clusters, den Sie ändern möchten.
- Auf der Seite Cluster im Abschnitt Features wird neben Kostenzuordnung angezeigt, ob die Kostenzuordnung für GKE aktiviert ist.
GKE-Kostendaten filtern
Die folgenden Beispielabfragen zeigen, wie Sie Ihre GKE-Kosten für unterstützte Ressourcentypen nach Clustername, Namespace und Label filtern und gruppieren können.
Ersetzen Sie BILLING_DATASET_TABLE
durch den Namen des Datasets, das Sie in BigQuery erstellt haben.
Der Tabellenname ähnelt gcp_billing_export_resource_v1_<BILLING_ACCOUNT_ID>
.
Bereinigen
Deaktivieren Sie die GKE-Kostenzuordnung für den Cluster, damit Ihrem Google Cloud -Konto die auf dieser Seite verwendeten Ressourcen nicht in Rechnung gestellt werden.
gcloud container clusters update CLUSTER_NAME \
--no-enable-cost-allocation
Sie können auch den von Ihnen erstellten Cluster löschen.