Abrechnungseinstellungen für Dienste

Auf dieser Seite werden die Abrechnungseinstellungen unter der Annahme der Verwendung des standardmäßigen Cloud Run Autoscaling-Verhaltens beschrieben. Weitere Überlegungen zur Verwendung des manuellen Scalings finden Sie unter Abrechnungsverhalten bei Verwendung des manuellen Scalings.

Es gibt zwei Abrechnungseinstellungen in Cloud Run-Diensten:

  • Anfragebasierte Abrechnung (Standard): Cloud Run-Instanzen werden nur dann in Rechnung gestellt, wenn sie Anfragen verarbeiten, wenn sie gestartet werden und wenn sie heruntergefahren werden. Weitere Informationen finden Sie unter Instanzlebenszyklus für mehr Details. Diese Einstellung hieß zuvor CPU wird nur während der Anfrageverarbeitung zugewiesen.

  • Instanzbasierte Abrechnung: Cloud Run-Instanzen werden für den gesamten Lebenszyklus der Instanzen in Rechnung gestellt, auch wenn keine Anfragen eingehen. Die instanzbasierte Abrechnung kann für die Ausführung von kurzlebigen Hintergrundaufgaben und anderen asynchronen Verarbeitungsaufgaben nützlich sein. Diese Einstellung hieß zuvor CPU wird immer zugewiesen.

Wenn Sie die anfragebasierte Abrechnung auswählen, werden Ihnen die Kosten pro Anfrage in Rechnung gestellt und nur dann, wenn die Instanz eine Anfrage verarbeitet. Wenn Sie die instanzbasierte Abrechnung auswählen, wird Ihnen der gesamte Lebenszyklus der Instanz in Rechnung gestellt.

Auswirkungen der CPU-Zuweisung

Die Auswahl einer Abrechnungseinstellung wirkt sich auf die CPU-Zuweisung aus.

  • Bei der anfragebasierten Abrechnung wird die CPU nur während der Anfrageverarbeitung zugewiesen.
  • Bei der instanzbasierten Abrechnung wird die CPU für den gesamten Lebenszyklus der Container instanz zugewiesen.

Ausgabenobergrenzen für Budgets

Wenn Sie Ausgabenobergrenzen für Cloud Billing-Budgets in der Cloud Billing Console oder programmatisch mit der Cloud Billing Budget API konfigurieren, gelten diese Obergrenzen automatisch für alle Cloud Run-Ressourcentypen in Ihrem Projekt.

Sie können den Fortschritt Ihrer Ausgabenobergrenze direkt auf der Cloud Run Console Übersichtsseite verfolgen. Wenn Sie eine Ausgabenobergrenze erreichen, Cloud de Confiance by S3NS werden alle Cloud Run-Arbeitslasten angehalten, um weitere Kosten für die folgenden Cloud Run-Ressourcen zu vermeiden:

  • Dienste: Bei allen vorhandenen Diensten kann kein Traffic mehr verarbeitet werden und es werden 5xx-Fehler zurückgegeben.
  • Jobs: Neue Aufgaben können nicht gestartet werden und laufende Aufgaben können nicht abgeschlossen werden.
  • Worker-Pools: Alle vorhandenen Instanzen verarbeiten keine Aufgaben mehr.

Wenn Sie Ihre Ausgabenobergrenze überschreiten, erhalten Sie eine Benachrichtigung und in der Cloud Run Console wird ein Banner mit einer entsprechenden Meldung angezeigt. Die erzwungenen Ausgabenobergrenzen werden zu Beginn jedes Monats am ersten Tag des nächsten Abrechnungszeitraums zurückgesetzt. Dadurch werden Ihre Arbeitslasten wieder freigegeben und der Ausgabenbetrag wird auf null gesetzt. Wenn Sie Ihre Ausgabenobergrenze überschreiten und den Betrieb vor dem monatlichen Zurücksetzen wieder aufnehmen möchten, passen Sie die Obergrenze auf der Übersichtsseite der Cloud Run Console manuell an oder heben Sie sie auf.

Geeignete Abrechnungseinstellung auswählen

Die Auswahl der geeigneten Abrechnungseinstellung für Ihren Anwendungsfall hängt von mehreren Faktoren ab, z. B. Trafficmuster, Hintergrundausführung und Kosten. Alle Faktoren werden in den folgenden Abschnitten beschrieben.

Überlegungen zu Trafficmustern

  • Die anfragebasierte Abrechnung wird empfohlen, wenn der eingehende Traffic sporadisch, stoßweise oder unregelmäßig ist.
  • Die instanzbasierte Abrechnung wird empfohlen, wenn der eingehende Traffic konstant und langsam variierend ist.

Überlegungen zur Hintergrundausführung

