Mindestanzahl von Instanzen für Dienste festlegen

Auf dieser Seite wird beschrieben, wie Sie inaktive Instanzen für einen Dienst aktivieren, indem Sie Mindestinstanzen mit dem Standardverhalten für Cloud Run-Autoscaling konfigurieren. Informationen zum manuellen Skalieren Ihres Dienstes finden Sie unter Manuelle Skalierung.

Wenn Sie das Autoscaling-Verhalten Ihres Dienstes genauer steuern möchten, können Sie eine Mindestanzahl von Instanzen festlegen, um langsame Containerstartzeiten zu vermeiden und die Dienstlatenz zu verringern. Basierend auf der Anzahl der eingehenden Anfragen skaliert Cloud Run für Cloud Run-Dienste standardmäßig die Anzahl der Instanzen herunter.

Wenn Ihr Dienst jedoch eine geringere Latenz erfordert, insbesondere bei der Skalierung von null aktiven Instanzen, können Sie dieses Standardverhalten ändern. Dazu geben Sie eine Mindestanzahl von Containerinstanzen an, die einsatzbereit gehalten werden und so stets bereit sind, Anfragen zu bedienen. Weitere Informationen zu dieser Optimierung finden Sie unter Allgemeine Entwicklungstipps.

Cloud Run entfernt Instanzen, die keine Anfragen bedienen (inaktiv). Wenn eine Mindestanzahl von Instanzen festgelegt ist, führt Cloud Run mindestens die Mindestanzahl von Instanzen aus, auch wenn sie keine Anfragen verarbeiten. Aktive Instanzen oberhalb der Grenze min-instances können inaktiv werden, wenn sie keine Anfragen empfangen.

Beispiel: Wenn min-instances 10 ist und die Anzahl der aktiven Instanzen 0 ist, beträgt die Anzahl der inaktiven Instanzen 10. Wenn die Anzahl der aktiven Instanzen auf 6 steigt, sinkt die Anzahl der inaktiven Instanzen auf 4.

Wenn ein Dienst in letzter Zeit keinen Traffic verarbeitet hat, kann der Messwert für aktive Instanzen angeben, dass keine Instanzen aktiv sind, auch wenn Sie eine oder mehrere Instanzen als Mindestanzahl angegeben haben.

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.

Mindestinstanzen auf Dienstebene konfigurieren

Bei Containerinstanzen ist die Mindestanzahl von Instanzen auf Dienstebene standardmäßig deaktiviert und auf 0 eingestellt. Sie können diese Standardeinstellung über dieGoogle Cloud -Konsole, die Google Cloud CLI oder eine YAML-Datei ändern:

Console

  1. Rufen Sie in der Google Cloud Console Cloud Run auf:

    Zu Cloud Run

  2. Wenn Sie einen neuen Dienst konfigurieren, wählen Sie im Menü Dienste aus und klicken Sie auf Container bereitstellen, um das Formular Dienst erstellen aufzurufen. Rufen Sie das Formular Dienstskalierung auf.

  3. Wenn Sie einen vorhandenen Dienst konfigurieren, klicken Sie auf den Dienst, um das Detailfeld aufzurufen, und dann oben rechts im Detailfeld auf  Skalierungseinstellungen auf Dienstebene bearbeiten.

  4. Geben Sie im Feld Mindestinstanzen die Anzahl von Containerinstanzen an, die einsatzbereit gehalten werden sollen, um Anfragen zu erhalten.

  5. Klicken Sie für einen neuen Dienst auf Erstellen oder für einen vorhandenen Dienst auf Bereitstellen.

gcloud

Mit dem folgenden Befehl können Sie die Mindestanzahl von Instanzen für einen bestimmten Dienst aktualisieren:

gcloud run services update SERVICE --min MIN-VALUE

Ersetzen Sie:

  • SERVICE durch den Namen des Dienstes.
  • MIN-VALUE durch die Anzahl von Containerinstanzen, die einsatzbereit gehalten werden und zum Empfangen von Anfragen bereit sein sollen. Geben Sie default an, um alle Einstellungen für Mindestinstanzen zu löschen.

