Cloud Run-Systemdiagnosen sorgen dafür, dass Ihre Containerinstanzen ordnungsgemäß 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 zwei Arten von Systemdiagnoseprüfungen konfigurieren:
Startprüfungen ermitteln, ob der Container gestartet wurde und bereit ist, Traffic entgegenzunehmen.
- Wenn Sie eine Startprüfung konfigurieren, werden Aktivitätsprüfungen deaktiviert, bis die Startprüfung feststellt, dass der Container gestartet wurde, um Störungen des Dienststarts zu vermeiden.
- Startprüfungen sind besonders nützlich, wenn Sie Aktivitätsprüfungen für langsam startende Container verwenden, da sie verhindern, dass die Container vorzeitig heruntergefahren werden, bevor sie ausgeführt werden.
Aktivitätsprüfungen bestimmen, ob ein Container neu gestartet werden soll.
- Durch einen Neustart eines Containers kann in diesem Fall die Dienstverfü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 ein Dienst 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 einem Dienst wiederholt Fehler bei Start- oder Aktivitätsprüfungen auftreten, begrenzt Cloud Run Instanzneustarts, um unkontrollierte Absturzschleifen zu verhindern.
Prüfungen 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.
Startprüfungen konfigurieren
Sie können HTTP-, TCP- und gRPC-Prüfungen mit der Google Cloud -Konsole, YAML oder Terraform konfigurieren:
Console
Rufen Sie in der Google Cloud Console die Seite Cloud Run auf:
Erweitern Sie für einen neuen Dienst Container, Volumes, Netzwerk, Sicherheit, um die Optionen der Systemdiagnose aufzurufen. Klicken Sie für einen vorhandenen Dienst auf den Dienst, den Sie konfigurieren möchten, und dann auf Bearbeiten und Bereitstellen, um die Optionen für die Systemdiagnose aufzurufen.
Im Abschnitt Container wechseln Sie zu Systemdiagnosen und klicken Sie auf Systemdiagnose hinzufügen, um den Konfigurationsbereich Systemdiagnose hinzufügen zu öffnen.
Wählen Sie im Menü Typ der Systemdiagnose auswählen den Typ der Systemdiagnose aus, die Sie hinzufügen möchten.
Wählen Sie im Menü Prüfungstyp auswählen den Typ der Prüfung aus, den Sie verwenden möchten, z. B. HTTP oder gRPC. Dadurch wird das Formular zur Prüfungskonfiguration angezeigt.
Beachten Sie, dass die Prüfungskonfiguration je nach Prüfungstyp variiert. Konfigurieren Sie die Prüfungseinstellungen:
Wenn Sie HTTP-Prüfungen verwenden:
Achten Sie darauf, dass Ihr Dienst HTTP/1 (den Cloud Run-Standard) verwendet, nicht HTTP/2.
Geben Sie im Feld Pfad den relativen Pfad zum Endpunkt an, z. B.
/
.Klicken Sie das Kästchen HTTP-Header an, um optionale benutzerdefinierte Header anzugeben. Geben Sie den Header-Namen im Feld Name und den Header-Wert im Feld Wert an. Klicken Sie auf HTTP-Header hinzufügen, um weitere Header anzugeben.
Wenn Sie gRPC-Prüfungen verwenden, muss Ihr Container-Image das gRPC-Systemdiagnoseprotokoll implementieren. Weitere Informationen finden Sie unter GRPC Health Checking Protocol.
Geben Sie unter Port den für Ihren Dienst verwendeten Containerport an.
Geben Sie unter Anfängliche Verzögerung die Anzahl der Sekunden an, 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.
Geben Sie für Period den Zeitraum in Sekunden an, 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.Geben Sie als Fehlerschwellenwert an, wie oft die Prüfung wiederholt werden soll, bevor der Container heruntergefahren wird. Der Standardwert ist 3.
Geben Sie unter Zeitlimit die Anzahl der Sekunden an, die gewartet werden soll, 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.
Klicken Sie auf Hinzufügen, um den neuen Schwellenwert hinzuzufügen.
gcloud
TCP-Start
Führen Sie dazu diesen Befehl aus:
gcloud run deploy SERVICE \
--image=IMAGE_URL \
--startup-probe tcpSocket.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
Ersetzen Sie:
- SERVICE durch den Namen Ihres Cloud Run-Dienstes.
- 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
. - (OPTIONAL) CONTAINER_PORT sollte auf den Containerport festgelegt sein, der für Ihren Dienst verwendet wird.
- DELAY mit der 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.
- (OPTIONAL) TIMEOUT durch 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. - THRESHOLD mit der Anzahl der Wiederholungen der Prüfung, bevor der Container heruntergefahren wird. Der Standardwert ist 3.
- PERIOD durch 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 240 Sekunden an. Der Standardwert beträgt 10 Sekunden.
HTTP-Start
Führen Sie dazu diesen Befehl aus:
gcloud run deploy SERVICE \
--image=IMAGE_URL \
--startup-probe httpGet.path=PATH,httpGet.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
Ersetzen Sie:
- SERVICE durch den Namen Ihres Cloud Run-Dienstes.
- 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
. - PATH durch den relativen Pfad zum HTTP-Endpunkt, z. B.
/ready
. - (OPTIONAL) CONTAINER_PORT sollte auf den Containerport festgelegt sein, der für Ihren Dienst verwendet wird.
- (OPTIONAL) DELAY mit der Anzahl der Sekunden, die gewartet werden soll, bis der Container gestartet wurde, 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.
- (OPTIONAL) THRESHOLD mit der Anzahl der Wiederholungen der Prüfung, bevor der Container heruntergefahren wird. Der Standardwert ist 3.
- (OPTIONAL)TIMEOUT mit der 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.
- (OPTIONAL) PERIOD durch 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
Bevor Sie gRPC-Prüfungen verwenden, müssen Sie dafür sorgen, dass Ihr Container-Image das gRPC-Systemdiagnoseprotokoll implementiert. Weitere Informationen finden Sie unter GRPC Health Checking Protocol.
Führen Sie dazu diesen Befehl aus:
gcloud run deploy SERVICE \
--image=IMAGE_URL \
--startup-probe grpc.port=CONTAINER_PORT,grpc.service=GRPC_SERVICE,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
Ersetzen Sie:
- SERVICE durch den Namen Ihres Cloud Run-Dienstes.
- 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
. - (OPTIONAL) GRPC_SERVICE. Wenn festgelegt, wird dieser Wert im Feld „service“ des
grpc.health.v1.HealthCheckRequest
verwendet, wenn diegrpc.health.v1.Health.Check
-RPC aufgerufen wird. - (OPTIONAL) CONTAINER_PORT sollte auf den Containerport festgelegt sein, der für Ihren Dienst verwendet wird.
- (OPTIONAL) DELAY mit der Anzahl der Sekunden, die gewartet werden soll, bis der Container gestartet wurde, 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.
- (OPTIONAL) THRESHOLD mit der Anzahl der Wiederholungen der Prüfung, bevor der Container heruntergefahren wird. Der Standardwert ist 3.
- (OPTIONAL)TIMEOUT mit der 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.
- (OPTIONAL) PERIOD durch 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 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
Konfigurieren Sie das Attribut
startupProbe
so:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: spec: containers: - image: IMAGE_URL startupProbe: tcpSocket: port: CONTAINER_PORT initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
Ersetzen Sie:
- SERVICE durch den Namen Ihres Cloud Run-Dienstes.
- 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
. - (OPTIONAL) CONTAINER_PORT sollte auf den Containerport festgelegt sein, der für Ihren Dienst verwendet wird.
- DELAY mit der 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.
- (OPTIONAL) TIMEOUT durch 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. - THRESHOLD mit der Anzahl der Wiederholungen der Prüfung, bevor der Container heruntergefahren wird. Der Standardwert ist 3.
- PERIOD durch 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 240 Sekunden an. Der Standardwert beträgt 10 Sekunden.
-
Erstellen oder aktualisieren Sie den Dienst mit dem folgenden Befehl:
gcloud run services replace service.yaml
HTTP-Start
-
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
Achten Sie darauf, dass Ihr Dienst HTTP/1 (den Cloud Run-Standard) verwendet, nicht HTTP/2.
Konfigurieren Sie das Attribut
startupProbe
so:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: 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:
- SERVICE durch den Namen Ihres Cloud Run-Dienstes.
- 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
. - PATH durch den relativen Pfad zum HTTP-Endpunkt, z. B.
/ready
. - (OPTIONAL) CONTAINER_PORT sollte auf den Containerport festgelegt sein, der für Ihren Dienst verwendet wird.
- (OPTIONAL) DELAY mit der Anzahl der Sekunden, die gewartet werden soll, bis der Container gestartet wurde, 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.
- (OPTIONAL) THRESHOLD mit der Anzahl der Wiederholungen der Prüfung, bevor der Container heruntergefahren wird. Der Standardwert ist 3.
- (OPTIONAL)
httpHeaders
kann verwendet werden, um mehrere oder wiederkehrende benutzerdefinierte Header mithilfe der Felder HEADER_NAME und HEADER_VALUE anzugeben. - (OPTIONAL)TIMEOUT mit der 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.
- (OPTIONAL) PERIOD durch 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.
-
Erstellen oder aktualisieren Sie den Dienst mit dem folgenden Befehl:
gcloud run services replace service.yaml
gRPC-Start
Bevor Sie gRPC-Prüfungen verwenden, müssen Sie dafür sorgen, dass Ihr Container-Image das gRPC-Systemdiagnoseprotokoll implementiert. Weitere Informationen finden Sie unter GRPC Health Checking Protocol.
-
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
Konfigurieren Sie das Attribut
startupProbe
so:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: spec: containers: - image: IMAGE_URL startupProbe: grpc: service: GRPC_SERVICE port: CONTAINER_PORT initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
Ersetzen Sie:
- SERVICE durch den Namen Ihres Cloud Run-Dienstes.
- 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
. - (OPTIONAL) GRPC_SERVICE. Wenn festgelegt, wird dieser Wert im Feld „service“ des
grpc.health.v1.HealthCheckRequest
verwendet, wenn diegrpc.health.v1.Health.Check
-RPC aufgerufen wird. - (OPTIONAL) CONTAINER_PORT sollte auf den Containerport festgelegt sein, der für Ihren Dienst verwendet wird.
- (OPTIONAL) DELAY mit der Anzahl der Sekunden, die gewartet werden soll, bis der Container gestartet wurde, 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.
- (OPTIONAL) THRESHOLD mit der Anzahl der Wiederholungen der Prüfung, bevor der Container heruntergefahren wird. Der Standardwert ist 3.
- (OPTIONAL)TIMEOUT mit der 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.
- (OPTIONAL) PERIOD durch 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.
-
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.
TCP-Start
Konfigurieren Sie Ihren Cloud Run-Dienst mit dem Attribut startup_probe
so:
HTTP-Start
Achten Sie darauf, dass Ihr Dienst HTTP/1 (den Cloud Run-Standard) verwendet, nicht HTTP/2.
Konfigurieren Sie Ihren Cloud Run-Dienst mit dem Attribut startup_probe
so:
gRPC-Start
Bevor Sie gRPC-Prüfungen verwenden, müssen Sie dafür sorgen, dass Ihr Container-Image das gRPC-Systemdiagnoseprotokoll implementiert. Weitere Informationen finden Sie unter GRPC Health Checking Protocol.
Konfigurieren Sie Ihren Cloud Run-Dienst mit dem Attribut startup_probe
so:
Die standardmäßige TCP-Startprüfung
Wenn Sie keine TCP-Startprüfung für einen neuen Cloud Run-Dienst 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 Prüfung sendet Cloud Run eine HTTP-GET-Anfrage an den Endpunkt der Systemdiagnose für den Dienst (z. B. /ready ). 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.Wenn die HTTP-Startprüfung innerhalb der angegebenen Zeit erfolgreich ist und Sie eine HTTP-Aktivitätsprüfung konfiguriert haben, wird diese gestartet. |
gRPC-Start | Implementieren Sie das gRPC-Systemdiagnoseprotokoll in Ihrem Cloud Run-Dienst | 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 der Google Cloud Console, YAML oder Terraform konfigurieren:
Console
Bevor Sie gRPC-Prüfungen verwenden, müssen Sie dafür sorgen, dass Ihr Container-Image das gRPC-Systemdiagnoseprotokoll implementiert. Weitere Informationen finden Sie unter GRPC Health Checking Protocol.
Rufen Sie in der Google Cloud Console die Seite Cloud Run auf:
Erweitern Sie für einen neuen Dienst Container, Volumes, Netzwerk, Sicherheit, um die Optionen der Systemdiagnose aufzurufen. Klicken Sie für einen vorhandenen Dienst auf den Dienst, den Sie konfigurieren möchten, und dann auf Bearbeiten und Bereitstellen, um die Optionen für die Systemdiagnose aufzurufen.
Im Abschnitt Container wechseln Sie zu Systemdiagnosen und klicken Sie auf Systemdiagnose hinzufügen, um den Konfigurationsbereich Systemdiagnose hinzufügen zu öffnen.
Wählen Sie im Menü Typ der Systemdiagnose auswählen den Typ der Systemdiagnose aus, die Sie hinzufügen möchten.
Wählen Sie im Menü Prüfungstyp auswählen den Typ der Prüfung aus, den Sie verwenden möchten, z. B. HTTP oder gRPC. Dadurch wird das Formular zur Prüfungskonfiguration angezeigt.
Beachten Sie, dass die Prüfungskonfiguration je nach Prüfungstyp variiert. Konfigurieren Sie die Prüfungseinstellungen:
Wenn Sie HTTP-Prüfungen verwenden:
Achten Sie darauf, dass Ihr Dienst HTTP/1 (den Cloud Run-Standard) verwendet, nicht HTTP/2.
Geben Sie im Feld Pfad den relativen Pfad zum Endpunkt an, z. B.
/
.Klicken Sie das Kästchen HTTP-Header an, um optionale benutzerdefinierte Header anzugeben. Geben Sie den Header-Namen im Feld Name und den Header-Wert im Feld Wert an. Klicken Sie auf HTTP-Header hinzufügen, um weitere Header anzugeben.
Wenn Sie gRPC-Prüfungen verwenden, muss Ihr Container-Image das gRPC-Systemdiagnoseprotokoll implementieren. Weitere Informationen finden Sie unter GRPC Health Checking Protocol.
Geben Sie unter Port den für Ihren Dienst verwendeten Containerport an.
Geben Sie unter Anfängliche Verzögerung die Anzahl der Sekunden an, 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.
Geben Sie für Period den Zeitraum in Sekunden an, 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.Geben Sie als Fehlerschwellenwert an, wie oft die Prüfung wiederholt werden soll, bevor der Container heruntergefahren wird. Der Standardwert ist 3.
Geben Sie unter Zeitlimit die Anzahl der Sekunden an, die gewartet werden soll, 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.
Klicken Sie auf Hinzufügen, um den neuen Schwellenwert hinzuzufügen.
gcloud
HTTP-Aktivität
Führen Sie dazu diesen Befehl aus:
gcloud run deploy SERVICE \
--image=IMAGE_URL \
--liveness-probe httpGet.path=PATH,httpGet.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
Ersetzen Sie:
- SERVICE durch den Namen Ihres Cloud Run-Dienstes.
- 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
. - PATH durch den relativen Pfad zum HTTP-Endpunkt, z. B.
/ready
. - (OPTIONAL) CONTAINER_PORT sollte auf den Containerport festgelegt sein, der für Ihren Dienst verwendet wird.
- (OPTIONAL) DELAY mit der Anzahl der Sekunden, die gewartet werden soll, bis der Container gestartet wurde, 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.
- (OPTIONAL) THRESHOLD mit der Anzahl der Wiederholungen der Prüfung, bevor der Container heruntergefahren wird. Der Standardwert ist 3.
- (OPTIONAL) TIMEOUT durch 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 3.600 an. Der Standardwert ist 1. - (OPTIONAL) PERIOD durch 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 3.600 Sekunden an. Der Standardwert beträgt 10 Sekunden.
gRPC-Aktivität
Bevor Sie gRPC-Prüfungen verwenden, müssen Sie dafür sorgen, dass Ihr Container-Image das gRPC-Systemdiagnoseprotokoll implementiert. Weitere Informationen finden Sie unter GRPC Health Checking Protocol.
Führen Sie dazu diesen Befehl aus:
gcloud run deploy SERVICE \
--image=IMAGE_URL \
--liveness-probe grpc.port=CONTAINER_PORT,grpc.service=GRPC_SERVICE,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
Ersetzen Sie:
- SERVICE durch den Namen Ihres Cloud Run-Dienstes.
- 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
. - (OPTIONAL) GRPC_SERVICE. Wenn festgelegt, wird dieser Wert im Feld „service“ des
grpc.health.v1.HealthCheckRequest
verwendet, wenn diegrpc.health.v1.Health.Check
-RPC aufgerufen wird. - (OPTIONAL) CONTAINER_PORT sollte auf den Containerport festgelegt sein, der für Ihren Dienst verwendet wird.
- (OPTIONAL) DELAY mit der Anzahl der Sekunden, die gewartet werden soll, bis der Container gestartet wurde, 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.
- (OPTIONAL) THRESHOLD mit der Anzahl der Wiederholungen der Prüfung, bevor der Container heruntergefahren wird. Der Standardwert ist 3.
- (OPTIONAL) TIMEOUT durch 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 3.600 an. Der Standardwert ist 1. - (OPTIONAL) PERIOD durch 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 3.600 Sekunden an. Der Standardwert beträgt 10 Sekunden.
YAML
HTTP-Aktivität
-
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
Achten Sie darauf, dass Ihr Dienst HTTP/1 (den Cloud Run-Standard) verwendet, nicht HTTP/2.
Konfigurieren Sie das Attribut
livenessProbe
so:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: 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:
- SERVICE durch den Namen Ihres Cloud Run-Dienstes.
- 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
. - PATH durch den relativen Pfad zum HTTP-Endpunkt, z. B.
/ready
. - (OPTIONAL) CONTAINER_PORT sollte auf den Containerport festgelegt sein, der für Ihren Dienst verwendet wird.
- (OPTIONAL) DELAY mit der Anzahl der Sekunden, die gewartet werden soll, bis der Container gestartet wurde, 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.
- (OPTIONAL) THRESHOLD mit der Anzahl der Wiederholungen der Prüfung, bevor der Container heruntergefahren wird. Der Standardwert ist 3.
- (OPTIONAL)
httpHeaders
kann verwendet werden, um mehrere oder wiederkehrende benutzerdefinierte Header mithilfe der Felder HEADER_NAME und HEADER_VALUE anzugeben. - (OPTIONAL) TIMEOUT durch 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 3.600 an. Der Standardwert ist 1. - (OPTIONAL) PERIOD durch 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 3.600 Sekunden an. Der Standardwert beträgt 10 Sekunden.
-
Erstellen oder aktualisieren Sie den Dienst mit dem folgenden Befehl:
gcloud run services replace service.yaml
gRPC-Aktivität
Bevor Sie gRPC-Prüfungen verwenden, müssen Sie dafür sorgen, dass Ihr Container-Image das gRPC-Systemdiagnoseprotokoll implementiert. Weitere Informationen finden Sie unter GRPC Health Checking Protocol.
-
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
Konfigurieren Sie das Attribut
livenessProbe
so:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: spec: containers: - image: IMAGE_URL livenessProbe: grpc: port: CONTAINER_PORT service: GRPC_SERVICE initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
Ersetzen
- SERVICE durch den Namen Ihres Cloud Run-Dienstes.
- 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
. - (OPTIONAL) GRPC_SERVICE. Wenn festgelegt, wird dieser Wert im Feld „service“ des
grpc.health.v1.HealthCheckRequest
verwendet, wenn diegrpc.health.v1.Health.Check
-RPC aufgerufen wird. - (OPTIONAL) CONTAINER_PORT sollte auf den Containerport festgelegt sein, der für Ihren Dienst verwendet wird.
- (OPTIONAL) DELAY mit der Anzahl der Sekunden, die gewartet werden soll, bis der Container gestartet wurde, 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.
- (OPTIONAL) THRESHOLD mit der Anzahl der Wiederholungen der Prüfung, bevor der Container heruntergefahren wird. Der Standardwert ist 3.
- (OPTIONAL) TIMEOUT durch 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 3.600 an. Der Standardwert ist 1. - (OPTIONAL) PERIOD durch 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 3.600 Sekunden an. Der Standardwert beträgt 10 Sekunden.
-
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.
HTTP-Aktivität
Achten Sie darauf, dass Ihr Dienst HTTP/1 (den Cloud Run-Standard) verwendet, nicht HTTP/2.
Konfigurieren Sie Ihren Cloud Run-Dienst mit dem Attribut liveness_probe
so:
gRPC-Aktivität
Bevor Sie gRPC-Prüfungen verwenden, müssen Sie dafür sorgen, dass Ihr Container-Image das gRPC-Systemdiagnoseprotokoll implementiert. Weitere Informationen finden Sie unter GRPC Health Checking Protocol.
Konfigurieren Sie Ihren Cloud Run-Dienst mit dem Attribut liveness_probe
so:
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 für den Dienst (z. B. /health ). Jede Antwort mit 2XX oder 3XX ist ein Erfolg. Alles andere zeigt einen Fehler an.Wenn eine Aktivitätsprüfung nicht innerhalb der angegebenen Zeit ( failureThreshold * periodSeconds ) 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 Autoscaling von Cloud Run eine neue Containerinstanz. |
gRPC-Aktivität | Implementieren Sie das gRPC-Systemdiagnoseprotokoll in Ihrem Cloud Run-Dienst | Wenn Sie eine gRPC-Startprüfung konfigurieren, wird diese erst gestartet, nachdem die Startprüfung erfolgreich war. Nachdem die Aktivitätsprüfung konfiguriert wurde und jede Startprüfung erfolgreich ist, stellt Cloud Run eine Systemdiagnoseanfrage an Der Service. Wenn eine Aktivitätsprüfung innerhalb der angegebenen Zeit ( failureThreshold * periodSeconds ) nicht erfolgreich ist, wird der Container mit einem SIGKILL -Signal heruntergefahren. Nachdem der Container heruntergefahren wurde, startet das Autoscaling von Cloud Run eine neue Containerinstanz. |
HTTP-Systemdiagnose-Endpunkte erstellen
Wenn Sie den Cloud Run-Dienst für eine HTTP-Startprüfung konfigurieren, müssen Sie dem Dienstcode einen Endpunkt hinzufügen, der auf die Prüfung reagiert. Der Endpunkt kann einen beliebigen Namen haben, z. B. /startup
oder /ready
. Er muss jedoch mit den Werten übereinstimmen, die Sie in der Prüfungskonfiguration für path
angeben, wie unten dargestellt:
startupProbe: httpGet: path: /ready
Wenn Sie Ihren Cloud Run-Dienst für eine HTTP-Aktivitätsprüfung mit einem Pfad wie /health
konfigurieren, definieren Sie ihn in der Prüfungskonfiguration so:
livenessProbe: httpGet: path: /health
HTTP-Systemdiagnose-Endpunkte sind extern zugänglich und folgen den gleichen Prinzipien wie alle anderen extern zugänglichen HTTP-Dienstendpunkte.
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.