Sie können lange Containerstartzeiten für Ihren Dienst vermeiden und die Dienstlatenz reduzieren, indem Sie eine Mindestanzahl von Instanzen festlegen. Auf dieser Seite wird beschrieben, wie Sie inaktive Instanzen für Ihren Dienst mithilfe der Einstellung „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 eine Mindestanzahl von Instanzen festgelegt ist, führt Cloud Run mindestens die Mindestanzahl von Instanzen aus, auch wenn sie keine Anfragen verarbeiten. Aktive Instanzen über der Anzahl 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 für einen Dienst in letzter Zeit keine Zugriffe verarbeitet wurden, kann der Messwert Aktive Instanzen angeben, dass keine Instanzen aktiv sind, auch wenn Sie eine oder mehrere für die Mindestanzahl von Instanzen angegeben haben.
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 Mindestinstanzen auf Dienstebene und Überarbeitungsebene zu vermeiden.
Wenn Sie die Mindestanzahl von Instanzen auf Überarbeitungsebene anwenden, werden die Einstellungen bei der Bereitstellung der Version wirksam. Wenn Sie diese Funktion auf Dienstebene anwenden, wird die Einstellung ohne Bereitstellung einer neuen Version wirksam.
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 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 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.
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:
-
Rolle Cloud Run Entwickler (
roles/run.developer
) im Cloud Run-Job -
Dienstkontonutzer (
roles/iam.serviceAccountUser
) für die Dienstidentität
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 Service mit Google 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 festlegen und aktualisieren
Bei Containerinstanzen ist die Mindestanzahl von Instanzen 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
Rufen Sie in der Google Cloud Console Cloud Run auf.
Wenn Sie einen neuen Dienst konfigurieren, klicken Sie auf Container bereitstellen und wählen Sie Dienst aus, um das Formular Dienst erstellen aufzurufen. Wenn Sie einen vorhandenen Dienst konfigurieren, klicken Sie auf den Dienst, um das Detailfeld aufzurufen, und dann oben rechts im Detailfeld auf das Stiftsymbol neben Min Instanzen.
Rufen Sie das Formular Dienst-Autoscaling auf:
- Geben Sie im Feld Mindestinstanzen die Anzahl von Containerinstanzen an, die einsatzbereit gehalten werden sollen, um Anfragen zu erhalten.
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 für einen bestimmten Dienst service-min-instances
aktualisieren:
gcloud run services update SERVICE --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.
Alternativ können Sie service-min-instances
auch während der Bereitstellung mit dem folgenden Befehl festlegen:
gcloud run deploy --image IMAGE_URL --service-min-instances 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 FormLOCATION-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
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
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.
Erstellen oder aktualisieren Sie den Dienst mit dem folgenden Befehl:
gcloud run services replace service.yaml
Clientbibliotheken
So aktualisieren Sie die Mindestinstanzen auf Dienstebene für Ihren Dienst aus Code:
REST API
Wenn Sie die Mindestanzahl der 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 mitgcloud 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
Rufen Sie in der Google Cloud Console Cloud Run auf.
Klicken Sie auf den gewünschten Dienst, um den Bereich Dienstdetails zu öffnen.
Die aktuelle Einstellung wird oben rechts im Bereich mit den Dienstdetails neben Min Instanzen angezeigt.
gcloud
Verwenden Sie den folgenden Befehl:
gcloud run services describe SERVICE
Suchen Sie in der zurückgegebenen Konfiguration den Wert für Mindestinstanzen auf Dienstebene.
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
Rufen Sie in der Google Cloud Console Cloud Run auf.
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.
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.
Klicken Sie auf den Tab Container.
- Geben Sie im Feld Mindestinstanzen die Anzahl von Containerinstanzen an, die einsatzbereit gehalten werden sollen, um Anfragen zu erhalten.
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 FormLOCATION-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
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
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
- Beginnt mit
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.
In der folgenden google_cloud_run_v2_service
-Ressource wird unter template.scaling
eine Mindestanzahl von Instanzen von 1
angegeben.
Ersetzen Sie 1
durch die gewünschte Mindestanzahl von Instanzen.
Einstellungen für die Mindestanzahl von Instanzen 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
Rufen Sie in der Google Cloud Console Cloud Run auf.
Klicken Sie auf den gewünschten Dienst, um die Seite Dienstdetails zu öffnen.
Klicken Sie auf den Tab Überarbeitungen.
Im Detailbereich rechts wird die Einstellung für die Mindestanzahl von Instanzen auf Revisionsebene auf dem Tab Container aufgelistet.
gcloud
Verwenden Sie den folgenden Befehl:
gcloud run services describe SERVICE
Suchen Sie in der zurückgegebenen Konfiguration nach der Einstellung für die Mindestanzahl von Instanzen auf Überarbeitungsebene.
Mindest- oder Höchstanzahl von Instanzen auf Dienstebene und Überarbeitungsebene verwenden
In der folgenden Tabelle wird das Verhalten beschrieben, 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 Version ist der größere Wert aus der Mindestanzahl von Instanzen auf Überarbeitungsebene und der Mindestanzahl von Instanzen auf Dienstebene. |
Sowohl die Mindestanzahl von Instanzen auf Dienstebene als auch die Höchstanzahl von Instanzen auf Überarbeitungsebene sind festgelegt. | Der effektive Wert für die Version ist die kleinere der Höchstanzahl von Instanzen auf Überarbeitungsebene und der Mindestanzahl von Instanzen auf Dienstebene. Das gilt auch dann, wenn die maximale Anzahl von Instanzen auf Überarbeitungsebene verhindert, dass der Dienst die für die Mindestanzahl von Instanzen auf Dienstebene konfigurierte Anzahl von Instanzen erreicht. |
Mindestanzahl von Instanzen auf Dienstebene mit Trafficaufteilung verwenden
Wenn Sie die Trafficaufteilung verwenden, wird die Mindestanzahl von Instanzen auf Dienstebene basierend auf dem Anteil der Trafficaufteilung auf die Überarbeitungen verteilt. Wenn die Mindestanzahl von Instanzen auf Dienstebene beispielsweise 10 ist, werden bei einer 50/50-Trafficaufteilung jeder Überarbeitung 5 Mindestanzahl von Instanzen auf Dienstebene zugewiesen.
Die folgende Tabelle enthält Beispielkonfigurationsszenarien:
Beispielanwendungsfall | Beispielkonfiguration | Ergebnis |
---|---|---|
Keine Einstellungen auf Überarbeitungsebene | Mindestanzahl von Instanzen auf Dienstebene: 10
|
Überarbeitung A erhält 6 Instanzen aus der Mindestanzahl von Instanzen auf Dienstebene, bezogen auf die Trafficaufteilung. Überarbeitung B erhält 4 Instanzen aus der Mindestanzahl von Instanzen auf Dienstebene, bezogen auf die Trafficaufteilung. |
Es werden mehr als die Mindestanzahl von Instanzen auf Dienstebene aufgrund der Mindestanzahl von Instanzen auf Überarbeitungsebene empfangen | Mindestanzahl von Instanzen auf Dienstebene: 10
|
Überarbeitung A erhält 6 Instanzen aus der Mindestanzahl von Instanzen auf Überarbeitungsebene. Überarbeitung B erhält 5 Instanzen aus der Mindestanzahl von Instanzen auf Dienstebene, bezogen auf die Trafficaufteilung. Dies überschreitet die Mindestanzahl von Instanzen auf Dienstebene und ist beabsichtigt. |
Es werden weniger als die Mindestanzahl von Instanzen auf Dienstebene aufgrund der maximalen Anzahl von Instanzen auf Überarbeitungsebene empfangen. | Mindestanzahl von Instanzen auf Dienstebene: 10
|
Überarbeitung A erhält 3 Instanzen aus der Mindestanzahl von Instanzen auf Dienstebene, die sich aus der Trafficaufteilung ergibt, ist aber auf die Höchstanzahl von Instanzen auf Überarbeitungsebene beschränkt. Überarbeitung B erhält 5 Instanzen aus der Mindestanzahl von Instanzen auf Dienstebene, die proportional zur Trafficaufteilung ist. Dies führt zu 8 Instanzen auf Dienstebene, da 2 aufgrund der maximalen Anzahl von Instanzen auf Überarbeitungsebene von Version 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
|
Für Version A wird eine Mindestanzahl von Instanzen und für Version B eine Mindestanzahl von zwei Instanzen festgelegt. Die Anzahl der Instanzen für den Dienst beträgt 3. |