Wenn Sie die instanzbasierte Abrechnung auswählen, wird die CPU auch außerhalb der Anfrageverarbeitung zugewiesen. So können Sie nach der Rückgabe von Antworten kurzlebige Hintergrundaufgaben und andere asynchrone Verarbeitungsaufgaben ausführen. Beispiel:

  • Nutzung von Monitoring-Agents wie OpenTelemetry, die im Hintergrund laufen können.
  • Go-Routinen von Go, asynchrone Node.js, Java-Threads und Kotlin-Ko-Routinen verwenden.
  • Anwendungs-Frameworks, die integrierte Planungs- oder Hintergrundfunktionen nutzen.

Inaktive Instanzen, einschließlich solcher, die mithilfe von Mindestinstanzen, jederzeit heruntergefahren werden können. Wenn Sie ausstehende Aufgaben ausführen müssen, bevor der Container beendet wird, können Sie SIGTERM abschließen, um einer Instanz 10 Sekunden Zeit zu geben, bevor sie angehalten wird.

Kostengesichtspunkte

Wenn Sie die anfragebasierte Abrechnung verwenden, kann die instanzbasierte Abrechnung kostengünstiger sein, wenn:

  • Ihr Cloud Run-Dienst eine hohe Anzahl aktueller Anfragen mit einer relativ konstanten Rate verarbeitet.
  • Wenn Sie sich den Messwert „Anzahl der Instanzen“ ansehen, werden nicht viele „inaktive“ Instanzen angezeigt.

Überlegungen zum Autoscaling

Cloud Run skaliert standardmäßig automatisch die Anzahl der Containerinstanzen.

Bei einem Dienst, für den die anfragebasierte Abrechnung festgelegt ist, skaliert Cloud Run die Anzahl der Instanzen nur anhand der CPU-Auslastung während der Anfrageverarbeitung.

Bei einem Dienst, für den die instanzbasierte Abrechnung festgelegt ist, skaliert Cloud Run die Anzahl der Instanzen anhand der CPU-Auslastung für den gesamten Lebenszyklus der Containerinstanz. Beim Skalieren auf und von null werden jedoch nur Anfragen verwendet.

Weitere Überlegungen zur Verwendung des manuellen Scalings anstelle der Autoscaling-Funktion von Cloud Run finden Sie unter Manuelles Scaling.

Überlegungen zur instanzbasierten Abrechnung

Selbst wenn die Abrechnungseinstellung auf instanzbasierte Abrechnung festgelegt ist, ist das Autoscaling von Cloud Run noch in Kraft und kann Instanzen beenden, wenn sie nicht für die Verarbeitung des eingehenden Traffics oder die aktuelle CPU-Auslastung außerhalb von Anfragen benötigt werden. Eine Instanz bleibt nach der Verarbeitung einer Anfrage nie länger als 15 Minuten inaktiv, es sei denn, sie bleibt mit Mindestinstanzen aktiv.

Die Kombination der instanzbasierten Abrechnung mit einer Reihe von Mindestinstanzen führt dazu, dass eine Reihe von Instanzen mit vollem Zugriff auf CPU-Ressourcen ausgeführt wird. Dadurch werden Anwendungsfälle der Hintergrund verarbeitung ermöglicht. Wenn Sie dieses Muster verwenden, wendet Cloud Run das Instanz-Autoscaling auch dann an, wenn ein Dienst CPU außerhalb von Anfragen verwendet.

Wenn Sie Systemdiagnoseprüfungen verwenden, müssen Sie für jede Prüfung die instanzbasierte Abrechnung verwenden. Weitere Informationen finden Sie unter Systemdiagnoseprüfungen für Container.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Konfigurieren und Bereitstellen von Cloud Run-Diensten benötigen:

Wenn Sie einen Dienst oder eine Funktion aus Quellcode bereitstellen, müssen Ihnen außerdem zusätzliche Rollen für Ihr Projekt und das Cloud Build-Dienstkonto zugewiesen werden.

Eine Liste der IAM-Rollen und -Berechtigungen im Zusammenhang mit Cloud Run finden Sie unter IAM-Rollen für Cloud Run und IAM-Berechtigungen für Cloud Run. Wenn Ihr Cloud Run-Dienst mit Cloud de Confiance APIs wie Cloud-Clientbibliotheken verknüpft ist, lesen Sie die Konfigurationsanleitung für Dienstidentitäten. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Bereitstellungsberechtigungen und Zugriff verwalten.

Abrechnung festlegen und aktualisieren

Jede Konfigurationsänderung führt zur Erstellung einer neuen Überarbeitung. Für nachfolgende Überarbeitungen gilt automatisch dieselbe Konfigurationseinstellung, sofern Sie sie nicht explizit aktualisieren.

Wenn Sie die instanzbasierte Abrechnung auswählen, müssen Sie mindestens 512 MiB Arbeitsspeicher angeben.

Sie können die Abrechnungseinstellung über die Cloud de Confiance Console, die gcloud CLI oder eine YAML-Datei ändern, wenn Sie einen neuen Dienst erstellen oder eine neue Überarbeitung bereitstellen:

Console

  1. Rufen Sie in der Cloud de Confiance by S3NS Console Cloud Run auf:

    Zu Cloud Run

  2. Wählen Sie im Cloud Run-Navigationsmenü Dienste aus und klicken Sie auf Container bereitstellen, um einen neuen Dienst zu konfigurieren. Wenn Sie einen vorhandenen Dienst konfigurieren, klicken Sie auf den Dienst.

  3. Wenn Sie einen neuen Dienst konfigurieren, füllen Sie die Seite mit den anfänglichen Diensteinstellungen aus.

  4. Wenn Sie einen vorhandenen Dienst konfigurieren, klicken Sie auf den Tab Skalierung.

  5. Wählen Sie unter Abrechnung die Option Anfragebasiert aus, damit Ihre Instanzen nur während der Anfrageverarbeitung in Rechnung gestellt werden, oder wählen Sie Instanzbasiert aus, damit Ihre Instanzen für den gesamten Lebenszyklus der Instanzen in Rechnung gestellt werden.

  6. Klicken Sie für einen neuen Dienst auf Erstellen. Klicken Sie für einen vorhandenen Dienst auf Unterschied anzeigen und neu bereitstellen und dann auf Änderungen bereitstellen.

gcloud

Sie können die Abrechnungseinstellung aktualisieren. So legen Sie die instanzbasierte Abrechnung für einen bestimmten Dienst fest:

gcloud run services update SERVICE --no-cpu-throttling 

Ersetzen Sie SERVICE durch den Namen Ihres Dienstes.

So legen Sie die anfragebasierte Abrechnung fest:

gcloud run services update SERVICE --cpu-throttling 

Sie können die Abrechnungseinstellung auch während der Bereitstellungfestlegen. So legen Sie die Abrechnungseinstellung auf die instanzbasierte Abrechnung fest:

gcloud run deploy --image IMAGE_URL --no-cpu-throttling

So legen Sie die Abrechnungseinstellung auf die anfragebasierte Abrechnung fest:

gcloud run deploy --image IMAGE_URL --cpu-throttling

Ersetzen Sie IMAGE_URL durch einen Verweis auf das Container-Image, z. B. us-docker.pkg.dev/cloudrun/container/hello:latest. Wenn Sie Artifact Registry, das Repository REPO_NAME muss bereits erstellt sein. Die URL hat das Format LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .

YAML

  1. Wenn Sie einen neuen Dienst erstellen, überspringen Sie diesen Schritt. Wenn Sie einen vorhandenen Dienst aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Aktualisieren Sie das Attribut cpu:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/cpu-throttling: 'BOOLEAN'
          name: REVISION

    Ersetzen Sie Folgendes:

    • SERVICE: der Name Ihres Cloud Run-Dienstes
    • BOOLEAN: true für die anfragebasierte Abrechnung oder false für die instanzbasierte Abrechnung.
    • REVISION: ein neuer Überarbeitungsname oder löschen Sie ihn (falls vorhanden). Wenn Sie einen neuen Überarbeitungsnamen angeben, muss er die folgenden Kriterien erfüllen:
      • Beginnt mit SERVICE-
      • Enthält nur Kleinbuchstaben, Ziffern und -
      • Endet nicht mit -
      • Darf nicht mehr als 63 Zeichen enthalten
  3. Erstellen oder aktualisieren Sie den Dienst mit dem folgenden Befehl:

    gcloud run services replace service.yaml

    Der Befehl gcloud run services replace verwendet standardmäßig die Datei service.yaml, falls vorhanden.

Terraform

Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.

Fügen Sie einer google_cloud_run_v2_service Ressource in Ihrer Terraform-Konfiguration Folgendes hinzu:

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-cpu-allocation"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
      resources {
        # If true, garbage-collect CPU when once a request finishes
        cpu_idle = false
      }
    }
  }
}

Abrechnungseinstellungen aufrufen

So rufen Sie die aktuellen Abrechnungseinstellungen für Ihren Cloud Run-Dienst auf:

Console

  1. Rufen Sie in der Cloud de Confiance by S3NS Console die Seite Dienste von Cloud Run auf:

    Zu Cloud Run

  2. Klicken Sie auf den Dienst, um die Seite Dienstdetails zu öffnen.

  3. Klicken Sie auf den Tab Skalierung , um die Einstellung Abrechnung zu finden.

gcloud

  1. Führen Sie den folgenden Befehl aus, um die Abrechnungskonfiguration aufzurufen:

    gcloud run services describe SERVICE --format=yaml
  2. Suchen Sie in der YAML-Ausgabe nach der Einstellung run.googleapis.com/cpu-throttling. Der Wert false gibt die instanzbasierte Abrechnung an. Wenn diese Einstellung fehlt, wird die anfragebasierte Abrechnung verwendet.