Mindestanzahl von Instanzen (Dienste)

Auf dieser Seite wird beschrieben, wie Sie inaktive Instanzen für Ihren Dienst mit den Einstellungen für Mindestinstanzen aktivieren.

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 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 erhöht wird, sinkt die Anzahl der inaktiven Instanzen auf 4.

Mindestanzahl von Instanzen auf Dienstebene oder auf Überarbeitungsebene anwenden

Sie können die Mindestanzahl von Instanzen auf Dienstebene oder auf Überarbeitungsebene konfigurieren. Google empfiehlt, Mindestinstanzen auf Dienstebene anzuwenden und zu vermeiden, dass Mindestinstanzen auf Dienst- und Überarbeitungsebene kombiniert werden.

Wenn Sie eine Mindestanzahl an Instanzen auf Überarbeitungsebene anwenden, werden die Einstellungen bei der Bereitstellung der Überarbeitung wirksam. Wenn Sie dieses Feature auf Dienstebene anwenden, wird die Einstellung wirksam, ohne dass eine neue Überarbeitung bereitgestellt werden muss.

Getaggte Überarbeitungen und Mindestinstanzen auf Dienstebene

Getaggte Überarbeitungen werden gestartet, aber nicht auf die Mindestanzahl von Instanzen auf Dienstebene angerechnet, wenn sie nicht 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 immer zugewiesene CPU

Sie können die CPU so konfigurieren, dass sie immer zugewiesen wird, 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, werden sie an alle Überarbeitungen verteilt, die Traffic proportional zur Trafficaufteilung bereitstellen.

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

Mindestinstanzen auf Dienstebene festlegen und aktualisieren

Bei Containerinstanzen sind Mindestinstanzen auf Dienstebene 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:

Console

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

    Öffnen Sie Cloud Run.

  2. Wenn Sie einen neuen Dienst konfigurieren, klicken Sie auf Dienst erstellen . Wenn Sie einen vorhandenen Dienst konfigurieren, klicken Sie auf den Dienst, um das Detailfenster anzuzeigen. Klicken Sie dann auf das Stiftsymbol neben Mindestinstanzen oben rechts im Detailbereich. “

  3. Rufen Sie das Formular Service-Autoscaling auf:

    Image

  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.

Befehlszeile

Aktualisieren Sie service-min-instances für einen bestimmten Dienst mit dem folgenden Befehl:

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

Ersetzen Sie

  • SERVICE durch den Namen Ihres Dienstes und
  • 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 service-min-instances während der Bereitstellung mit dem folgenden Befehl festlegen:

gcloud beta run deploy --image IMAGE_URL --service-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 REGION-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

Sie können vorhandene Dienstkonfigurationen mit dem Befehl gcloud run services describe --format export herunterladen und aufrufen, was bereinigte Ergebnisse im YAML-Format liefert. Anschließend können Sie die unten beschriebenen Felder ändern und die geänderte YAML-Datei mit dem Befehl gcloud run services replace hochladen. Achten Sie darauf, dass Sie die Felder nur wie dokumentiert ändern.

  1. So rufen Sie die Konfiguration auf und laden sie 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/launch-stage: BETA
        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. Ersetzen Sie den Dienst mit dem folgenden Befehl durch die neue Konfiguration:

    gcloud beta run services replace service.yaml

Clientbibliotheken

So aktualisieren Sie die Mindestanzahl von Dienstinstanzen für Ihren Dienst aus Code:

REST API

Senden Sie eine HTTP-Anfrage PATCH an den Endpunkt service der Cloud Run Admin API, um Mindestinstanzen auf Dienstebene für einen bestimmten Dienst zu aktualisieren.

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.

    Öffnen Sie Cloud Run.

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

  3. Die aktuelle Einstellung wird rechts oben im Bereich "Dienstdetails" neben Mindestinstanzen angezeigt.

Befehlszeile

  1. Verwenden Sie den folgenden Befehl:

    gcloud run services describe SERVICE
  2. Suchen Sie in der zurückgegebenen Konfiguration den Wert für Service Level Mindestinstanzen:.

Mindestinstanzen auf Überarbeitungsebene 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.

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.

    Öffnen Sie Cloud Run.

  2. Klicken Sie auf Dienst erstellen, wenn Sie einen neuen Dienst für die Bereitstellung 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 wie gewünscht aus und klicken Sie dann auf Container, Netzwerk, Sicherheit, um die Seite zur Dienstkonfiguration zu maximieren.

  4. Klicken Sie auf den Tab Container.

    Image

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

Befehlszeile

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 Ihres Dienstes und
  • MIN-VALUE durch die gewünschte 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 REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • MIN-VALUE durch die gewünschte 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

Sie können vorhandene Dienstkonfigurationen mit dem Befehl gcloud run services describe --format export herunterladen und aufrufen, was bereinigte Ergebnisse im YAML-Format liefert. Anschließend können Sie die unten beschriebenen Felder ändern und die geänderte YAML-Datei mit dem Befehl gcloud run services replace hochladen. Achten Sie darauf, dass Sie die Felder nur wie dokumentiert ändern.

  1. So rufen Sie die Konfiguration auf und laden sie 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 gewünschte 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. Ersetzen Sie den Dienst mit dem folgenden Befehl durch die neue Konfiguration:

    gcloud run services replace service.yaml

