Puoi configurare probe di avvio HTTP, TCP e gRPC, oltre a HTTP e i probe di attività gRPC per i servizi Cloud Run nuovi ed esistenti. La configurazione varia in base al tipo di probe.
Tieni presente che un probe di avvio TCP viene configurato automaticamente per un nuovo dal servizio Cloud Run. Vedi Il probe di avvio TCP predefinito per maggiori dettagli.
Casi d'uso
Puoi configurare due tipi di probe del controllo di integrità:
I probe di attività determinano se riavviare un container.
- Il riavvio di un container in questo caso può aumentare la disponibilità del servizio in caso di bug.
- I probe di attività hanno lo scopo di riavviare le singole istanze che non possono recuperato in altro modo. Devono essere usati principalmente per contenuti non recuperabili degli errori delle istanze, ad esempio per rilevare un deadlock in cui un servizio è in esecuzione, ma non è in grado di avanzare.
I probe di avvio determinano se il container è stato avviato ed è pronto per accettano il traffico.
- Quando configuri un probe di avvio, i controlli di attività vengono disabilitati fino a quando il probe di avvio determina che il container è stato avviato, per evitare interferenze all'avvio del servizio.
- I probe di avvio sono particolarmente utili se utilizzi i controlli di attività su operazioni avviano i container, perché ne impedisce l'arresto prematuramente prima che i container siano attivi e in esecuzione.
Tieni presente che, quando si verificano ripetuti errori del probe di attività o di avvio, Cloud Run limita i riavvii delle istanze per evitare loop di arresti anomali incontrollati.
Il probe di avvio TCP predefinito
Un probe di avvio TCP viene configurato automaticamente per un nuovo Cloud Run con valori predefiniti. Il probe predefinito è equivalente al seguente:
startupProbe: tcpSocket: port: CONTAINER_PORT timeoutSeconds: 240 periodSeconds: 240 failureThreshold: 1
Sostituisci CONTAINER_PORT con la porta del container per il tuo servizio.
Puoi modificare questi valori predefiniti seguendo le istruzioni in configurazione del probe in questa pagina.
Fatturazione e allocazione della CPU
- CPU allocata per ogni probe.
- A tutti i probe viene fatturato il consumo di CPU e memoria, ma non è previsto alcun addebito basato sulle richieste.
Requisiti e comportamento dei probe
Tipo di sonda | Requisiti | Comportamento |
---|---|---|
avvio TCP | Nessuno | Per impostazione predefinita, Cloud Run effettua una connessione TCP per aprire il socket TCP sulla porta specificata. Se Cloud Run non è in grado di stabilire una connessione, indica un errore. Se un probe di avvio non ha esito positivo entro il periodo di tempo specificato ( failureThreshold * periodSeconds ), che non può superare i 240 secondi, il container viene arrestato. Vedi anche Valori predefiniti TCP. |
Avvio HTTP | Crea un endpoint del controllo di integrità HTTP Utilizza HTTP/1 |
Dopo la configurazione del probe, Cloud Run effettua una richiesta HTTP GET all'endpoint del controllo di integrità del servizio (ad esempio, /ready ). Le risposte tra 200 e 400 sono riuscite, tutto il resto indica un errore.Se un probe di avvio non riesce entro il tempo specificato ( failureThreshold * periodSeconds ), che non può superare i 240 secondi, il container viene arrestato.Se il probe di avvio HTTP ha esito positivo entro il periodo di tempo specificato e hai configurato un probe di attività HTTP, viene avviato il probe di attività HTTP. |
Attività HTTP | Crea un endpoint del controllo di integrità HTTP Utilizza HTTP/1 |
Il probe di attività viene avviato solo dopo che il probe di avvio è riuscito. Una volta completata la configurazione del probe e l'esito positivo di tutti i probe di avvio, Cloud Run effettua una richiesta HTTP GET all'endpoint del controllo di integrità del servizio (ad esempio, /health ). Qualsiasi risposta tra 200 e 400 è positiva, tutto il resto indica un errore.Se un probe di attività non ha esito positivo entro il periodo di tempo specificato ( failureThreshold * periodSeconds ), il container viene arrestato utilizzando un indicatore SIGKILL . Le eventuali richieste rimanenti che erano ancora gestite dal container vengono terminate con il codice di stato HTTP 503 . Dopo l'arresto del container, la scalabilità automatica di Cloud Run avvia una nuova istanza di container. |
Avvio di gRPC | Implementa il protocollo gRPC Controllo di integrità nel servizio Cloud Run | Se un probe di avvio non riesce entro il tempo specificato (failureThreshold * periodSeconds ), che non può superare i 240 secondi, il container viene arrestato. |
Attività gRPC | Implementa il protocollo gRPC Controllo di integrità nel servizio Cloud Run | Se configuri un probe di avvio gRPC, il probe di attività viene avviato solo al termine del probe di attività. Una volta configurato il probe di attività e dopo l'esito positivo dell'eventuale probe di attività, Cloud Run invia una richiesta di controllo di integrità al servizio. Se un probe di attività non riesce entro il tempo specificato ( failureThreshold * periodSeconds ), il container viene arrestato utilizzando un segnale SIGKILL . Dopo l'arresto del container, la scalabilità automatica di Cloud Run avvia una nuova istanza di container. |
Configura probe
Qualsiasi modifica alla configurazione porta la creazione di una nuova revisione. Anche le revisioni successive ricevono automaticamente di questa configurazione, a meno che non apporti aggiornamenti espliciti per modificarla.
Puoi configurare probe HTTP, TCP e gRPC utilizzando la console Google Cloud, YAML Terraform:
Console
Importante: se stai configurando il servizio Cloud Run per HTTP devi anche aggiungere un endpoint per il controllo di integrità HTTP nel servizio per rispondere al probe. Se configuri un probe gRPC, devi di implementare anche Protocollo gRPC Health Control nel tuo servizio Cloud Run.
Nella console Google Cloud, vai alla pagina Cloud Run.
Per un nuovo servizio, espandi Container, volumi, networking, sicurezza per visualizzare il controllo di integrità. le opzioni di CPU e memoria disponibili. Per un servizio esistente, fai clic su quello che vuoi configurare, quindi fai clic su Modifica e implementa per visualizzare le opzioni del controllo di integrità.
Nella sezione Container, vai a Controlli di integrità e fai clic su Aggiungi controllo di integrità per aprire la configurazione Aggiungi controllo di integrità. dal riquadro.
Nel menu Seleziona il tipo di controllo di integrità, seleziona il tipo controllo di integrità da aggiungere, ad esempio startup o attività.
Nel menu Seleziona il tipo di probe, seleziona il tipo di probe da utilizzare, ad esempio HTTP o gRPC. Viene visualizzata la configurazione del probe in un modulo di testo.
Tieni presente che la configurazione del probe varia in base al tipo. Configura le impostazioni del probe:
- Se utilizzi probe HTTP:
- Assicurati che il servizio utilizzi HTTP/1 (l'impostazione predefinita di Cloud Run), non HTTP/2.
- Utilizza il campo Percorso per specificare il percorso relativo dell'endpoint, ad esempio
/
. - Seleziona la casella di controllo Intestazioni HTTP per specificare intestazioni personalizzate facoltative. Quindi specifica il nome dell'intestazione nel campo Nome e il valore dell'intestazione nella nel campo Valore. Fai clic su Aggiungi intestazione HTTP per specificare altre intestazioni.
- Per Porta, specifica la porta del container utilizzati per il tuo servizio.
- Per Ritardo iniziale, specifica il numero di secondi di attesa dopo che il container viene avviato prima di eseguire il primo probe. Specifica un valore da Da 0 a 240 secondi. Il valore predefinito è 0 secondi.
- Per Periodo, specifica il periodo (in secondi) in cui eseguire il probe. Ad esempio,
2
deve eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 e 240 secondi. Il valore predefinito è 10 secondi. - Per Soglia di errore, specifica il numero di volte per cui riprovare il probe prima e l'arresto del container. Il valore predefinito è 3.
- Per Timeout, specifica il numero di secondi di attesa prima del tempo del probe
fuori. Questo valore non può superare il valore specificato per
periodSeconds
. Specifica un valore compreso tra 1 e 240. Il valore predefinito è 1.
- Se utilizzi probe HTTP:
Fai clic su Aggiungi per aggiungere la nuova soglia.
YAML
Importante: se stai configurando il servizio Cloud Run per HTTP devi anche aggiungere un endpoint al tuo servizio per rispondere al probe. Se configuri un probe gRPC, devi di implementare anche Protocollo gRPC Health Control nel tuo servizio Cloud Run.
Startup TPC
-
Se stai creando un nuovo servizio, salta questo passaggio. Se stai aggiornando un servizio esistente, scarica
la sua configurazione YAML:
gcloud run services describe SERVICE --format export > service.yaml
Configura l'attributo
startupProbe
come mostrato: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
Sostituisci
- SERVICE con il nome del tuo servizio Cloud Run.
- IMAGE_URL con un riferimento all'immagine container, per
ad esempio
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già creati. L'URL ha la formaLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- (FACOLTATIVO) CONTAINER_PORT deve essere impostato sulla porta del container utilizzati per il tuo servizio.
- DELAY con numero di secondi di attesa dopo il container viene avviato prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 240 secondi. Il valore predefinito è 0 secondi.
- (FACOLTATIVO) TIMEOUT con il numero di secondi di attesa fino al probe
si verifica un timeout. Questo valore non può superare il valore specificato per
periodSeconds
. Specifica un valore compreso tra 1 e 240. Il valore predefinito è 1. - THRESHOLD con il numero di volte per riprovare il probe prima e l'arresto del container. Il valore predefinito è 3.
- PERIOD con il periodo (in secondi) in cui eseguire il probe.
Ad esempio,
2
deve eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 e 240 secondi. Il valore predefinito è 10 secondi.
-
Crea o aggiorna il servizio utilizzando il comando seguente:
gcloud run services replace service.yaml
Avvio HTTP
-
Se stai creando un nuovo servizio, salta questo passaggio. Se stai aggiornando un servizio esistente, scarica
la sua configurazione YAML:
gcloud run services describe SERVICE --format export > service.yaml
Assicurati che il servizio utilizzi HTTP/1 (l'impostazione predefinita di Cloud Run), non HTTP/2.
Configura l'attributo
startupProbe
come mostrato: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
sostituisci
- SERVICE con il nome del tuo servizio Cloud Run.
- IMAGE_URL con un riferimento all'immagine container, per
ad esempio
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già creati. L'URL ha la formaLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- PATH con il percorso relativo dell'endpoint HTTP, ad esempio
/ready
. - (FACOLTATIVO) CONTAINER_PORT deve essere impostato sulla porta del container utilizzati per il tuo servizio.
- (FACOLTATIVO)
httpHeaders
può essere utilizzato per fornire più o più intestazioni personalizzate utilizzando HEADER_NAME e HEADER_VALUE come mostrato. - (FACOLTATIVO) DELAY con numero di secondi di attesa dopo il container viene avviato prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 240 secondi. Il valore predefinito è 0 secondi.
- (FACOLTATIVO) TIMEOUT con il numero di secondi di attesa fino al probe
si verifica un timeout. Questo valore non può superare il valore specificato per
periodSeconds
. Specifica un valore compreso tra 1 e 240. Il valore predefinito è 1. - (FACOLTATIVO) THRESHOLD con il numero di volte per riprovare il probe prima del giorno e l'arresto del container. Il valore predefinito è 3.
- (FACOLTATIVO) PERIOD con il periodo (in secondi) in cui eseguire il probe.
Ad esempio,
2
deve eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 e 240 secondi. Il valore predefinito è 10 secondi.
-
Crea o aggiorna il servizio utilizzando il comando seguente:
gcloud run services replace service.yaml
Attività HTTP
-
Se stai creando un nuovo servizio, salta questo passaggio. Se stai aggiornando un servizio esistente, scarica
la sua configurazione YAML:
gcloud run services describe SERVICE --format export > service.yaml
Assicurati che il servizio utilizzi HTTP/1 (l'impostazione predefinita di Cloud Run), non HTTP/2.
Configura l'attributo
livenessProbe
come mostrato: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
Sostituisci
- SERVICE con il nome del tuo servizio Cloud Run.
- IMAGE_URL con un riferimento all'immagine container, per
ad esempio
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già creati. L'URL ha la formaLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- PATH con il percorso relativo dell'endpoint HTTP, ad esempio
/ready
. - (FACOLTATIVO) CONTAINER_PORT deve essere impostato sulla porta del container utilizzati per il tuo servizio.
- (FACOLTATIVO)
httpHeaders
può essere utilizzato per fornire più o più intestazioni personalizzate utilizzando HEADER_NAME e HEADER_VALUE come mostrato. - (FACOLTATIVO) DELAY con numero di secondi di attesa dopo il container viene avviato prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 240 secondi. Il valore predefinito è 0 secondi.
- (FACOLTATIVO) TIMEOUT con il numero di secondi di attesa fino al probe
si verifica un timeout. Questo valore non può superare il valore specificato per
periodSeconds
. Specifica un valore compreso tra 1 e 3600. Il valore predefinito è 1. - (FACOLTATIVO) THRESHOLD con il numero di volte per riprovare il probe prima del giorno e l'arresto del container. Il valore predefinito è 3.
- (FACOLTATIVO) PERIOD con il periodo (in secondi) in cui eseguire il probe.
Ad esempio,
2
deve eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 e 3600 secondi. Il valore predefinito è 10 secondi.
-
Crea o aggiorna il servizio utilizzando il comando seguente:
gcloud run services replace service.yaml
Avvio di gRPC
-
Se stai creando un nuovo servizio, salta questo passaggio. Se stai aggiornando un servizio esistente, scarica
la sua configurazione YAML:
gcloud run services describe SERVICE --format export > service.yaml
Configura l'attributo
startupProbe
come mostrato: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
Sostituisci
- SERVICE con il nome del tuo servizio Cloud Run.
- IMAGE_URL con un riferimento all'immagine container, per
ad esempio
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già creati. L'URL ha la formaLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- GRPC_SERVICE con il nome del servizio gRPC a cui inviare il controllo di integrità.
- (FACOLTATIVO) CONTAINER_PORT deve essere impostato sulla porta del container utilizzati per il tuo servizio.
- (FACOLTATIVO) DELAY con numero di secondi di attesa dopo il container viene avviato prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 240 secondi. Il valore predefinito è 0 secondi.
- (FACOLTATIVO) TIMEOUT con il numero di secondi di attesa fino al timeout del probe. Questo valore non può superare il valore specificato per periodSeconds. Specifica un valore compreso tra 1 e 240. Il valore predefinito è 1.
- (FACOLTATIVO) THRESHOLD con il numero di volte per riprovare il probe prima del giorno e l'arresto del container. Il valore predefinito è 3.
- (FACOLTATIVO) PERIOD con il periodo (in secondi) in cui eseguire il probe.
Ad esempio,
2
deve eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 e 240 secondi. Il valore predefinito è 10 secondi.
-
Crea o aggiorna il servizio utilizzando il comando seguente:
gcloud run services replace service.yaml
Attività gRPC
-
Se stai creando un nuovo servizio, salta questo passaggio. Se stai aggiornando un servizio esistente, scarica
la sua configurazione YAML:
gcloud run services describe SERVICE --format export > service.yaml
Configura l'attributo
livenessProbe
come mostrato: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
Sostituisci
- SERVICE con il nome del tuo servizio Cloud Run.
- IMAGE_URL con un riferimento all'immagine container, per
ad esempio
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già creati. L'URL ha la formaLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- (FACOLTATIVO) CONTAINER_PORT deve essere impostato sulla porta del container utilizzati per il tuo servizio.
- GRPC_SERVICE con il nome del servizio gRPC a cui inviare il controllo di integrità.
- (FACOLTATIVO) DELAY con numero di secondi di attesa dopo il container viene avviato prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 240 secondi. Il valore predefinito è 0 secondi.
- (FACOLTATIVO) TIMEOUT con il numero di secondi di attesa fino al probe
si verifica un timeout. Questo valore non può superare il valore specificato per
periodSeconds
. Specifica un valore compreso tra 1 e 3600. Il valore predefinito è 1. - (FACOLTATIVO) THRESHOLD con il numero di volte per riprovare il probe prima del giorno e l'arresto del container. Il valore predefinito è 3.
- (FACOLTATIVO) PERIOD con il periodo (in secondi) in cui eseguire il probe. Ad esempio,
2
deve eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 e 3600 secondi. Il valore predefinito è 10 secondi.
-
Crea o aggiorna il servizio utilizzando il comando seguente:
gcloud run services replace service.yaml
Terraform
Importante: se stai configurando il servizio Cloud Run per HTTP devi anche aggiungere un endpoint al tuo servizio per rispondere al probe. Se configuri un probe gRPC, devi di implementare anche Protocollo gRPC Health Control nel tuo servizio Cloud Run.
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta: Comandi Terraform di base.
avvio TCP
Configura il tuo servizio Cloud Run con l'attributo startup_probe
come mostrato di seguito:
Avvio HTTP
Assicurati che il servizio utilizzi HTTP/1 (l'impostazione predefinita di Cloud Run), non HTTP/2.
Configura il tuo servizio Cloud Run con l'attributo startup_probe
come mostrato di seguito:
Attività HTTP
Assicurati che il servizio utilizzi HTTP/1 (l'impostazione predefinita di Cloud Run), non HTTP/2.
Configura il tuo servizio Cloud Run con l'attributo liveness_probe
come mostrato di seguito:
Avvio di gRPC
Configura il tuo servizio Cloud Run con l'attributo startup_probe
come mostrato di seguito:
Attività gRPC
Configura il tuo servizio Cloud Run con l'attributo liveness_probe
come mostrato di seguito:
Crea endpoint del controllo di integrità HTTP
Se configuri il servizio Cloud Run per un probe di avvio HTTP
probe di attività, devi aggiungere un endpoint al codice di servizio per rispondere
la sonda. L'endpoint può avere il nome che preferisci, ad esempio
/startup
o /ready
, ma devono corrispondere ai valori specificati per
path
nella configurazione del probe. Ad esempio, se specifichi /ready
per un
Probe di avvio HTTP, devi specificare path
nella configurazione del probe come mostrato:
startupProbe: httpGet: path: /ready
Gli endpoint per il controllo di integrità HTTP sono accessibili dall'esterno e seguono lo stesso come qualsiasi altro endpoint del servizio HTTP esposto esternamente.