Alternativ können Sie die Mindestanzahl von Instanzen während der Bereitstellung mit dem folgenden Befehl festlegen:

gcloud run deploy --image IMAGE_URL --min MIN-VALUE

Ersetzen

  • 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.
  • MIN-VALUE durch die Anzahl von Containerinstanzen, die einsatzbereit gehalten werden und zum Empfangen von Anfragen bereit sein sollen. Geben Sie default an, um alle Einstellungen für Mindestinstanzen zu löschen.

YAML

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

  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 run.googleapis.com/minScale:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
      annotations:
        run.googleapis.com/minScale: 'MIN_INSTANCE'

    Ersetzen Sie:

    • SERVICE durch den Namen Ihres Cloud Run-Dienstes
    • MIN-INSTANCE durch die Anzahl von Instanzen, die einsatzbereit gehalten werden und zum Empfangen von Anfragen bereit sein sollen.
  3. Erstellen oder aktualisieren Sie den Dienst mit dem folgenden Befehl:

    gcloud run services replace service.yaml

Clientbibliotheken

So aktualisieren Sie die Mindestanzahl von Instanzen auf Dienstebene für Ihren Dienst über Code:

REST API

Wenn Sie die Mindestanzahl von Instanzen auf Dienstebene für einen bestimmten Dienst aktualisieren möchten, senden Sie eine PATCH-HTTP-Anfrage an den Endpunkt service der Cloud Run Admin API.

Verwenden Sie zum Beispiel curl:

curl -H "Content-Type: application/json" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-X PATCH \
-d '{ "scaling": { "minInstanceCount": MIN-VALUE }}' \
https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/services/SERVICE?update_mask=scaling.minInstanceCount

Ersetzen Sie:

  • ACCESS_TOKEN durch ein gültiges Zugriffstoken für ein Konto, das die IAM-Berechtigungen zum Aktualisieren eines Dienstes hat. Wenn Sie beispielsweise in gcloud angemeldet sind, können Sie ein Zugriffstoken mit gcloud auth print-access-token abrufen. Innerhalb einer Cloud Run-Containerinstanz können Sie ein Zugriffstoken über den Metadatenserver der Containerinstanz abrufen.
  • MIN-VALUE durch die Anzahl von Containerinstanzen, die einsatzbereit gehalten werden und zum Empfangen von Anfragen bereit sein sollen.
  • SERVICE durch den Namen des Dienstes.
  • REGION durch die Google Cloud Region des Dienstes.
  • PROJECT-ID durch die Google Cloud Projekt-ID.

Mindestinstanzen auf Dienstebene ansehen

So rufen Sie die aktuellen Einstellungen für die Mindestinstanzen auf Dienstebene für Ihren Cloud Run-Dienst auf:

Console

  1. Rufen Sie in der Google Cloud Console Cloud Run auf:

    Zu Cloud Run

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

  3. Die aktuelle Einstellung wird oben rechts im Bereich mit den Dienstdetails neben Skalierung angezeigt.

gcloud

  1. Verwenden Sie den folgenden Befehl:

    gcloud run services describe SERVICE
  2. Suchen Sie in der zurückgegebenen Konfiguration den Wert für Skalierung: automatisch (Min.: MIN_VALUE, Max.: MAX_VALUE).

Mindestanzahl von Instanzen auf Dienstebene oder auf Überarbeitungsebene anwenden

Sie können die Mindestanzahl von Instanzen auf Dienstebene oder auf Überarbeitungsebene konfigurieren. Google empfiehlt, die Mindestanzahl von Instanzen auf Dienstebene anzuwenden und die Kombination von Mindestanzahl von Instanzen auf Dienstebene und Überarbeitungsebene zu vermeiden.

Wenn Sie die Mindestanzahl von Instanzen auf Überarbeitungsebene anwenden, werden die Einstellungen bei der Bereitstellung der Überarbeitung wirksam. Wenn Sie diese Funktion auf Dienstebene anwenden, wird die Einstellung wirksam, ohne dass Sie eine neue Revision bereitstellen müssen.

