Cloud Run-Systemdiagnosen sorgen dafür, dass Ihre Containerinstanzen korrekt ausgeführt werden und Traffic verarbeiten können. Mit Cloud Run-Systemdiagnosen können Sie anpassen, wann Ihr Container bereit ist, Anfragen zu empfangen, und wann er als fehlerhaft eingestuft werden soll, sodass ein Neustart erforderlich ist.
Anwendungsfälle
Sie können die folgenden Arten von Systemdiagnoseprüfungen konfigurieren:
- Startprüfungen ermitteln, ob der Container gestartet wurde und bereit ist, Traffic entgegenzunehmen.
- Aktivitätsprüfungen bestimmen, ob ein Container neu gestartet werden soll.
- Durch einen Neustart eines Containers kann in diesem Fall die Instanzverfügbarkeit bei Programmfehlern erhöht werden.
- Aktivitätsprüfungen sollen einzelne Instanzen neu starten, die auf andere Weise nicht wiederhergestellt werden können. Sie sollten hauptsächlich für nicht wiederherstellbare Instanzfehler verwendet werden, um beispielsweise einen Deadlock zu erkennen, wenn eine Instanz ausgeführt wird, aber keine Fortschritte machen kann. Mithilfe von benutzerdefinierten Organisationsrichtlinien können Sie für jeden Container eine Aktivitätsprüfung erzwingen.
- Wenn bei einer Instanz wiederholt Fehler bei Prüfungen auftreten, begrenzt Cloud Run Instanzneustarts, um unkontrollierte Absturzschleifen zu verhindern.
Bereitschaftsprüfungen (Vorabversion)
Mit Bereitschaftsüberprüfungen wird ermittelt, wann eine Instanz in Ihrer Cloud Run-Instanz Traffic verarbeiten soll. Die Bereitschaftsprüfungen beginnen, nachdem die Startprüfung des Containers erfolgreich durchlaufen wurde. Wenn eine Instanz die Bereitschaftsprüfung über den von Ihnen konfigurierten Grenzwert für Fehler hinaus nicht besteht, sendet Cloud Run keinen neuen Traffic mehr an sie. Cloud Run beendet die Instanz nicht und leitet Traffic an die Instanz zurück, wenn sie die Bereitschaftsprüfung wieder besteht.
Ihr Container muss die Start-, Aktivitäts- und Bereitschaftsprüfungen konsistent implementieren. Wenn die Startprüfung bestanden ist, betrachtet Cloud Run Ihren Container als bereit für die Verarbeitung von Traffic.
Wir empfehlen, die Logik so zu kapseln, dass die Bereitschaft durch die Startup-Prüfung berücksichtigt wird. Da Cloud Run Traffic an eine neue Instanz weiterleiten kann, bevor die erste Bereitschaftsprüfung abgeschlossen ist, muss sichergestellt werden, dass das Bestehen der Startprüfung auch die Bereitschaft zur sofortigen sicheren Bereitstellung von Traffic gewährleistet. Wenn die Startprüfung erfolgreich ist, wird der Container als bereit für den Empfang von Traffic betrachtet.
Startprüfungen konfigurieren
Sie können HTTP-, TCP- und gRPC-Prüfungen mit der Google Cloud CLI oder YAML konfigurieren:
gcloud
TCP-Start
Führen Sie dazu diesen Befehl aus:
gcloud beta run instances create INSTANCE \
--image=IMAGE_URL \
--startup-probe tcpSocket.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
Ersetzen Sie Folgendes:
- INSTANCE: Der Name Ihrer Cloud Run-Instanz.
- IMAGE_URL: ein 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. - CONTAINER_PORT (optional): Der Containerport, der für Ihre Instanz verwendet wird.
- DELAY: Anzahl der Sekunden, die nach dem Start des Containers gewartet werden soll, bevor die erste Prüfung ausgeführt wird. Geben Sie einen Wert zwischen 0 Sekunden und 240 Sekunden an. Der Standardwert beträgt 0 Sekunden.
- TIMEOUT (Optional): die Anzahl der Sekunden, die gewartet wird, bis das Zeitlimit der Prüfung überschritten wird. Dieser Wert darf den für
periodSecondsangegebenen Wert nicht überschreiten. Geben Sie einen Wert zwischen 1 und 240 an. Der Standardwert ist 1. - THRESHOLD: Die Anzahl der Wiederholungen der Prüfung, bevor der Container heruntergefahren wird. Der Standardwert ist 3.
- PERIOD: Zeitraum (in Sekunden), in dem die Prüfung ausgeführt werden soll.
Beispiel:
2, um die Prüfung alle zwei Sekunden durchzuführen. Geben Sie einen Wert zwischen 1 Sekunde und 240 Sekunden an. Der Standardwert beträgt 10 Sekunden.
HTTP-Start
Fügen Sie dem Instanzcode einen HTTP/1-Endpunkt (den Cloud Run-Standard, nicht HTTP/2) hinzu, um auf die Prüfung zu reagieren. Der Endpunktname (z. B. /startup, /health oder /are_you_ready) muss mit dem path in der Prüfungskonfiguration übereinstimmen. HTTP-Systemdiagnose-Endpunkte sind extern zugänglich und folgen den gleichen Prinzipien wie alle anderen extern zugänglichen HTTP-Instanzendpunkte.
Führen Sie dazu diesen Befehl aus:
gcloud beta run instances create INSTANCE \
--image=IMAGE_URL \
--startup-probe httpGet.path=PATH,httpGet.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
Ersetzen Sie Folgendes:
- INSTANCE: Der Name Ihrer Cloud Run-Instanz.
- IMAGE_URL: ein 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. - PATH: ein relativer Pfad zum HTTP-Endpunkt, z. B.
/health. - CONTAINER_PORT (optional): auf den Containerport festgelegt, der für Ihre Instanz verwendet wird.
- DELAY (Optional): Die Anzahl der Sekunden, die nach dem Start des Containers gewartet werden soll, bevor die erste Prüfung ausgeführt wird. Geben Sie einen Wert zwischen 0 Sekunden und 240 Sekunden an. Der Standardwert beträgt 0 Sekunden.
- THRESHOLD (Optional): Die Anzahl der Wiederholungen der Prüfung, bevor der Container heruntergefahren wird. Der Standardwert ist 3.
- TIMEOUT (Optional): Die Anzahl der Sekunden, die gewartet wird, bis das Zeitlimit der Prüfung überschritten wird. Dieser Wert darf den für periodSeconds angegebenen Wert nicht überschreiten. Geben Sie einen Wert zwischen 1 und 240 an. Der Standardwert ist 1.
- PERIOD (optional): Das Intervall (in Sekunden), in dem die Prüfung ausgeführt werden soll. Beispiel:
2, um die Prüfung alle zwei Sekunden durchzuführen. Geben Sie einen Wert zwischen 1 Sekunde und 240 Sekunden an. Der Standardwert beträgt 10 Sekunden.
gRPC-Start
Achten Sie darauf, dass Ihr Container-Image das gRPC-Systemdiagnoseprotokoll implementiert.
Führen Sie dazu diesen Befehl aus:
gcloud beta run instances create INSTANCE \
--image=IMAGE_URL \
--startup-probe grpc.port=CONTAINER_PORT,grpc.instance=GRPC_INSTANCE,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
Ersetzen Sie Folgendes:
- INSTANCE: Der Name Ihrer Cloud Run-Instanz.
- IMAGE_URL: ein 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. - GRPC_INSTANCE (optional): Wenn festgelegt, wird dieser Wert im Feld „instance“ des
grpc.health.v1.HealthCheckRequestverwendet, wenn diegrpc.health.v1.Health.Check-RPC aufgerufen wird. - CONTAINER_PORT (optional): Der Containerport, der für Ihre Instanz verwendet wird.
- DELAY (Optional): Die Anzahl der Sekunden, die nach dem Start des Containers gewartet werden soll, bevor die erste Prüfung ausgeführt wird. Geben Sie einen Wert zwischen 0 Sekunden und 240 Sekunden an. Der Standardwert beträgt 0 Sekunden.
- THRESHOLD (Optional): Die Anzahl der Wiederholungen der Prüfung, bevor der Container heruntergefahren wird. Der Standardwert ist 3.
- TIMEOUT (Optional): Die Anzahl der Sekunden, die gewartet wird, bis das Zeitlimit der Prüfung überschritten wird. Dieser Wert darf den für periodSeconds angegebenen Wert nicht überschreiten. Geben Sie einen Wert zwischen 1 und 240 an. Der Standardwert ist 1.
- PERIOD (optional): Das Intervall (in Sekunden), in dem die Prüfung ausgeführt werden soll. Beispiel:
2, um die Prüfung alle zwei Sekunden durchzuführen. Geben Sie einen Wert zwischen 1 Sekunde und 240 Sekunden an. Der Standardwert beträgt 10 Sekunden.
YAML
TCP-Start
Wenn Sie eine neue Instanz erstellen, überspringen Sie diesen Schritt. Wenn Sie eine vorhandene Instanz aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
Konfigurieren Sie das Attribut
startupProbeso:apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA spec: containers: - image: IMAGE_URL startupProbe: tcpSocket: port: CONTAINER_PORT initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
Ersetzen Sie Folgendes:
- INSTANCE: Der Name Ihrer Cloud Run-Instanz.
- IMAGE_URL: ein 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. - CONTAINER_PORT (optional): Der Containerport, der für Ihre Instanz verwendet wird.
- DELAY: Anzahl der Sekunden, die nach dem Start des Containers gewartet werden soll, bevor die erste Prüfung ausgeführt wird. Geben Sie einen Wert zwischen 0 Sekunden und 240 Sekunden an. Der Standardwert beträgt 0 Sekunden.
- TIMEOUT (Optional): die Anzahl der Sekunden, die gewartet wird, bis das Zeitlimit der Prüfung überschritten wird. Dieser Wert darf den für
periodSecondsangegebenen Wert nicht überschreiten. Geben Sie einen Wert zwischen 1 und 240 an. Der Standardwert ist 1. - THRESHOLD: Die Anzahl der Wiederholungen der Prüfung, bevor der Container heruntergefahren wird. Der Standardwert ist 3.
- PERIOD: Zeitraum (in Sekunden), in dem die Prüfung ausgeführt werden soll.
Beispiel:
2, um die Prüfung alle zwei Sekunden durchzuführen. Geben Sie einen Wert zwischen 1 Sekunde und 240 Sekunden an. Der Standardwert beträgt 10 Sekunden.
-
Erstellen oder aktualisieren Sie die Instanz mit dem folgenden Befehl:
gcloud beta run instances replace instance.yaml
HTTP-Start
Fügen Sie dem Instanzcode einen HTTP/1-Endpunkt (den Cloud Run-Standard, nicht HTTP/2) hinzu, um auf die Prüfung zu reagieren. Der Endpunktname (z. B. /startup, /health oder /are_you_ready) muss mit dem path in der Prüfungskonfiguration übereinstimmen. HTTP-Systemdiagnose-Endpunkte sind extern zugänglich und folgen den gleichen Prinzipien wie alle anderen extern zugänglichen HTTP-Instanzendpunkte.
Wenn Sie eine neue Instanz erstellen, überspringen Sie diesen Schritt. Wenn Sie eine vorhandene Instanz aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
Konfigurieren Sie das Attribut
startupProbeso:apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA spec: containers: - image: IMAGE_URL startupProbe: httpGet: path: PATH port: CONTAINER_PORT httpHeaders: - name: HEADER_NAME value: HEADER_VALUE initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
Ersetzen Sie Folgendes:
- INSTANCE: Der Name Ihrer Cloud Run-Instanz.
- IMAGE_URL: ein 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. - PATH: ein relativer Pfad zum HTTP-Endpunkt, z. B.
/health. - CONTAINER_PORT (optional): auf den Containerport festgelegt, der für Ihre Instanz verwendet wird.
- DELAY (Optional): Die Anzahl der Sekunden, die nach dem Start des Containers gewartet werden soll, bevor die erste Prüfung ausgeführt wird. Geben Sie einen Wert zwischen 0 Sekunden und 240 Sekunden an. Der Standardwert beträgt 0 Sekunden.
- THRESHOLD (Optional): Die Anzahl der Wiederholungen der Prüfung, bevor der Container heruntergefahren wird. Der Standardwert ist 3.
- Optional:
httpHeaderskann verwendet werden, um mehrere oder wiederkehrende benutzerdefinierte Header mithilfe der Felder HEADER_NAME und HEADER_VALUE anzugeben. - TIMEOUT (Optional): Die Anzahl der Sekunden, die gewartet wird, bis das Zeitlimit der Prüfung überschritten wird. Dieser Wert darf den für periodSeconds angegebenen Wert nicht überschreiten. Geben Sie einen Wert zwischen 1 und 240 an. Der Standardwert ist 1.
- PERIOD (optional): Das Intervall (in Sekunden), in dem die Prüfung ausgeführt werden soll. Beispiel:
2, um die Prüfung alle zwei Sekunden durchzuführen. Geben Sie einen Wert zwischen 1 Sekunde und 240 Sekunden an. Der Standardwert beträgt 10 Sekunden.
Wenn Sie eine neue Instanz erstellen, überspringen Sie diesen Schritt. Wenn Sie eine vorhandene Instanz aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
gRPC-Start
Achten Sie darauf, dass Ihr Container-Image das gRPC-Systemdiagnoseprotokoll implementiert.
Wenn Sie eine neue Instanz erstellen, überspringen Sie diesen Schritt. Wenn Sie eine vorhandene Instanz aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
Konfigurieren Sie das Attribut
startupProbeso:apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA spec: containers: - image: IMAGE_URL startupProbe: grpc: instance: GRPC_INSTANCE port: CONTAINER_PORT initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
Ersetzen Sie Folgendes:
- INSTANCE: Der Name Ihrer Cloud Run-Instanz.
- IMAGE_URL: ein 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. - GRPC_INSTANCE (optional): Wenn festgelegt, wird dieser Wert im Feld „instance“ des
grpc.health.v1.HealthCheckRequestverwendet, wenn diegrpc.health.v1.Health.Check-RPC aufgerufen wird. - CONTAINER_PORT (optional): Der Containerport, der für Ihre Instanz verwendet wird.
- DELAY (Optional): Die Anzahl der Sekunden, die nach dem Start des Containers gewartet werden soll, bevor die erste Prüfung ausgeführt wird. Geben Sie einen Wert zwischen 0 Sekunden und 240 Sekunden an. Der Standardwert beträgt 0 Sekunden.
- THRESHOLD (Optional): Die Anzahl der Wiederholungen der Prüfung, bevor der Container heruntergefahren wird. Der Standardwert ist 3.
- TIMEOUT (Optional): Die Anzahl der Sekunden, die gewartet wird, bis das Zeitlimit der Prüfung überschritten wird. Dieser Wert darf den für periodSeconds angegebenen Wert nicht überschreiten. Geben Sie einen Wert zwischen 1 und 240 an. Der Standardwert ist 1.
- PERIOD (optional): Das Intervall (in Sekunden), in dem die Prüfung ausgeführt werden soll. Beispiel:
2, um die Prüfung alle zwei Sekunden durchzuführen. Geben Sie einen Wert zwischen 1 Sekunde und 240 Sekunden an. Der Standardwert beträgt 10 Sekunden.
Wenn Sie eine neue Instanz erstellen, überspringen Sie diesen Schritt. Wenn Sie eine vorhandene Instanz aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
Die standardmäßige TCP-Startprüfung
Wenn Sie keine TCP-Startprüfung für eine neue Cloud Run-Instanz explizit konfigurieren, konfiguriert Cloud Run automatisch eine TCP-Startprüfung mit den folgenden Standardwerten:
startupProbe:
timeoutSeconds: 240
periodSeconds: 240
failureThreshold: 1
Sie können diese Standardwerte gemäß der Anleitung im Abschnitt Prüfungskonfiguration auf dieser Seite ändern.
Anforderungen und Verhalten bei der Startprüfung
| Prüfungstyp | Voraussetzungen | Verhalten |
|---|---|---|
| TCP-Start | Ohne | Standardmäßig stellt Cloud Run eine TCP-Verbindung her, um den TCP-Socket am angegebenen Port zu öffnen. Wenn Cloud Run keine Verbindung herstellen kann, weist dies auf einen Fehler hin. Wenn eine Startprüfung innerhalb der angegebenen Zeit nicht erfolgreich ist ( failureThreshold * periodSeconds), darf 240 nicht überschritten werden. Sekunden, wird der Container heruntergefahren. Siehe auch TCP-Standardeinstellungen. |
| HTTP-Start | Erstellen Sie einen HTTP-Systemdiagnose-Endpunkt Verwenden Sie HTTP/1 |
Nach der Konfiguration der Probe sendet Cloud Run eine HTTP-GET-Anfrage an den Endpunkt der Systemdiagnose (z. B. /health). Jede Antwort vom Typ 2XX oder 3XX ist ein Erfolg. Alles andere weist auf einen Fehler hin.Wenn eine Startprüfung innerhalb der angegebenen Zeit ( failureThreshold * periodSeconds) nicht erfolgreich ist, die 240 Sekunden nicht überschreiten darf, wird der Container heruntergefahren. |
| gRPC-Start | Implementieren Sie das gRPC-Systemdiagnoseprotokoll in Ihrer Cloud Run-Instanz | Wenn eine Startprüfung innerhalb der angegebenen Zeit (failureThreshold * periodSeconds) nicht erfolgreich ist, die 240 Sekunden nicht überschreiten kann, wird der Container heruntergefahren. |
Aktivitätsprüfungen konfigurieren
Sie können HTTP- und gRPC-Prüfungen mit dem Google Cloud SDK oder YAML konfigurieren:
gcloud
HTTP-Aktivität
Fügen Sie dem Instanzcode einen HTTP/1-Endpunkt (den Cloud Run-Standard, nicht HTTP/2) hinzu, um auf die Prüfung zu reagieren. Der Endpunktname (z. B. /startup, /health oder /are_you_ready) muss mit dem path in der Prüfungskonfiguration übereinstimmen. HTTP-Systemdiagnose-Endpunkte sind extern zugänglich und folgen den gleichen Prinzipien wie alle anderen extern zugänglichen HTTP-Instanzendpunkte.
Führen Sie dazu diesen Befehl aus:
gcloud beta run instances deploy INSTANCE \
--image=IMAGE_URL \
--liveness-probe httpGet.path=PATH,httpGet.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
Ersetzen Sie Folgendes:
- INSTANCE: Der Name Ihrer Cloud Run-Instanz.
- IMAGE_URL: ein 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. - PATH: ein relativer Pfad zum HTTP-Endpunkt, z. B.
/health. - CONTAINER_PORT (optional): auf den Containerport festgelegt, der für Ihre Instanz verwendet wird.
- DELAY (Optional): Die Anzahl der Sekunden, die nach dem Start des Containers gewartet werden soll, bevor die erste Prüfung ausgeführt wird. Geben Sie einen Wert zwischen 0 Sekunden und 240 Sekunden an. Der Standardwert beträgt 0 Sekunden.
- THRESHOLD (Optional): Die Anzahl der Wiederholungen der Prüfung, bevor der Container heruntergefahren wird. Der Standardwert ist 3.
- Optional. TIMEOUT: Die Anzahl der Sekunden, die gewartet wird, bis das Zeitlimit der Prüfung überschritten wird. Dieser Wert darf den für
periodSecondsangegebenen Wert nicht überschreiten. Geben Sie einen Wert zwischen 1 und 3.600 an. Der Standardwert ist 1. - Optional. PERIOD: das Intervall (in Sekunden), in dem die Prüfung durchgeführt werden soll. Beispiel:
2, um die Prüfung alle zwei Sekunden durchzuführen. Geben Sie einen Wert zwischen 1 Sekunde und 3.600 Sekunden an. Der Standardwert beträgt 10 Sekunden.
gRPC-Aktivität
Achten Sie darauf, dass Ihr Container-Image das gRPC-Systemdiagnoseprotokoll implementiert.
Führen Sie dazu diesen Befehl aus:
gcloud beta run instances deploy INSTANCE \
--image=IMAGE_URL \
--liveness-probe grpc.port=CONTAINER_PORT,grpc.service=GRPC_SERVICE,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
Ersetzen Sie Folgendes:
- INSTANCE: Der Name Ihrer Cloud Run-Instanz.
- IMAGE_URL: ein 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. - GRPC_INSTANCE (optional): Wenn festgelegt, wird dieser Wert im Feld „instance“ des
grpc.health.v1.HealthCheckRequestverwendet, wenn diegrpc.health.v1.Health.Check-RPC aufgerufen wird. - CONTAINER_PORT (optional): Der Containerport, der für Ihre Instanz verwendet wird.
- DELAY (Optional): Die Anzahl der Sekunden, die nach dem Start des Containers gewartet werden soll, bevor die erste Prüfung ausgeführt wird. Geben Sie einen Wert zwischen 0 Sekunden und 240 Sekunden an. Der Standardwert beträgt 0 Sekunden.
- THRESHOLD (Optional): Die Anzahl der Wiederholungen der Prüfung, bevor der Container heruntergefahren wird. Der Standardwert ist 3.
- Optional. TIMEOUT: Die Anzahl der Sekunden, die gewartet wird, bis das Zeitlimit der Prüfung überschritten wird. Dieser Wert darf den für
periodSecondsangegebenen Wert nicht überschreiten. Geben Sie einen Wert zwischen 1 und 3.600 an. Der Standardwert ist 1. - Optional. PERIOD: das Intervall (in Sekunden), in dem die Prüfung durchgeführt werden soll. Beispiel:
2, um die Prüfung alle zwei Sekunden durchzuführen. Geben Sie einen Wert zwischen 1 Sekunde und 3.600 Sekunden an. Der Standardwert beträgt 10 Sekunden.
YAML
HTTP-Aktivität
Fügen Sie dem Instanzcode einen HTTP/1-Endpunkt (den Cloud Run-Standard, nicht HTTP/2) hinzu, um auf die Prüfung zu reagieren. Der Endpunktname (z. B. /startup, /health oder /are_you_ready) muss mit dem path in der Prüfungskonfiguration übereinstimmen. HTTP-Systemdiagnose-Endpunkte sind extern zugänglich und folgen den gleichen Prinzipien wie alle anderen extern zugänglichen HTTP-Instanzendpunkte.
-
Wenn Sie eine neue Instanz erstellen, überspringen Sie diesen Schritt. Wenn Sie eine vorhandene Instanz aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
Konfigurieren Sie das Attribut
livenessProbeso:apiVersion: serving.knative.dev/v1 apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA spec: containers: - image: IMAGE_URL livenessProbe: httpGet: path: PATH port: CONTAINER_PORT httpHeaders: - name: HEADER_NAME value: HEADER_VALUE initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
Ersetzen Sie Folgendes:
- INSTANCE: Der Name Ihrer Cloud Run-Instanz.
- IMAGE_URL: ein 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. - PATH: ein relativer Pfad zum HTTP-Endpunkt, z. B.
/health. - CONTAINER_PORT (optional): auf den Containerport festgelegt, der für Ihre Instanz verwendet wird.
- DELAY (Optional): Die Anzahl der Sekunden, die nach dem Start des Containers gewartet werden soll, bevor die erste Prüfung ausgeführt wird. Geben Sie einen Wert zwischen 0 Sekunden und 240 Sekunden an. Der Standardwert beträgt 0 Sekunden.
- THRESHOLD (Optional): Die Anzahl der Wiederholungen der Prüfung, bevor der Container heruntergefahren wird. Der Standardwert ist 3.
- Optional:
httpHeaderskann verwendet werden, um mehrere oder wiederkehrende benutzerdefinierte Header mithilfe der Felder HEADER_NAME und HEADER_VALUE anzugeben. - Optional. TIMEOUT: Die Anzahl der Sekunden, die gewartet wird, bis das Zeitlimit der Prüfung überschritten wird. Dieser Wert darf den für
periodSecondsangegebenen Wert nicht überschreiten. Geben Sie einen Wert zwischen 1 und 3.600 an. Der Standardwert ist 1. - Optional. PERIOD: das Intervall (in Sekunden), in dem die Prüfung durchgeführt werden soll. Beispiel:
2, um die Prüfung alle zwei Sekunden durchzuführen. Geben Sie einen Wert zwischen 1 Sekunde und 3.600 Sekunden an. Der Standardwert beträgt 10 Sekunden.
-
Erstellen oder aktualisieren Sie die Instanz mit dem folgenden Befehl:
gcloud beta run instances replace instance.yaml
gRPC-Aktivität
Achten Sie darauf, dass Ihr Container-Image das gRPC-Systemdiagnoseprotokoll implementiert.
-
Wenn Sie eine neue Instanz erstellen, überspringen Sie diesen Schritt. Wenn Sie eine vorhandene Instanz aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
Konfigurieren Sie das Attribut
livenessProbeso:apiVersion: serving.knative.dev/v1 apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA spec: containers: - image: IMAGE_URL livenessProbe: grpc: port: CONTAINER_PORT service: GRPC_SERVICE initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
Ersetzen Sie Folgendes:
- INSTANCE: Der Name Ihrer Cloud Run-Instanz.
- IMAGE_URL: ein 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. - GRPC_INSTANCE (optional): Wenn festgelegt, wird dieser Wert im Feld „instance“ des
grpc.health.v1.HealthCheckRequestverwendet, wenn diegrpc.health.v1.Health.Check-RPC aufgerufen wird. - CONTAINER_PORT (optional): Der Containerport, der für Ihre Instanz verwendet wird.
- DELAY (Optional): Die Anzahl der Sekunden, die nach dem Start des Containers gewartet werden soll, bevor die erste Prüfung ausgeführt wird. Geben Sie einen Wert zwischen 0 Sekunden und 240 Sekunden an. Der Standardwert beträgt 0 Sekunden.
- THRESHOLD (Optional): Die Anzahl der Wiederholungen der Prüfung, bevor der Container heruntergefahren wird. Der Standardwert ist 3.
- Optional. TIMEOUT: Die Anzahl der Sekunden, die gewartet wird, bis das Zeitlimit der Prüfung überschritten wird. Dieser Wert darf den für
periodSecondsangegebenen Wert nicht überschreiten. Geben Sie einen Wert zwischen 1 und 3.600 an. Der Standardwert ist 1. - Optional. PERIOD: das Intervall (in Sekunden), in dem die Prüfung durchgeführt werden soll. Beispiel:
2, um die Prüfung alle zwei Sekunden durchzuführen. Geben Sie einen Wert zwischen 1 Sekunde und 3.600 Sekunden an. Der Standardwert beträgt 10 Sekunden.
-
Erstellen oder aktualisieren Sie die Instanz mit dem folgenden Befehl:
gcloud beta run instances replace instance.yaml
Anforderungen und Verhalten bei Aktivitätsprüfungen
| Prüfungstyp | Voraussetzungen | Verhalten |
|---|---|---|
| HTTP-Aktivität | Erstellen Sie einen HTTP-Systemdiagnose-Endpunkt Verwenden Sie HTTP/1 |
Die Aktivitätsprüfung wird erst gestartet, wenn die Startprüfung erfolgreich war. Nach der Konfiguration der Prüfung und wenn eine Startprüfung erfolgreich ist, sendet Cloud Run eine HTTP-GET-Anfrage an den Endpunkt der Systemdiagnose (z. B. /health). Jede Antwort vom Typ 2XX oder 3XX ist ein Erfolg. Alles andere zeigt einen Fehler an.Wenn eine Aktivitätsprüfung innerhalb der angegebenen Zeit ( failureThreshold * periodSeconds) nicht erfolgreich ist, wird der Container mit einem SIGKILL-Signal heruntergefahren. Alle verbleibenden Anfragen, die noch vom Container verarbeitet wurden, werden mit dem HTTP-Statuscode 503 beendet. Nachdem der Container heruntergefahren wurde, startet das Cloud Run-Autoscaling eine neue Containerinstanz. |
| gRPC-Aktivität | Implementieren Sie das gRPC-Systemdiagnoseprotokoll in Ihrer Cloud Run-Instanz | Wenn Sie eine gRPC-Startprüfung konfigurieren, wird die Aktivitätsprüfung erst gestartet, nachdem die Startprüfung erfolgreich war. Nachdem die Aktivitätsprüfung konfiguriert wurde und jede Startprüfung erfolgreich ist, sendet Cloud Run eine Systemdiagnoseanfrage an die Instanz. Wenn eine Aktivitätsprüfung innerhalb der angegebenen Zeit nicht erfolgreich ist ( failureThreshold × periodSeconds), wird der Container mit einem SIGKILL-Signal heruntergefahren. Nachdem der Container heruntergefahren wurde, startet das Cloud Run-Autoscaling eine neue Containerinstanz. |
Bereitschaftsprüfungen konfigurieren
Für Bereitschaftsprobes gelten die folgenden Einschränkungen:- Wenn Sie die Sitzungsaffinität aktivieren, sendet Cloud Run weiterhin Anfragen an dieselbe Instanz, auch wenn der Bereitschaftscheck fehlschlägt.
Sie können eine Bereitschaftsprüfung mit der Google Cloud CLI oder YAML konfigurieren:
gcloud
HTTP-Bereitschaft
Fügen Sie dem Instanzcode einen HTTP/1-Endpunkt (den Cloud Run-Standard, nicht HTTP/2) hinzu, um auf die Prüfung zu reagieren. Der Endpunktname (z. B. /startup, /health oder /are_you_ready) muss mit dem path in der Prüfungskonfiguration übereinstimmen. HTTP-Systemdiagnose-Endpunkte sind extern zugänglich und folgen den gleichen Prinzipien wie alle anderen extern zugänglichen HTTP-Instanzendpunkte.
Führen Sie dazu diesen Befehl aus:
gcloud beta run instances deploy INSTANCE \
--image=IMAGE_URL \
--readiness-probe httpGet.path=PATH,httpGet.port=CONTAINER_PORT,successThreshold=SUCCESS_THRESHOLD,failureThreshold=FAILURE_THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
Ersetzen Sie Folgendes:
- INSTANCE: Der Name Ihrer Cloud Run-Instanz.
- IMAGE_URL: ein 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. - PATH (optional): Der relative Pfad zum HTTP-Endpunkt, z. B.
/are_you_ready. Der Standardpfad ist/. - CONTAINER_PORT (optional): Der für Ihre Instanz verwendete Containerport. Der Standardport ist der Haupteingangsport.
- SUCCESS_THRESHOLD (optional): Die Mindestanzahl aufeinanderfolgender Erfolge, damit die Prüfung nach einem Fehler als erfolgreich gilt. Der Standardwert ist 2.
- FAILURE_THRESHOLD (Optional): Die Anzahl der Wiederholungen der Prüfung, bevor ein Fehler gemeldet wird. Dadurch wird verhindert, dass die Instanz Traffic empfängt. Der Standardwert ist 3.
- TIMEOUT (Optional): Die Anzahl der Sekunden, die gewartet werden soll, bis das Zeitlimit der Prüfung überschritten wird. Dieser Wert darf den für
periodSecondsangegebenen Wert nicht überschreiten. Geben Sie einen Wert zwischen 1 und 300 an. Der Standardwert ist 1. - PERIOD (optional): Das Intervall (in Sekunden), in dem die Prüfung ausgeführt werden soll.
Beispiel:
2, um die Prüfung alle zwei Sekunden durchzuführen. Geben Sie einen Wert zwischen 1 und 300 an. Der Standardwert beträgt 10 Sekunden.
gRPC-Bereitschaft
Achten Sie darauf, dass Ihr Container-Image das gRPC-Systemdiagnoseprotokoll implementiert.
Führen Sie dazu diesen Befehl aus:
gcloud beta run instances deploy INSTANCE \
--image=IMAGE_URL \
--readiness-probe grpc.port=CONTAINER_PORT,grpc.instance=GRPC_INSTANCE,successThreshold=SUCCESS_THRESHOLD,failureThreshold=FAILURE_THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
Ersetzen Sie Folgendes:
- INSTANCE: Der Name Ihrer Cloud Run-Instanz.
- IMAGE_URL: ein 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. - CONTAINER_PORT (optional): Der für Ihre Instanz verwendete Containerport. Der Standardport ist der Haupteingangsport.
- GRPC_INSTANCE (optional): Wenn festgelegt, wird dieser Wert im Feld „instance“ des
grpc.health.v1.HealthCheckRequestverwendet, wenn diegrpc.health.v1.Health.Check-RPC aufgerufen wird. - SUCCESS_THRESHOLD (optional): Die Mindestanzahl aufeinanderfolgender Erfolge, damit die Prüfung nach einem Fehler als erfolgreich gilt. Der Standardwert ist 2.
- FAILURE_THRESHOLD (Optional): Die Anzahl der Wiederholungen der Prüfung, bevor ein Fehler gemeldet wird. Dadurch wird verhindert, dass die Instanz Traffic empfängt. Der Standardwert ist 3.
- TIMEOUT (Optional): Die Anzahl der Sekunden, die gewartet werden soll, bis das Zeitlimit der Prüfung überschritten wird. Dieser Wert darf den für
periodSecondsangegebenen Wert nicht überschreiten. Geben Sie einen Wert zwischen 1 und 300 an. Der Standardwert ist 1. - PERIOD (optional): Das Intervall (in Sekunden), in dem die Prüfung ausgeführt werden soll.
Beispiel:
2, um die Prüfung alle zwei Sekunden durchzuführen. Geben Sie einen Wert zwischen 1 und 300 an. Der Standardwert beträgt 10 Sekunden.
YAML
HTTP-Bereitschaft
Fügen Sie dem Instanzcode einen HTTP/1-Endpunkt (den Cloud Run-Standard, nicht HTTP/2) hinzu, um auf die Prüfung zu reagieren. Der Endpunktname (z. B. /startup, /health oder /are_you_ready) muss mit dem path in der Prüfungskonfiguration übereinstimmen. HTTP-Systemdiagnose-Endpunkte sind extern zugänglich und folgen den gleichen Prinzipien wie alle anderen extern zugänglichen HTTP-Instanzendpunkte.
-
Wenn Sie eine neue Instanz erstellen, überspringen Sie diesen Schritt. Wenn Sie eine vorhandene Instanz aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
Konfigurieren Sie das Attribut
readinessProbeso:apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA spec: template: metadata: spec: containers: - image: IMAGE_URL readinessProbe: httpGet: path: PATH port: CONTAINER_PORT successThreshold: SUCCESS_THRESHOLD failureThreshold: FAILURE_THRESHOLD timeoutSeconds: TIMEOUT periodSeconds: PERIOD
Ersetzen Sie Folgendes:
- INSTANCE: Der Name Ihrer Cloud Run-Instanz.
- IMAGE_URL: ein 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. - PATH (optional): Der relative Pfad zum HTTP-Endpunkt, z. B.
/are_you_ready. Der Standardpfad ist/. - CONTAINER_PORT (optional): Der für Ihre Instanz verwendete Containerport. Der Standardport ist der Haupteingangsport.
- SUCCESS_THRESHOLD (optional): Die Mindestanzahl aufeinanderfolgender Erfolge, damit die Prüfung nach einem Fehler als erfolgreich gilt. Der Standardwert ist 2.
- FAILURE_THRESHOLD (Optional): Die Anzahl der Wiederholungen der Prüfung, bevor ein Fehler gemeldet wird. Dadurch wird verhindert, dass die Instanz Traffic empfängt. Der Standardwert ist 3.
- TIMEOUT (Optional): Die Anzahl der Sekunden, die gewartet werden soll, bis das Zeitlimit der Prüfung überschritten wird. Dieser Wert darf den für
periodSecondsangegebenen Wert nicht überschreiten. Geben Sie einen Wert zwischen 1 und 300 an. Der Standardwert ist 1. - PERIOD (optional): Das Intervall (in Sekunden), in dem die Prüfung ausgeführt werden soll.
Beispiel:
2, um die Prüfung alle zwei Sekunden durchzuführen. Geben Sie einen Wert zwischen 1 und 300 an. Der Standardwert beträgt 10 Sekunden.
-
Erstellen oder aktualisieren Sie die Instanz mit dem folgenden Befehl:
gcloud beta run instances replace instance.yaml
gRPC-Bereitschaft
Achten Sie darauf, dass Ihr Container-Image das gRPC-Systemdiagnoseprotokoll implementiert.
-
Wenn Sie eine neue Instanz erstellen, überspringen Sie diesen Schritt. Wenn Sie eine vorhandene Instanz aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
Konfigurieren Sie das Attribut
readinessProbeso:apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA spec: template: metadata: spec: containers: - image: IMAGE_URL readinessProbe: grpc: port: CONTAINER_PORT instance: GRPC_INSTANCE successThreshold: SUCCESS_THRESHOLD failureThreshold: FAILURE_THRESHOLD timeoutSeconds: TIMEOUT periodSeconds: PERIOD
Ersetzen Sie Folgendes:
- INSTANCE: Der Name Ihrer Cloud Run-Instanz.
- IMAGE_URL: ein 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. - CONTAINER_PORT (optional): Der für Ihre Instanz verwendete Containerport. Der Standardport ist der Haupteingangsport.
- GRPC_INSTANCE (optional): Wenn festgelegt, wird dieser Wert im Feld „instance“ des
grpc.health.v1.HealthCheckRequestverwendet, wenn diegrpc.health.v1.Health.Check-RPC aufgerufen wird. - SUCCESS_THRESHOLD (optional): Die Mindestanzahl aufeinanderfolgender Erfolge, damit die Prüfung nach einem Fehler als erfolgreich gilt. Der Standardwert ist 2.
- FAILURE_THRESHOLD (Optional): Die Anzahl der Wiederholungen der Prüfung, bevor ein Fehler gemeldet wird. Dadurch wird verhindert, dass die Instanz Traffic empfängt. Der Standardwert ist 3.
- TIMEOUT (Optional): Die Anzahl der Sekunden, die gewartet werden soll, bis das Zeitlimit der Prüfung überschritten wird. Dieser Wert darf den für
periodSecondsangegebenen Wert nicht überschreiten. Geben Sie einen Wert zwischen 1 und 300 an. Der Standardwert ist 1. - PERIOD (optional): Das Intervall (in Sekunden), in dem die Prüfung ausgeführt werden soll.
Beispiel:
2, um die Prüfung alle zwei Sekunden durchzuführen. Geben Sie einen Wert zwischen 1 und 300 an. Der Standardwert beträgt 10 Sekunden.
-
Erstellen oder aktualisieren Sie die Instanz mit dem folgenden Befehl:
gcloud beta run instances replace instance.yaml
CPU-Zuweisung
- Die CPU wird immer zugewiesen, wenn Prüfungen ausgeführt werden.
- Bei allen Prüfungen werden für die Nutzung von CPU und Arbeitsspeicher Kosten in Rechnung gestellt, es fallen jedoch keine anfragebasierten Gebühren an.