Abrechnungseinstellungen (Dienste)

Für Cloud Run-Dienste gibt es zwei Abrechnungseinstellungen:

  • Anfragebasierte Abrechnung (Standardeinstellung): Cloud Run-Instanzen werden nur dann in Rechnung gestellt, wenn sie Anfragen während der Anfrageverarbeitung, des Containerstarts und des Container-Herunterfahrens verarbeiten. Weitere Informationen finden Sie unter Instanzlebenszyklus. Diese Einstellung hieß zuvor CPU nur während der Anfrageverarbeitung zugewiesen.

  • Instanzbasierte Abrechnung: Für Cloud Run-Instanzen werden Gebühren für den gesamten Lebenszyklus der Instanzen in Rechnung gestellt, auch wenn keine Anfragen eingehen. Die sitzungsbasierte Abrechnung kann für die Ausführung kurzlebiger Hintergrundaufgaben und anderer asynchroner Verarbeitungsaufgaben nützlich sein. Diese Einstellung hieß zuvor CPU wird immer zugewiesen.

Wenn Sie die antragsbasierte Abrechnung auswählen, werden Ihnen die Kosten pro Anfrage in Rechnung gestellt und nur dann, wenn die Instanze eine Anfrage verarbeitet. Wenn Sie die instanzbasierte Abrechnung auswählen, werden Ihnen die Kosten für den gesamten Lebenszyklus der Instanz in Rechnung gestellt. Weitere Informationen finden Sie in den Cloud Run-Preistabellen.

Recommender prüft automatisch den Traffic, der von Ihrem Cloud Run-Dienst im letzten Monat empfangen wurde, und empfiehlt die Umstellung von der anfragebasierten Abrechnung auf die instanzbasierte Abrechnung, wenn dies kostengünstiger ist.

Auswirkungen der CPU-Zuweisung

Die Auswahl einer Abrechnungseinstellung wirkt sich darauf aus, wie die CPU zugewiesen wird.

  • 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 Containerinstanz zugewiesen.

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 in kurzen Abständen auftritt.
  • Die instanzbasierte Abrechnung wird empfohlen, wenn der eingehende Traffic stabil ist und nur langsam variiert.

Überlegungen zur Hintergrundausführung

Wenn Sie instanzenbasierte 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-/Hintergrundfunktionen nutzen.

Inaktive Instanzen, einschließlich solcher, die mithilfe von Mindestinstanzen einsatzbereit gehalten werden, können jederzeit heruntergefahren werden. 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.

Ziehen Sie die Verwendung von Cloud Tasks für die Ausführung asynchroner Aufgaben in Betracht. Cloud Tasks wiederholt fehlgeschlagene Aufgaben automatisch und unterstützt Laufzeiten von bis zu 30 Minuten.

Kostengesichtspunkte

Wenn Sie die anfragebasierte Abrechnung verwenden, kann die instanzbasierte Abrechnung unter folgenden Umständen kostengünstiger sein:

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

Mit dem Preisrechner können Sie die Kostenunterschiede schätzen.

Überlegungen zum Autoscaling

Die Anzahl der Containerinstanzen wird in Cloud Run autoscales.

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

Bei einem Dienst, für den die instanzbasierte Abrechnung festgelegt ist, skaliert Cloud Run die Anzahl der Instanzen automatisch basierend auf der CPU-Auslastung während des gesamten Lebenszyklus der Containerinstanz. Eine Ausnahme besteht beim Skalieren auf und von null, bei dem nur Anfragen verwendet werden.

Hinweise 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 Hintergrundverarbeitung 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:

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 mitGoogle Cloud 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 einrichten 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 Google Cloud -Konsole, 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 Google Cloud -Konsole Cloud Run auf:

    Zu Cloud Run

  2. Klicken Sie auf Container bereitstellen und wählen Sie Dienst aus, um einen neuen Dienst zu konfigurieren. Wenn Sie einen vorhandenen Dienst konfigurieren möchten, klicken Sie auf den Dienst und dann auf Neue Überarbeitung bearbeiten und bereitstellen.

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

  4. Wählen Sie unter Abrechnung eine Abrechnungseinstellung aus. Wählen Sie Anfragebasierte Abrechnung aus, damit Ihre Instanzen nur während der Anfrageverarbeitung in Rechnung gestellt werden. Wählen Sie Instanzbasierte Abrechnung aus, damit Ihnen die Kosten für Ihre Instanzen für die gesamte Lebensdauer in Rechnung gestellt werden.

  5. Klicken Sie auf Erstellen oder 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 nutzungsbasierte Abrechnung fest:

gcloud run services update SERVICE --cpu-throttling 

Sie können die Abrechnungseinstellung auch während der Bereitstellung festlegen. So legen Sie die inkrementelle Abrechnung als Abrechnungseinstellung fest:

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

So legen Sie die Abrechnungseinstellung auf nutzungsbasierte 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 verwenden, muss das Repository REPO_NAME bereits erstellt sein. Die URL hat die Form 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

    • SERVICE durch den Namen Ihres Cloud Run-Dienstes
    • BOOLEAN durch true ersetzen, um die anfragebasierte Abrechnung festzulegen, oder durch false, um die instanzbasierte Abrechnung festzulegen.
    • REVISION durch einen neuen Überarbeitungsnamen oder löschen (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

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 unter template.containers.resources 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 Google Cloud -Konsole Cloud Run auf:

    Zu Cloud Run

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

  3. Klicken Sie auf den Tab Überarbeitungen.

  4. Im Detailbereich auf der rechten Seite ist die Abrechnungseinstellung auf dem Tab Allgemein aufgeführt.

gcloud

  1. Verwenden Sie den folgenden Befehl:

    gcloud run services describe SERVICE
  2. Suchen Sie in der zurückgegebenen Konfiguration nach der Abrechnungseinstellung.