Getaggte Überarbeitungen und Mindestinstanzen auf Dienstebene

Getaggte Überarbeitungen werden gestartet, aber nur auf die Mindestanzahl von Instanzen auf Dienstebene angerechnet, wenn sie Teil einer Trafficaufteilung sind.

Abrechnung

Für Instanzen, die mit der Funktion für Mindestinstanzen weiterhin ausgeführt werden, fallen Kosten an. Da diese Gebühren sehr planbar sind, empfiehlt Google den Erwerb eines Rabatts für zugesicherte Nutzung.

Mindestanzahl von Instanzen und instanzbasierte Abrechnung

Sie können die instanzbasierte Abrechnung konfigurieren, wenn Sie CPU außerhalb von Anfragen benötigen.

Mindestanzahl an Neustarts

Instanzen können jederzeit neu gestartet werden.

Überarbeitungen und Mindestinstanzen

Wenn eine Mindestanzahl von Instanzen auf Dienstebene festgelegt ist, wird sie proportional zur Trafficaufteilung auf alle Überarbeitungen verteilt, die Traffic bereitstellen.

Wenn eine Mindestanzahl von Instanzen auf Überarbeitungsebene festgelegt ist, wird eine Mindestanzahl von Instanzen gestartet, wenn in einer Trafficaufteilung auf die Überarbeitung verwiesen wird (auch bei 0%) oder wenn ihr ein Traffic-Tag zugewiesen ist.

Routing mit Mindestanzahl von Instanzen anfordern

Wenn Sie eine Mindestanzahl von Instanzen festlegen, verteilt Cloud Run eingehende Anfragen gleichmäßig auf alle bereitgestellten Instanzen. Dieses Verhalten ist wichtig, um Kosten zu verwalten, insbesondere bei der anfragebasierten Abrechnung oder wenn Sie inaktive Hot-Spare-Instanzen beibehalten möchten.

Wenn die Mindestanzahl an Instanzen höher ist als für Ihren typischen Traffic erforderlich, werden viele Instanzen möglicherweise leicht aktiv und verarbeiten jeweils nur wenige Anfragen. Wenn für Ihren Dienst beispielsweise bei Spitzenlast 200 Instanzen erforderlich sind, aber die Mindestanzahl an Instanzen auf 600 konfiguriert ist, werden eingehende Anfragen auf alle 600 Instanzen verteilt. Dadurch werden viele dieser 600 Instanzen etwas aktiver und verarbeiten jeweils einen kleinen Teil des Traffics, anstatt dass etwa 200 Instanzen sehr aktiv sind und die verbleibenden 400 Instanzen vollständig im Leerlauf bleiben.

Um die Kosten zu optimieren (durch eine höhere Auslastung bei weniger Instanzen), legen Sie die Mindestanzahl von Instanzen auf einen Wert fest, der sich eng an der tatsächlichen Anzahl von Instanzen orientiert, die zur Verarbeitung Ihres typischen Traffics erforderlich sind.

Wenn beim Autoscaling zusätzliche Instanzen über die konfigurierte Mindestanzahl hinaus bereitgestellt werden, leitet Cloud Run eingehende Anfragen vorzugsweise zuerst an die konfigurierten Mindestinstanzen weiter, bevor Anfragen an die automatisch skalierten Instanzen gesendet werden. Bei der anfragebasierten Abrechnung werden durch dieses bevorzugte Routing zu den konfigurierten Mindestinstanzen die Kosten gesenkt, da die konfigurierten Mindestinstanzen vor den automatisch skalierten Instanzen verwendet werden. Diese bevorzugte Weiterleitung kann je nach Trafficmenge auch dazu führen, dass konfigurierte Mindestinstanzen eine höhere Auslastung haben als automatisch skalierte Instanzen.

Mindestanzahl von Instanzen auf Überarbeitungsebene konfigurieren

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

