I controlli di integrità di Cloud Run assicurano che le istanze container siano in esecuzione correttamente e siano in grado di gestire il traffico. Con i controlli di integrità di Cloud Run, puoi personalizzare il momento in cui il container è pronto a ricevere richieste e quando deve essere considerato non integro per richiedere un riavvio.
Casi d'uso
Puoi configurare due tipi di probe di controllo di integrità:
I probe di avvio determinano se il container è stato avviato ed è pronto ad accettare il traffico.
- Quando configuri un probe di avvio, i controlli di attività vengono disattivati finché il probe di avvio non determina che il container è stato avviato, per evitare interferenze con l'avvio del servizio.
- I probe di avvio sono particolarmente utili se utilizzi i controlli di attività su container che si avviano lentamente, perché impediscono che vengano arrestati prematuramente prima che siano operativi.
I probe di attività determinano se riavviare un container.
- In questo caso, il riavvio di un container 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 essere recuperate in altro modo. Devono essere utilizzati principalmente per errori irreversibili dell'istanza, ad esempio per rilevare un deadlock in cui un servizio è in esecuzione, ma non è in grado di avanzare. Puoi richiedere un probe di attività per ogni contenitore utilizzando policy dell'organizzazione personalizzate.
Quando un servizio riscontra ripetuti errori di avvio o del probe di attività, Cloud Run limita i riavvii delle istanze per evitare loop di arresto anomalo incontrollati.
Configura probe
Qualsiasi modifica alla configurazione comporta la creazione di una nuova revisione. Anche le revisioni successive riceveranno automaticamente questa impostazione di configurazione, a meno che tu non apporti aggiornamenti espliciti per modificarla.
Configurare i probe di avvio
Puoi configurare i probe HTTP, TCP e gRPC utilizzando la console Google Cloud , YAML o Terraform:
Console
Nella console Google Cloud , vai alla pagina Cloud Run:
Per un nuovo servizio, espandi Container, volumi, networking, sicurezza per visualizzare le opzioni di controllo di integrità'integrità. Per un servizio esistente, fai clic sul servizio che vuoi configurare, quindi fai clic su Modifica e implementa per visualizzare le opzionicontrollo di integritàl'integrità.
Nella sezione Container, vai a Controlli di integrità e fai clic su Aggiungi controllo di integrità per aprire il pannello di configurazione Aggiungi controllo di integrità.
Nel menu Seleziona il tipo di controllo di integrità, seleziona il tipo di controllo di integrità che vuoi aggiungere.
Nel menu Seleziona tipo di probe, seleziona il tipo di probe che vuoi utilizzare, ad esempio HTTP o gRPC. Viene visualizzato il modulo di configurazione del probe.
Tieni presente che la configurazione del probe varia in base al tipo di probe. Configura le impostazioni del probe:
Se utilizzi probe HTTP:
Assicurati che il tuo servizio utilizzi HTTP/1 (l'impostazione predefinita di Cloud Run), non HTTP/2.
Utilizza il campo Percorso per specificare il percorso relativo all'endpoint, ad esempio
/
.Seleziona la casella di controllo Intestazioni HTTP per specificare intestazioni personalizzate facoltative. Specifica il nome dell'intestazione nel campo Nome e il valore dell'intestazione nel campo Valore. Fai clic su Aggiungi intestazione HTTP per specificare altre intestazioni.
Se utilizzi probe gRPC, assicurati che l'immagine container implementi il protocollo di controllo di integrità gRPC. Per saperne di più, consulta GRPC Health Checking Protocol.
In Porta, specifica la porta del container utilizzata per il servizio.
Per Ritardo iniziale, specifica il numero di secondi da attendere dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 secondi e 240 secondi. Il valore predefinito è 0 secondi.
Per Periodo, specifica il periodo (in secondi) in cui eseguire il probe. Ad esempio,
2
per 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 tentativi del probe prima di arrestare il container. Il valore predefinito è 3.
Per Timeout, specifica il numero di secondi di attesa prima del 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.
Fai clic su Aggiungi per aggiungere la nuova soglia.
gcloud
Avvio TCP
Esegui questo comando:
gcloud run deploy SERVICE \
--image=IMAGE_URL \
--startup-probe tcpSocket.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
Sostituisci:
- SERVICE con il nome del tuo servizio Cloud Run.
- IMAGE_URL con un riferimento all'immagine container, ad esempio,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già creato. L'URL ha la formaLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- (FACOLTATIVO) CONTAINER_PORT deve essere impostato sulla porta del container utilizzata per il servizio.
- DELAY con il numero di secondi da attendere dopo l'avvio del container 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 da attendere prima del time out del probe. 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 tentativi del probe prima di arrestare il container. Il valore predefinito è 3.
- PERIOD con il periodo (in secondi) in cui eseguire il probe.
Ad esempio,
2
per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 secondo e 240 secondi. Il valore predefinito è 10 secondi.
Avvio HTTP
Esegui questo comando:
gcloud run deploy SERVICE \
--image=IMAGE_URL \
--startup-probe httpGet.path=PATH,httpGet.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
Sostituisci:
- SERVICE con il nome del tuo servizio Cloud Run.
- IMAGE_URL con un riferimento all'immagine container, ad esempio,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già creato. L'URL ha la formaLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- PATH con il percorso relativo all'endpoint HTTP, ad esempio
/ready
. - (FACOLTATIVO) CONTAINER_PORT deve essere impostato sulla porta del container utilizzata per il servizio.
- (FACOLTATIVO) DELAY con il numero di secondi da attendere dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 240 secondi. Il valore predefinito è 0 secondi.
- (FACOLTATIVO) THRESHOLD con il numero di tentativi del probe prima di arrestare il container. Il valore predefinito è 3.
- (FACOLTATIVO) TIMEOUT con il numero di secondi da attendere prima del 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) PERIOD con il periodo (in secondi) in cui eseguire il probe. Ad esempio,
2
per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 secondo e 240 secondi. Il valore predefinito è 10 secondi.
Avvio di gRPC
Prima di utilizzare i probe gRPC, assicurati che l'immagine container implementi il protocollo di controllo di integrità gRPC. Per saperne di più, consulta GRPC Health Checking Protocol.
Esegui questo comando:
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
Sostituisci:
- SERVICE con il nome del tuo servizio Cloud Run.
- IMAGE_URL con un riferimento all'immagine container, ad esempio,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già creato. L'URL ha la formaLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- (FACOLTATIVO) GRPC_SERVICE. Se impostato, questo valore viene utilizzato nel
campo service di
grpc.health.v1.HealthCheckRequest
quando viene chiamatogrpc.health.v1.Health.Check
rpc. - (FACOLTATIVO) CONTAINER_PORT deve essere impostato sulla porta del container utilizzata per il servizio.
- (FACOLTATIVO) DELAY con il numero di secondi da attendere dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 240 secondi. Il valore predefinito è 0 secondi.
- (FACOLTATIVO) THRESHOLD con il numero di tentativi del probe prima di arrestare il container. Il valore predefinito è 3.
- (FACOLTATIVO) TIMEOUT con il numero di secondi da attendere prima del 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) PERIOD con il periodo (in secondi) in cui eseguire il probe. Ad esempio,
2
per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 secondo e 240 secondi. Il valore predefinito è 10 secondi.
YAML
Avvio TCP
-
Se stai creando un nuovo servizio, salta questo passaggio. Se stai aggiornando un servizio esistente, scarica la relativa 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, ad esempio,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già creato. L'URL ha la formaLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- (FACOLTATIVO) CONTAINER_PORT deve essere impostato sulla porta del container utilizzata per il servizio.
- DELAY con il numero di secondi da attendere dopo l'avvio del container 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 da attendere prima del time out del probe. 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 tentativi del probe prima di arrestare il container. Il valore predefinito è 3.
- PERIOD con il periodo (in secondi) in cui eseguire il probe.
Ad esempio,
2
per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 secondo e 240 secondi. Il valore predefinito è 10 secondi.
-
Crea o aggiorna il servizio utilizzando il seguente comando:
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 relativa configurazione YAML:
gcloud run services describe SERVICE --format export > service.yaml
Assicurati che il tuo servizio utilizzi HTTP/1 (l'impostazione predefinita di Cloud Run) e 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, ad esempio,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già creato. L'URL ha la formaLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- PATH con il percorso relativo all'endpoint HTTP, ad esempio
/ready
. - (FACOLTATIVO) CONTAINER_PORT deve essere impostato sulla porta del container utilizzata per il servizio.
- (FACOLTATIVO) DELAY con il numero di secondi da attendere dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 240 secondi. Il valore predefinito è 0 secondi.
- (FACOLTATIVO) THRESHOLD con il numero di tentativi del probe prima di arrestare il container. Il valore predefinito è 3.
- (FACOLTATIVO)
httpHeaders
può essere utilizzato per fornire intestazioni personalizzate multiple o ripetute utilizzando i campi HEADER_NAME e HEADER_VALUE come mostrato. - (FACOLTATIVO) TIMEOUT con il numero di secondi da attendere prima del 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) PERIOD con il periodo (in secondi) in cui eseguire il probe. Ad esempio,
2
per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 secondo e 240 secondi. Il valore predefinito è 10 secondi.
-
Crea o aggiorna il servizio utilizzando il seguente comando:
gcloud run services replace service.yaml
Avvio di gRPC
Prima di utilizzare i probe gRPC, assicurati che l'immagine container implementi il protocollo di controllo di integrità gRPC. Per saperne di più, consulta GRPC Health Checking Protocol.
-
Se stai creando un nuovo servizio, salta questo passaggio. Se stai aggiornando un servizio esistente, scarica la relativa 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, ad esempio,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già creato. L'URL ha la formaLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- (FACOLTATIVO) GRPC_SERVICE. Se impostato, questo valore viene utilizzato nel
campo service di
grpc.health.v1.HealthCheckRequest
quando viene chiamatogrpc.health.v1.Health.Check
rpc. - (FACOLTATIVO) CONTAINER_PORT deve essere impostato sulla porta del container utilizzata per il servizio.
- (FACOLTATIVO) DELAY con il numero di secondi da attendere dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 240 secondi. Il valore predefinito è 0 secondi.
- (FACOLTATIVO) THRESHOLD con il numero di tentativi del probe prima di arrestare il container. Il valore predefinito è 3.
- (FACOLTATIVO) TIMEOUT con il numero di secondi da attendere prima del 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) PERIOD con il periodo (in secondi) in cui eseguire il probe. Ad esempio,
2
per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 secondo e 240 secondi. Il valore predefinito è 10 secondi.
-
Crea o aggiorna il servizio utilizzando il seguente comando:
gcloud run services replace service.yaml
Terraform
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.
Avvio TCP
Configura il servizio Cloud Run con l'attributo startup_probe
come mostrato:
Avvio HTTP
Assicurati che il tuo servizio utilizzi HTTP/1 (l'impostazione predefinita di Cloud Run) e non HTTP/2.
Configura il servizio Cloud Run con l'attributo startup_probe
come mostrato:
Avvio di gRPC
Prima di utilizzare i probe gRPC, assicurati che l'immagine container implementi il protocollo di controllo di integrità gRPC. Per saperne di più, consulta GRPC Health Checking Protocol.
Configura il servizio Cloud Run con l'attributo startup_probe
come mostrato:
Probe di avvio TCP predefinito
Se non configuri esplicitamente un probe di avvio TCP per un nuovo servizio Cloud Run, Cloud Run configura automaticamente un probe di avvio TCP con i seguenti valori predefiniti:
startupProbe:
timeoutSeconds: 240
periodSeconds: 240
failureThreshold: 1
Puoi modificare questi valori predefiniti seguendo le istruzioni riportate nella sezione Configurazione del probe di questa pagina.
Requisiti e comportamento del probe di avvio
Tipo di sonda | Requisiti | Comportamento |
---|---|---|
Avvio TCP | Nessuno | Per impostazione predefinita, Cloud Run crea una connessione TCP per aprire il socket TCP sulla porta specificata. Se Cloud Run non riesce a stabilire una connessione, indica un errore. Se un probe di avvio non va a buon fine entro il 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 di controllo di integrità HTTP Utilizza HTTP/1 |
Dopo la configurazione del probe, Cloud Run invia una richiesta HTTP GET all'endpoint di controllo di integrità del servizio (ad esempio, /ready ). Qualsiasi risposta 2XX o 3XX indica esito positivo, tutto il resto indica esito negativo.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 riesce entro il tempo specificato e hai configurato un probe di attività HTTP, quest'ultimo viene avviato. |
Avvio di gRPC | Implementa il protocollo di controllo di integrità gRPC nel tuo servizio Cloud Run | Se un probe di avvio non va a buon fine entro il tempo specificato (failureThreshold * periodSeconds ), che non può superare i 240 secondi, il container viene arrestato. |
configura probe di attività
Puoi configurare i probe HTTP e gRPC utilizzando la console Google Cloud , YAML o Terraform:
Console
Prima di utilizzare i probe gRPC, assicurati che l'immagine container implementi il protocollo di controllo di integrità gRPC. Per saperne di più, consulta GRPC Health Checking Protocol.
Nella console Google Cloud , vai alla pagina Cloud Run:
Per un nuovo servizio, espandi Container, volumi, networking, sicurezza per visualizzare le opzioni di controllo di integrità'integrità. Per un servizio esistente, fai clic sul servizio che vuoi configurare, quindi fai clic su Modifica e implementa per visualizzare le opzionicontrollo di integritàl'integrità.
Nella sezione Container, vai a Controlli di integrità e fai clic su Aggiungi controllo di integrità per aprire il pannello di configurazione Aggiungi controllo di integrità.
Nel menu Seleziona il tipo di controllo di integrità, seleziona il tipo di controllo di integrità che vuoi aggiungere.
Nel menu Seleziona tipo di probe, seleziona il tipo di probe che vuoi utilizzare, ad esempio HTTP o gRPC. Viene visualizzato il modulo di configurazione del probe.
Tieni presente che la configurazione del probe varia in base al tipo di probe. Configura le impostazioni del probe:
Se utilizzi probe HTTP:
Assicurati che il tuo servizio utilizzi HTTP/1 (l'impostazione predefinita di Cloud Run), non HTTP/2.
Utilizza il campo Percorso per specificare il percorso relativo all'endpoint, ad esempio
/
.Seleziona la casella di controllo Intestazioni HTTP per specificare intestazioni personalizzate facoltative. Specifica il nome dell'intestazione nel campo Nome e il valore dell'intestazione nel campo Valore. Fai clic su Aggiungi intestazione HTTP per specificare altre intestazioni.
Se utilizzi probe gRPC, assicurati che l'immagine container implementi il protocollo di controllo di integrità gRPC. Per saperne di più, consulta GRPC Health Checking Protocol.
In Porta, specifica la porta del container utilizzata per il servizio.
Per Ritardo iniziale, specifica il numero di secondi da attendere dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 secondi e 240 secondi. Il valore predefinito è 0 secondi.
Per Periodo, specifica il periodo (in secondi) in cui eseguire il probe. Ad esempio,
2
per 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 tentativi del probe prima di arrestare il container. Il valore predefinito è 3.
Per Timeout, specifica il numero di secondi di attesa prima del 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.
Fai clic su Aggiungi per aggiungere la nuova soglia.
gcloud
Liveness HTTP
Esegui questo comando:
gcloud run deploy SERVICE \
--image=IMAGE_URL \
--liveness-probe httpGet.path=PATH,httpGet.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
Sostituisci:
- SERVICE con il nome del tuo servizio Cloud Run.
- IMAGE_URL con un riferimento all'immagine container, ad esempio,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già creato. L'URL ha la formaLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- PATH con il percorso relativo all'endpoint HTTP, ad esempio
/ready
. - (FACOLTATIVO) CONTAINER_PORT deve essere impostato sulla porta del container utilizzata per il servizio.
- (FACOLTATIVO) DELAY con il numero di secondi da attendere dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 240 secondi. Il valore predefinito è 0 secondi.
- (FACOLTATIVO) THRESHOLD con il numero di tentativi del probe prima di arrestare il container. Il valore predefinito è 3.
- (FACOLTATIVO) TIMEOUT con il numero di secondi da
attendere prima del timeout del probe. Questo valore non può superare il valore specificato per
periodSeconds
. Specifica un valore compreso tra 1 e 3600.Il valore predefinito è 1. - (FACOLTATIVO) PERIOD con il periodo (in secondi) in cui eseguire il probe. Ad esempio,
2
per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 secondo e 3600 secondi. Il valore predefinito è 10 secondi.
Attività gRPC
Prima di utilizzare i probe gRPC, assicurati che l'immagine container implementi il protocollo di controllo di integrità gRPC. Per saperne di più, consulta GRPC Health Checking Protocol.
Esegui questo comando:
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
Sostituisci:
- SERVICE con il nome del tuo servizio Cloud Run.
- IMAGE_URL con un riferimento all'immagine container, ad esempio,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già creato. L'URL ha la formaLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- (FACOLTATIVO) GRPC_SERVICE. Se impostato, questo valore viene utilizzato nel
campo service di
grpc.health.v1.HealthCheckRequest
quando viene chiamatogrpc.health.v1.Health.Check
rpc. - (FACOLTATIVO) CONTAINER_PORT deve essere impostato sulla porta del container utilizzata per il servizio.
- (FACOLTATIVO) DELAY con il numero di secondi da attendere dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 240 secondi. Il valore predefinito è 0 secondi.
- (FACOLTATIVO) THRESHOLD con il numero di tentativi del probe prima di arrestare il container. Il valore predefinito è 3.
- (FACOLTATIVO) TIMEOUT con il numero di secondi da
attendere prima del timeout del probe. Questo valore non può superare il valore specificato per
periodSeconds
. Specifica un valore compreso tra 1 e 3600.Il valore predefinito è 1. - (FACOLTATIVO) PERIOD con il periodo (in secondi) in cui eseguire il probe. Ad esempio,
2
per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 secondo e 3600 secondi. Il valore predefinito è 10 secondi.
YAML
Liveness HTTP
-
Se stai creando un nuovo servizio, salta questo passaggio. Se stai aggiornando un servizio esistente, scarica la relativa configurazione YAML:
gcloud run services describe SERVICE --format export > service.yaml
Assicurati che il tuo servizio utilizzi HTTP/1 (l'impostazione predefinita di Cloud Run) e 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, ad esempio,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già creato. L'URL ha la formaLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- PATH con il percorso relativo all'endpoint HTTP, ad esempio
/ready
. - (FACOLTATIVO) CONTAINER_PORT deve essere impostato sulla porta del container utilizzata per il servizio.
- (FACOLTATIVO) DELAY con il numero di secondi da attendere dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 240 secondi. Il valore predefinito è 0 secondi.
- (FACOLTATIVO) THRESHOLD con il numero di tentativi del probe prima di arrestare il container. Il valore predefinito è 3.
- (FACOLTATIVO)
httpHeaders
può essere utilizzato per fornire intestazioni personalizzate multiple o ripetute utilizzando i campi HEADER_NAME e HEADER_VALUE come mostrato. - (FACOLTATIVO) TIMEOUT con il numero di secondi da
attendere prima del timeout del probe. Questo valore non può superare il valore specificato per
periodSeconds
. Specifica un valore compreso tra 1 e 3600.Il valore predefinito è 1. - (FACOLTATIVO) PERIOD con il periodo (in secondi) in cui eseguire il probe. Ad esempio,
2
per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 secondo e 3600 secondi. Il valore predefinito è 10 secondi.
-
Crea o aggiorna il servizio utilizzando il seguente comando:
gcloud run services replace service.yaml
Attività gRPC
Prima di utilizzare i probe gRPC, assicurati che l'immagine container implementi il protocollo di controllo di integrità gRPC. Per saperne di più, consulta GRPC Health Checking Protocol.
-
Se stai creando un nuovo servizio, salta questo passaggio. Se stai aggiornando un servizio esistente, scarica la relativa 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, ad esempio,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già creato. L'URL ha la formaLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- (FACOLTATIVO) GRPC_SERVICE. Se impostato, questo valore viene utilizzato nel
campo service di
grpc.health.v1.HealthCheckRequest
quando viene chiamatogrpc.health.v1.Health.Check
rpc. - (FACOLTATIVO) CONTAINER_PORT deve essere impostato sulla porta del container utilizzata per il servizio.
- (FACOLTATIVO) DELAY con il numero di secondi da attendere dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 240 secondi. Il valore predefinito è 0 secondi.
- (FACOLTATIVO) THRESHOLD con il numero di tentativi del probe prima di arrestare il container. Il valore predefinito è 3.
- (FACOLTATIVO) TIMEOUT con il numero di secondi da
attendere prima del timeout del probe. Questo valore non può superare il valore specificato per
periodSeconds
. Specifica un valore compreso tra 1 e 3600.Il valore predefinito è 1. - (FACOLTATIVO) PERIOD con il periodo (in secondi) in cui eseguire il probe. Ad esempio,
2
per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 secondo e 3600 secondi. Il valore predefinito è 10 secondi.
-
Crea o aggiorna il servizio utilizzando il seguente comando:
gcloud run services replace service.yaml
Terraform
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.
Liveness HTTP
Assicurati che il tuo servizio utilizzi HTTP/1 (l'impostazione predefinita di Cloud Run) e non HTTP/2.
Configura il servizio Cloud Run con l'attributo liveness_probe
come mostrato:
Attività gRPC
Prima di utilizzare i probe gRPC, assicurati che l'immagine container implementi il protocollo di controllo di integrità gRPC. Per saperne di più, consulta GRPC Health Checking Protocol.
Configura il servizio Cloud Run con l'attributo liveness_probe
come mostrato:
Requisiti e comportamento del probe di attività
Tipo di sonda | Requisiti | Comportamento |
---|---|---|
Liveness HTTP | Crea un endpoint di controllo di integrità HTTP Utilizza HTTP/1 |
Il probe di attività inizia solo dopo che il probe di avvio ha avuto esito positivo. Dopo la configurazione del probe e l'esito positivo di qualsiasi probe di avvio, Cloud Run invia una richiesta HTTP GET all'endpoint di controllo di integrità del servizio (ad esempio /health ). Qualsiasi risposta 2XX o 3XX è considerata riuscita, mentre tutte le altre indicano un errore.Se un probe di attività non va a buon fine entro il tempo specificato ( failureThreshold * periodSeconds ), il container viene arrestato utilizzando un segnale SIGKILL . Le richieste rimanenti ancora gestite dal container vengono terminate con il codice di stato HTTP 503 . Dopo l'arresto del container, lo scalabilità automatica di Cloud Run avvia una nuova istanza container. |
Attività gRPC | Implementa il protocollo di controllo di integrità gRPC nel tuo servizio Cloud Run | Se configuri un probe di avvio gRPC, il probe di attività viene avviato solo dopo che il probe di avvio ha avuto esito positivo. Dopo aver configurato il probe di attività e dopo che il probe di avvio ha avuto esito positivo, Cloud Run invia una richiesta di controllo di integrità al servizio. Se un probe di attività non ha esito positivo entro il tempo specificato ( failureThreshold * periodSeconds ), il container viene arrestato utilizzando un segnale SIGKILL . Dopo l'arresto del container, lo scalabilità automatica di Cloud Run avvia una nuova istanza container. |
Crea endpoint di controllo di integrità HTTP
Se configuri il servizio Cloud Run per un probe di avvio HTTP,
devi aggiungere un endpoint nel codice del servizio per rispondere
al probe. L'endpoint può avere il nome che preferisci, ad esempio
/startup
o /ready
, ma deve corrispondere ai valori specificati per
path
nella configurazione del probe, come segue:
startupProbe: httpGet: path: /ready
Se configuri il servizio Cloud Run per un probe di attività HTTP
utilizzando un percorso come /health
, lo definisci nella configurazione del probe come
segue:
livenessProbe: httpGet: path: /health
Gli endpoint di controllo dell'integrità HTTP sono accessibili esternamente e seguono gli stessi principi di qualsiasi altro endpoint di servizio HTTP esposto esternamente.
Allocazione della CPU
- La CPU è sempre allocata quando vengono eseguite le sonde.
- Tutti i probe vengono fatturati in base al consumo di CPU e memoria, ma non è previsto alcun addebito basato sulle richieste.