Terraform

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

Die folgende 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.

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

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

Einstellungen für die Mindestanzahl von Instanzen auf Überarbeitungsebene ansehen

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

Console

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

    Öffnen Sie 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 rechts wird die Einstellung für die Mindestanzahl von Instanzen auf Überarbeitungsebene auf dem Tab Container aufgelistet.

Befehlszeile

  1. Verwenden Sie den folgenden Befehl:

    gcloud run services describe SERVICE
  2. Suchen Sie in der zurückgegebenen Konfiguration nach der Einstellung für die Mindestanzahl von Instanzen auf Überarbeitungsebene.

Mindest- oder Höchstwerte auf Dienstebene und Überarbeitungsebene verwenden

Die folgende Tabelle zeigt das Verhalten, wenn Sie Mindestinstanzen auf Dienstebene und Mindestinstanzen auf Überarbeitungsebene kombinieren:

Konfigurationseinstellung Verhalten
Sowohl Mindestinstanzen auf Dienstebene als auch auf Überarbeitungsebene sind festgelegt. Der effektive Wert für die Überarbeitung ist der größere Wert der Mindestanzahl von Instanzen auf Überarbeitungsebene und der minimalen Anzahl von Instanzen auf Dienstebene.
Es sind sowohl minimale Instanzen auf Dienstebene als auch maximale Instanzen auf Überarbeitungsebene festgelegt. Der effektive Wert für die Überarbeitung ist kleiner als die maximale Anzahl von Instanzen auf Überarbeitungsebene und die minimale Anzahl 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 Mindestinstanzen auf Dienstebene konfiguriert sind.

Mindestanzahl von Instanzen auf Serviceebene mit Trafficaufteilung verwenden

Wenn Sie die Trafficaufteilung verwenden, werden die Mindestinstanzen auf Dienstebene basierend auf dem Anteil der Trafficaufteilung auf die Überarbeitungen aufgeteilt. Wenn die Mindestinstanzen auf Dienstebene z. B. 10 sind, weist eine 50/50-Trafficaufteilung jeder Überarbeitung 5 Mindestinstanzen auf Dienstebene zu.

Die folgende Tabelle zeigt Beispielkonfigurationsszenarien:

Beispielanwendungsfall Beispielkonfiguration Ergebnis
Keine Einstellungen auf Überarbeitungsebene Mindestinstanzen auf Serviceebene: 10
  • Mindestanzahl von Instanzen von Überarbeitung A: 0
  • Mindestinstanz von Überarbeitung B: 0
  • Trafficaufteilung: 60/40
Überarbeitung A empfängt 6 Instanzen von Mindestinstanzen auf Dienstebene, die proportional zur Trafficaufteilung sind. Überarbeitung B empfängt vier Instanzen von Mindestinstanzen auf Dienstebene, die proportional zur Trafficaufteilung sind.
Es empfangen mehr als die Mindestanzahl von Instanzen auf Dienstebene aufgrund der Mindestanzahl von Instanzen auf Überarbeitungsebene Mindestinstanzen auf Serviceebene: 10
  • Mindestanzahl von Überarbeitung A: 6
  • Mindestinstanz von Überarbeitung B: 0
  • Trafficaufteilung: 50/50
Überarbeitung A erhält 6 Instanzen von Mindestinstanzen auf Überarbeitungsebene. Überarbeitung B empfängt 5 Instanzen von Mindestinstanzen auf Dienstebene, die proportional zur Trafficaufteilung sind. Dies überschreitet die Mindestanzahl von Instanzen auf Serviceebene und ist beabsichtigt.
Es werden weniger als die Mindestanzahl von Instanzen auf Dienstebene empfangen, da die maximale Anzahl von Instanzen auf Überarbeitungsebene überschritten wurde. Mindestinstanzen auf Serviceebene: 10
  • Mindestanzahl von Instanzen von Überarbeitung A: 0
  • Maximale Instanzen von Überarbeitung A: 3
  • Mindestinstanz von Überarbeitung B: 0
  • Trafficaufteilung: 50/50
Überarbeitung A empfängt 3 Instanzen von Mindestinstanzen auf Dienstebene, die von der Trafficaufteilung gesteuert werden, ist aber auf die maximale Anzahl von Instanzen auf Überarbeitungsebene beschränkt.
Überarbeitung B erhält 5 Instanzen von Mindestinstanzen auf Dienstebene, die proportional zur Trafficaufteilung sind. Dies führt zu acht Instanzen auf Dienstebene, da 2 aufgrund der maximalen Anzahl von Instanzen von Überarbeitung A auf Überarbeitungsebene verloren gehen.
Die Mindestanzahl der Instanzen auf Serviceebene 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 Serviceebene: 3 Überarbeitung A erhält mindestens eine Instanz und Überarbeitung B mindestens 2 Instanzen. Die Anzahl der Instanzen für den Dienst ist 3.