Bei Containerinstanzen ist min-instances standardmäßig deaktiviert und auf 0 eingestellt. Sie können diese Standardeinstellung über die Google Cloud Console, die Google Cloud 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 Console Cloud Run auf:

    Zu Cloud Run

  2. Wählen Sie im Menü Dienste aus und klicken Sie auf Container bereitstellen, 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 und klicken Sie dann auf Container, Volumes, Netzwerk, Sicherheit, um die Seite zur Dienstkonfiguration zu maximieren.

  4. Klicken Sie auf den Tab Container.

    Bild

    • Geben Sie im Feld Mindestinstanzen die Anzahl von Containerinstanzen an, die einsatzbereit gehalten werden sollen, um Anfragen zu erhalten.
  5. Klicken Sie auf Erstellen oder Bereitstellen.

gcloud

Mit dem folgenden Befehl können Sie min-instance für einen bestimmten Dienst aktualisieren:

gcloud run services update SERVICE --min-instances MIN-VALUE

Ersetzen Sie:

  • SERVICE durch den Namen des Dienstes.
  • MIN-VALUE durch die Anzahl von Containerinstanzen, die einsatzbereit gehalten werden und zum Empfangen von Anfragen bereit sein sollen. Geben Sie default an, um alle Einstellungen für Mindestinstanzen zu löschen.

Sie können min-instance auch während der Bereitstellung mit dem folgenden Befehl festlegen:

gcloud run deploy --image IMAGE_URL --min-instances MIN-VALUE

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.
  • MIN-VALUE durch die Anzahl von Containerinstanzen, die einsatzbereit gehalten werden und zum Empfangen von Anfragen bereit sein sollen. Geben Sie default an, um alle Einstellungen für Mindestinstanzen zu löschen.

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 autoscaling.knative.dev/minScale::

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            autoscaling.knative.dev/minScale: 'MIN-INSTANCE'
          name: REVISION

    Ersetzen Sie:

    • SERVICE durch den Namen Ihres Cloud Run-Dienstes
    • MIN-INSTANCE durch die Anzahl von Instanzen, die einsatzbereit gehalten werden und zum Empfangen von Anfragen bereit sein sollen.
    • 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 Folgendes hinzu:

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-min-instances"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
    }
    scaling {
      # Min instances
      min_instance_count = 1
    }
  }
}

Die vorherige google_cloud_run_v2_service-Ressource gibt eine Mindestanzahl von Instanzen von 1 unter template.scaling an. Ersetzen Sie 1 durch Ihre eigene Mindestanzahl von Instanzen.

Mindestinstanzen auf Überarbeitungsebene ansehen

So rufen Sie die aktuellen Einstellungen für die Mindestanzahl von Instanzen auf Überarbeitungsebene für Ihren Cloud Run-Dienst auf:

Console

  1. Rufen Sie in der Google Cloud Console Cloud Run auf:

    Zu Cloud Run

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

  3. Klicken Sie auf den Tab Überarbeitungen.

  4. Im Detailbereich rechts wird die Einstellung Mindestanzahl von Instanzen für Revision auf dem Tab Container aufgeführt.

gcloud

  1. Verwenden Sie den folgenden Befehl:

    gcloud run services describe SERVICE
  2. Suchen Sie in der zurückgegebenen Konfiguration den Wert für Mindestanzahl von Instanzen.

Mindest- oder Höchstanzahl von Instanzen auf Dienstebene und Überarbeitungsebene verwenden

Die folgende Tabelle zeigt das Verhalten, wenn Sie die Mindestanzahl von Instanzen auf Dienstebene mit der Mindest- oder Höchstanzahl von Instanzen auf Überarbeitungsebene kombinieren:

Konfigurationseinstellung Verhalten
Sowohl die Mindestanzahl von Instanzen auf Dienstebene als auch die Mindestanzahl von Instanzen auf Überarbeitungsebene sind festgelegt. Der effektive Wert für die Überarbeitung ist der größere Wert aus der Mindestanzahl von Instanzen auf Überarbeitungsebene und der Mindestanzahl von Instanzen auf Dienstebene.
Es sind sowohl Mindestinstanzen auf Dienstebene als auch Höchstinstanzen auf Überarbeitungsebene festgelegt. Der effektive Wert für die Überarbeitung ist der kleinere Wert aus der Höchstanzahl von Instanzen auf Überarbeitungsebene und der Mindestanzahl von Instanzen auf Dienstebene.

 Dies gilt auch dann, wenn die maximale Anzahl von Instanzen auf Überarbeitungsebene verhindert, dass der Dienst die Anzahl der Instanzen erreicht, die für die Mindestanzahl von Instanzen auf Dienstebene konfiguriert ist.

Mindestanzahl von Instanzen auf Dienstebene mit Trafficaufteilung verwenden

Wenn Sie Trafficaufteilung verwenden, wird die Mindestanzahl von Instanzen auf Dienstebene entsprechend dem Anteil der Trafficaufteilung auf die Überarbeitungen aufgeteilt. Wenn beispielsweise die Mindestanzahl von Instanzen auf Dienstebene = 10 ist, werden bei einer 50/50-Trafficaufteilung jeder Überarbeitung 5 Mindestinstanzen auf Dienstebene zugewiesen.

Die folgende Tabelle enthält Beispielkonfigurationsszenarien:

Beispielanwendungsfall Beispielkonfiguration Ergebnis
Keine Einstellungen auf Überarbeitungsebene Mindestanzahl von Instanzen auf Dienstebene: 10
  • Mindestanzahl von Instanzen von Überarbeitung A: 0
  • Mindestanzahl von Instanzen von Überarbeitung B: 0
  • Trafficaufteilung: 60/40
Überarbeitung A erhält 6 Instanzen aus der Mindestanzahl von Instanzen auf Dienstebene, die proportional zur Trafficaufteilung sind. Überarbeitung B erhält 4 Instanzen aus der Mindestanzahl von Instanzen auf Dienstebene, die proportional zur Trafficaufteilung sind.
Es werden mehr als die Mindestanzahl von Instanzen auf Dienstebene aufgrund der Mindestanzahl von Instanzen auf Überarbeitungsebene empfangen Mindestanzahl von Instanzen auf Dienstebene: 10
  • Mindestanzahl von Instanzen von Überarbeitung A: 6
  • Mindestanzahl von Instanzen von Überarbeitung B: 0
  • Trafficaufteilung: 50/50
Überarbeitung A erhält 6 Instanzen aufgrund der Mindestanzahl von Instanzen auf Überarbeitungsebene. Überarbeitung B erhält fünf Instanzen aus der Mindestanzahl von Instanzen auf Dienstebene, die proportional zur Trafficaufteilung sind. Dies überschreitet die Mindestanzahl von Instanzen auf Dienstebene und ist beabsichtigt.
Es werden weniger als die Mindestanzahl von Instanzen auf Dienstebene aufgrund der Höchstanzahl von Instanzen auf Überarbeitungsebene empfangen. Mindestanzahl von Instanzen auf Dienstebene: 10
  • Mindestanzahl von Instanzen von Überarbeitung A: 0
  • Mindestanzahl von Instanzen von Überarbeitung A: 3
  • Mindestanzahl von Instanzen von Überarbeitung B: 0
  • Trafficaufteilung: 50/50
Version A erhält aufgrund der Trafficaufteilung 3 Instanzen aus der Mindestanzahl von Instanzen auf Dienstebene, ist aber auf die Höchstanzahl von Instanzen auf Versionsebene beschränkt.
Version B erhält proportional zur Trafficaufteilung 5 Instanzen aus der Mindestanzahl von Instanzen auf Dienstebene. Das Ergebnis sind 8 Instanzen auf Dienstebene, da 2 aufgrund der maximalen Anzahl von Instanzen auf Überarbeitungsebene von Überarbeitung A verloren gehen.
Die Mindestanzahl der Instanzen auf Dienstebene ist größer als die Anzahl der Überarbeitungen der Trafficaufteilung und es gibt eine kleine Anzahl von Instanzen, die proportional zur Trafficaufteilung sind Mindestinstanzen auf Dienstebene: 3 Überarbeitung A erhält eine Mindestinstanz und Überarbeitung B zwei Mindestinstanzen. Die Anzahl der Instanzen für den Dienst ist 3.