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 i seguenti tipi di probe di controllo di integrità'integrità:
- I probe di avvio determinano se il container è stato avviato ed è pronto ad accettare il traffico.
- I probe di attività determinano se riavviare un
container.
- Il riavvio di un container in questo caso può aumentare la disponibilità dell'istanza 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'istanza è in esecuzione, ma non è in grado di progredire. Puoi richiedere un sondaggio di vivacità per ogni container utilizzando policy dell'organizzazione personalizzate.
- Quando un'istanza riscontra ripetuti errori di probe, Cloud Run limita i riavvii dell'istanza per evitare loop di arresto anomalo incontrollati.
Probe di idoneità (anteprima)
I probe di idoneità determinano quando un'istanza nell'istanza Cloud Run deve gestire il traffico. I controlli di idoneità iniziano dopo che il probe di avvio del container è stato superato correttamente. Se un'istanza non supera il probe di idoneità oltre il valore della soglia di errore che configuri, Cloud Run smette di inviarle nuovo traffico. Cloud Run non termina l'istanza e invia di nuovo il traffico all'istanza quando questa inizia di nuovo a superare il probe di idoneità.
Il tuo container deve implementare in modo coerente i probe di avvio, attività e idoneità. Una volta superato il controllo di avvio, Cloud Run considera il container pronto a gestire il traffico.
Ti consigliamo di incapsulare la logica in modo che il probe di avvio tenga conto della preparazione. Poiché Cloud Run può instradare il traffico a una nuova istanza prima che venga completata la prima sonda di disponibilità, assicurati che il superamento della sonda di avvio garantisca anche la disponibilità a gestire il traffico in modo sicuro e immediato. Quando il probe di avvio ha esito positivo, consideriamo il container pronto a ricevere il traffico.
Configura i probe di avvio
Puoi configurare i probe HTTP, TCP e gRPC utilizzando Google Cloud CLI o YAML:
gcloud
Avvio TCP
Esegui questo comando:
gcloud beta run instances create INSTANCE \
--image=IMAGE_URL \
--startup-probe tcpSocket.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
Sostituisci quanto segue:
- INSTANCE: il nome dell'istanza Cloud Run.
- IMAGE_URL: 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à stato creato. L'URL ha la formaLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. - CONTAINER_PORT (facoltativo): la porta del contenitore utilizzata per l'istanza.
- DELAY: numero di secondi di attesa dopo l'avvio del container prima dell'esecuzione del primo probe. Specifica un valore compreso tra 0 e 240 secondi. Il valore predefinito è 0 secondi.
- TIMEOUT (facoltativo): 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. - THRESHOLD: il numero di tentativi del probe prima di arrestare il container. Il valore predefinito è 3.
- PERIOD: periodo (in secondi) in cui eseguire il probe.
Ad esempio,
2per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 secondo e 240 secondi. Il valore predefinito è 10 secondi.
Avvio HTTP
Aggiungi un endpoint HTTP/1 (il valore predefinito di Cloud Run, non HTTP/2) nel codice dell'istanza per rispondere al probe. Il nome dell'endpoint (ad esempio /startup,
/health o /are_you_ready) deve corrispondere a path nella
configurazione del probe. Gli endpoint di controllo di integrità HTTP sono accessibili esternamente
e seguono gli stessi principi di qualsiasi altro endpoint di istanza HTTP esposto esternamente.
Esegui questo comando:
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
Sostituisci quanto segue:
- INSTANCE: il nome dell'istanza Cloud Run.
- IMAGE_URL: 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à stato creato. L'URL ha la formaLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. - PATH: un percorso relativo all'endpoint HTTP, ad esempio
/health. - CONTAINER_PORT (Facoltativo): imposta la porta del contenitore utilizzata per l'istanza.
- DELAY (facoltativo): 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.
- THRESHOLD (facoltativo): il numero di tentativi del probe prima di arrestare il container. Il valore predefinito è 3.
- TIMEOUT (facoltativo): 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.
- PERIOD (facoltativo): il periodo (in secondi) in cui eseguire il probe. Ad esempio,
2per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 secondo e 240 secondi. Il valore predefinito è 10 secondi.
Avvio di gRPC
Assicurati che l'immagine container implementi il protocollocontrollo di integritàà gRPC.
Esegui questo comando:
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
Sostituisci quanto segue:
- INSTANCE: il nome dell'istanza Cloud Run.
- IMAGE_URL: 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à stato creato. L'URL ha la formaLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. - GRPC_INSTANCE (facoltativo): se impostato, questo valore viene utilizzato nel campo dell'istanza di
grpc.health.v1.HealthCheckRequestquando viene chiamato l'RPCgrpc.health.v1.Health.Check. - CONTAINER_PORT (facoltativo): la porta del contenitore utilizzata per l'istanza.
- DELAY (facoltativo): 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.
- THRESHOLD (facoltativo): il numero di tentativi del probe prima di arrestare il container. Il valore predefinito è 3.
- TIMEOUT (facoltativo): 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.
- PERIOD (facoltativo): il periodo (in secondi) in cui eseguire il probe. Ad esempio,
2per 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 una nuova istanza, ignora questo passaggio. Se stai aggiornando un'istanza esistente, scarica la relativa configurazione YAML:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
Configura l'attributo
startupProbecome mostrato: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
Sostituisci quanto segue:
- INSTANCE: il nome dell'istanza Cloud Run.
- IMAGE_URL: 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à stato creato. L'URL ha la formaLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. - CONTAINER_PORT (facoltativo): la porta del contenitore utilizzata per l'istanza.
- DELAY: numero di secondi di attesa dopo l'avvio del container prima dell'esecuzione del primo probe. Specifica un valore compreso tra 0 e 240 secondi. Il valore predefinito è 0 secondi.
- TIMEOUT (facoltativo): 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. - THRESHOLD: il numero di tentativi del probe prima di arrestare il container. Il valore predefinito è 3.
- PERIOD: periodo (in secondi) in cui eseguire il probe.
Ad esempio,
2per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 secondo e 240 secondi. Il valore predefinito è 10 secondi.
-
Crea o aggiorna l'istanza utilizzando il seguente comando:
gcloud beta run instances replace instance.yaml
Avvio HTTP
Aggiungi un endpoint HTTP/1 (il valore predefinito di Cloud Run, non HTTP/2) nel codice dell'istanza per rispondere al probe. Il nome dell'endpoint (ad esempio /startup,
/health o /are_you_ready) deve corrispondere a path nella
configurazione del probe. Gli endpoint di controllo di integrità HTTP sono accessibili esternamente
e seguono gli stessi principi di qualsiasi altro endpoint di istanza HTTP esposto esternamente.
Se stai creando una nuova istanza, ignora questo passaggio. Se stai aggiornando un'istanza esistente, scarica la relativa configurazione YAML:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
Configura l'attributo
startupProbecome mostrato: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
Sostituisci quanto segue:
- INSTANCE: il nome dell'istanza Cloud Run.
- IMAGE_URL: 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à stato creato. L'URL ha la formaLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. - PATH: un percorso relativo all'endpoint HTTP, ad esempio
/health. - CONTAINER_PORT (Facoltativo): imposta la porta del contenitore utilizzata per l'istanza.
- DELAY (facoltativo): 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.
- THRESHOLD (facoltativo): il numero di tentativi del probe prima di arrestare il container. Il valore predefinito è 3.
- Facoltativo:
httpHeaderspuò essere utilizzato per fornire intestazioni personalizzate multiple o ripetute utilizzando i campi HEADER_NAME e HEADER_VALUE come mostrato. - TIMEOUT (facoltativo): 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.
- PERIOD (facoltativo): il periodo (in secondi) in cui eseguire il probe. Ad esempio,
2per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 secondo e 240 secondi. Il valore predefinito è 10 secondi.
Se stai creando una nuova istanza, ignora questo passaggio. Se stai aggiornando un'istanza esistente, scarica la relativa configurazione YAML:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
Avvio di gRPC
Assicurati che l'immagine container implementi il protocollocontrollo di integritàà gRPC.
Se stai creando una nuova istanza, ignora questo passaggio. Se stai aggiornando un'istanza esistente, scarica la relativa configurazione YAML:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
Configura l'attributo
startupProbecome mostrato: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
Sostituisci quanto segue:
- INSTANCE: il nome dell'istanza Cloud Run.
- IMAGE_URL: 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à stato creato. L'URL ha la formaLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. - GRPC_INSTANCE (facoltativo): se impostato, questo valore viene utilizzato nel campo dell'istanza di
grpc.health.v1.HealthCheckRequestquando viene chiamato l'RPCgrpc.health.v1.Health.Check. - CONTAINER_PORT (facoltativo): la porta del contenitore utilizzata per l'istanza.
- DELAY (facoltativo): 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.
- THRESHOLD (facoltativo): il numero di tentativi del probe prima di arrestare il container. Il valore predefinito è 3.
- TIMEOUT (facoltativo): 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.
- PERIOD (facoltativo): il periodo (in secondi) in cui eseguire il probe. Ad esempio,
2per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 secondo e 240 secondi. Il valore predefinito è 10 secondi.
Se stai creando una nuova istanza, ignora questo passaggio. Se stai aggiornando un'istanza esistente, scarica la relativa configurazione YAML:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
Probe di avvio TCP predefinito
Se non configuri esplicitamente un probe di avvio TCP per una nuova istanza 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 effettua una richiesta HTTP GET all'endpoint del controllo di integrità (ad esempio, /health). Qualsiasi risposta 2XX o 3XX è considerata riuscita, mentre tutte le altre indicano 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. |
| Avvio di gRPC | Implementa il protocollo di controllo dell'integrità gRPC nella tua istanza 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 Google Cloud SDK o YAML:
gcloud
Liveness HTTP
Aggiungi un endpoint HTTP/1 (il valore predefinito di Cloud Run, non HTTP/2) nel codice dell'istanza per rispondere al probe. Il nome dell'endpoint (ad esempio /startup,
/health o /are_you_ready) deve corrispondere a path nella
configurazione del probe. Gli endpoint di controllo di integrità HTTP sono accessibili esternamente
e seguono gli stessi principi di qualsiasi altro endpoint di istanza HTTP esposto esternamente.
Esegui questo comando:
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
Sostituisci quanto segue:
- INSTANCE: il nome dell'istanza Cloud Run.
- IMAGE_URL: 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à stato creato. L'URL ha la formaLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. - PATH: un percorso relativo all'endpoint HTTP, ad esempio
/health. - CONTAINER_PORT (Facoltativo): imposta la porta del contenitore utilizzata per l'istanza.
- DELAY (facoltativo): 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.
- THRESHOLD (facoltativo): il numero di tentativi del probe prima di arrestare il container. Il valore predefinito è 3.
- Facoltativo. TIMEOUT: 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 3600.Il valore predefinito è 1. - Facoltativo. PERIOD: il periodo (in secondi) in cui eseguire il probe. Ad esempio,
2per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 secondo e 3600 secondi. Il valore predefinito è 10 secondi.
Liveness di gRPC
Assicurati che l'immagine container implementi il protocollocontrollo di integritàà gRPC.
Esegui questo comando:
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
Sostituisci quanto segue:
- INSTANCE: il nome dell'istanza Cloud Run.
- IMAGE_URL: 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à stato creato. L'URL ha la formaLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. - GRPC_INSTANCE (facoltativo): se impostato, questo valore viene utilizzato nel campo dell'istanza di
grpc.health.v1.HealthCheckRequestquando viene chiamato l'RPCgrpc.health.v1.Health.Check. - CONTAINER_PORT (facoltativo): la porta del contenitore utilizzata per l'istanza.
- DELAY (facoltativo): 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.
- THRESHOLD (facoltativo): il numero di tentativi del probe prima di arrestare il container. Il valore predefinito è 3.
- Facoltativo. TIMEOUT: 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 3600.Il valore predefinito è 1. - Facoltativo. PERIOD: il periodo (in secondi) in cui eseguire il probe. Ad esempio,
2per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 secondo e 3600 secondi. Il valore predefinito è 10 secondi.
YAML
Liveness HTTP
Aggiungi un endpoint HTTP/1 (il valore predefinito di Cloud Run, non HTTP/2) nel codice dell'istanza per rispondere al probe. Il nome dell'endpoint (ad esempio /startup,
/health o /are_you_ready) deve corrispondere a path nella
configurazione del probe. Gli endpoint di controllo di integrità HTTP sono accessibili esternamente
e seguono gli stessi principi di qualsiasi altro endpoint di istanza HTTP esposto esternamente.
-
Se stai creando una nuova istanza, ignora questo passaggio. Se stai aggiornando un'istanza esistente, scarica
la relativa configurazione YAML:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
Configura l'attributo
livenessProbecome mostrato: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
Sostituisci quanto segue:
- INSTANCE: il nome dell'istanza Cloud Run.
- IMAGE_URL: 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à stato creato. L'URL ha la formaLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. - PATH: un percorso relativo all'endpoint HTTP, ad esempio
/health. - CONTAINER_PORT (Facoltativo): imposta la porta del contenitore utilizzata per l'istanza.
- DELAY (facoltativo): 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.
- THRESHOLD (facoltativo): il numero di tentativi del probe prima di arrestare il container. Il valore predefinito è 3.
- Facoltativo:
httpHeaderspuò essere utilizzato per fornire intestazioni personalizzate multiple o ripetute utilizzando i campi HEADER_NAME e HEADER_VALUE come mostrato. - Facoltativo. TIMEOUT: 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 3600.Il valore predefinito è 1. - Facoltativo. PERIOD: il periodo (in secondi) in cui eseguire il probe. Ad esempio,
2per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 secondo e 3600 secondi. Il valore predefinito è 10 secondi.
-
Crea o aggiorna l'istanza utilizzando il seguente comando:
gcloud beta run instances replace instance.yaml
Liveness di gRPC
Assicurati che l'immagine container implementi il protocollocontrollo di integritàà gRPC.
-
Se stai creando una nuova istanza, ignora questo passaggio. Se stai aggiornando un'istanza esistente, scarica
la relativa configurazione YAML:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
Configura l'attributo
livenessProbecome mostrato: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
Sostituisci quanto segue:
- INSTANCE: il nome dell'istanza Cloud Run.
- IMAGE_URL: 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à stato creato. L'URL ha la formaLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. - GRPC_INSTANCE (facoltativo): se impostato, questo valore viene utilizzato nel campo dell'istanza di
grpc.health.v1.HealthCheckRequestquando viene chiamato l'RPCgrpc.health.v1.Health.Check. - CONTAINER_PORT (facoltativo): la porta del contenitore utilizzata per l'istanza.
- DELAY (facoltativo): 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.
- THRESHOLD (facoltativo): il numero di tentativi del probe prima di arrestare il container. Il valore predefinito è 3.
- Facoltativo. TIMEOUT: 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 3600.Il valore predefinito è 1. - Facoltativo. PERIOD: il periodo (in secondi) in cui eseguire il probe. Ad esempio,
2per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 secondo e 3600 secondi. Il valore predefinito è 10 secondi.
-
Crea o aggiorna l'istanza utilizzando il seguente comando:
gcloud beta run instances replace instance.yaml
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 del controllo di integrità (ad esempio, /health). Qualsiasi risposta 2XX o 3XX è considerata riuscita, mentre tutte le altre indicano un errore.Se un probe di attività non riesce entro il tempo specificato ( failureThreshold * periodSeconds), il container viene arrestato utilizzando un segnale SIGKILL. Le richieste rimanenti ancora servite 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. |
| Liveness di gRPC | Implementa il protocollo di controllo dell'integrità gRPC nella tua istanza Cloud Run | Se configuri un probe di avvio gRPC, il probe di attività viene avviato solo dopo il completamento del probe di avvio. Dopo aver configurato il probe di attività e completato il probe di avvio, Cloud Run invia una richiesta di controllo di integrità dell'integrità all'istanza. Se un probe di attività non viene completato 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. |
configura i probe di idoneità
Si applicano le seguenti limitazioni ai probe di preparazione:- Se attivi l'affinità sessione, Cloud Run continua a inviare richieste alla stessa istanza, anche se il controllo di idoneità non va a buon fine.
Puoi configurare un probe di preparazione utilizzando Google Cloud CLI o YAML:
gcloud
Idoneità HTTP
Aggiungi un endpoint HTTP/1 (il valore predefinito di Cloud Run, non HTTP/2) nel codice dell'istanza per rispondere al probe. Il nome dell'endpoint (ad esempio /startup,
/health o /are_you_ready) deve corrispondere a path nella
configurazione del probe. Gli endpoint di controllo di integrità HTTP sono accessibili esternamente
e seguono gli stessi principi di qualsiasi altro endpoint di istanza HTTP esposto esternamente.
Esegui questo comando:
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
Sostituisci quanto segue:
- INSTANCE: il nome dell'istanza Cloud Run.
- IMAGE_URL: 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à stato creato. L'URL ha la formaLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. - PATH (Facoltativo): il percorso relativo all'endpoint HTTP, ad esempio
/are_you_ready. Il percorso predefinito è/. - CONTAINER_PORT (facoltativo): la porta del contenitore utilizzata per l'istanza. La porta predefinita è la porta di ingresso principale.
- SUCCESS_THRESHOLD (Facoltativo): il numero minimo di successi consecutivi necessari affinché il probe venga considerato riuscito dopo un errore. Il valore predefinito è 2.
- FAILURE_THRESHOLD (Facoltativo): il numero di tentativi del probe prima di segnalare un errore, che fa sì che l'istanza smetta di ricevere traffico. Il valore predefinito è 3.
- TIMEOUT (facoltativo): 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 300. Il valore predefinito è 1. - PERIOD (facoltativo): il periodo (in secondi) in cui eseguire il probe.
Ad esempio,
2per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 e 300. Il valore predefinito è 10 secondi.
Idoneità gRPC
Assicurati che l'immagine container implementi il protocollocontrollo di integritàà gRPC.
Esegui questo comando:
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
Sostituisci quanto segue:
- INSTANCE: il nome dell'istanza Cloud Run.
- IMAGE_URL: 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à stato creato. L'URL ha la formaLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. - CONTAINER_PORT (facoltativo): la porta del contenitore utilizzata per l'istanza. La porta predefinita è la porta di ingresso principale.
- GRPC_INSTANCE (facoltativo): se impostato, questo valore viene utilizzato nel campo dell'istanza di
grpc.health.v1.HealthCheckRequestquando viene chiamato l'RPCgrpc.health.v1.Health.Check. - SUCCESS_THRESHOLD (Facoltativo): il numero minimo di successi consecutivi necessari affinché il probe venga considerato riuscito dopo un errore. Il valore predefinito è 2.
- FAILURE_THRESHOLD (Facoltativo): il numero di tentativi del probe prima di segnalare un errore, che fa sì che l'istanza smetta di ricevere traffico. Il valore predefinito è 3.
- TIMEOUT (facoltativo): 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 300. Il valore predefinito è 1. - PERIOD (facoltativo): il periodo (in secondi) in cui eseguire il probe.
Ad esempio,
2per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 e 300. Il valore predefinito è 10 secondi.
YAML
Idoneità HTTP
Aggiungi un endpoint HTTP/1 (il valore predefinito di Cloud Run, non HTTP/2) nel codice dell'istanza per rispondere al probe. Il nome dell'endpoint (ad esempio /startup,
/health o /are_you_ready) deve corrispondere a path nella
configurazione del probe. Gli endpoint di controllo di integrità HTTP sono accessibili esternamente
e seguono gli stessi principi di qualsiasi altro endpoint di istanza HTTP esposto esternamente.
-
Se stai creando una nuova istanza, ignora questo passaggio. Se stai aggiornando un'istanza esistente, scarica
la relativa configurazione YAML:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
Configura l'attributo
readinessProbecome mostrato: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
Sostituisci quanto segue:
- INSTANCE: il nome dell'istanza Cloud Run.
- IMAGE_URL: 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à stato creato. L'URL ha la formaLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. - PATH (Facoltativo): il percorso relativo all'endpoint HTTP, ad esempio
/are_you_ready. Il percorso predefinito è/. - CONTAINER_PORT (facoltativo): la porta del contenitore utilizzata per l'istanza. La porta predefinita è la porta di ingresso principale.
- SUCCESS_THRESHOLD (Facoltativo): il numero minimo di successi consecutivi necessari affinché il probe venga considerato riuscito dopo un errore. Il valore predefinito è 2.
- FAILURE_THRESHOLD (Facoltativo): il numero di tentativi del probe prima di segnalare un errore, che fa sì che l'istanza smetta di ricevere traffico. Il valore predefinito è 3.
- TIMEOUT (facoltativo): 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 300. Il valore predefinito è 1. - PERIOD (facoltativo): il periodo (in secondi) in cui eseguire il probe.
Ad esempio,
2per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 e 300. Il valore predefinito è 10 secondi.
-
Crea o aggiorna l'istanza utilizzando il seguente comando:
gcloud beta run instances replace instance.yaml
Idoneità gRPC
Assicurati che l'immagine container implementi il protocollocontrollo di integritàà gRPC.
-
Se stai creando una nuova istanza, ignora questo passaggio. Se stai aggiornando un'istanza esistente, scarica
la relativa configurazione YAML:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
Configura l'attributo
readinessProbecome mostrato: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
Sostituisci quanto segue:
- INSTANCE: il nome dell'istanza Cloud Run.
- IMAGE_URL: 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à stato creato. L'URL ha la formaLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. - CONTAINER_PORT (facoltativo): la porta del contenitore utilizzata per l'istanza. La porta predefinita è la porta di ingresso principale.
- GRPC_INSTANCE (facoltativo): se impostato, questo valore viene utilizzato nel campo dell'istanza di
grpc.health.v1.HealthCheckRequestquando viene chiamato l'RPCgrpc.health.v1.Health.Check. - SUCCESS_THRESHOLD (Facoltativo): il numero minimo di successi consecutivi necessari affinché il probe venga considerato riuscito dopo un errore. Il valore predefinito è 2.
- FAILURE_THRESHOLD (Facoltativo): il numero di tentativi del probe prima di segnalare un errore, che fa sì che l'istanza smetta di ricevere traffico. Il valore predefinito è 3.
- TIMEOUT (facoltativo): 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 300. Il valore predefinito è 1. - PERIOD (facoltativo): il periodo (in secondi) in cui eseguire il probe.
Ad esempio,
2per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 e 300. Il valore predefinito è 10 secondi.
-
Crea o aggiorna l'istanza utilizzando il seguente comando:
gcloud beta run instances replace instance.yaml
Allocazione della CPU
- La CPU è sempre allocata quando vengono eseguite le sonde.
- Tutte le sonde vengono fatturate in base al consumo di CPU e memoria utilizzata, ma non è previsto alcun addebito basato sulle richieste.
Passaggi successivi
- Scopri come configurare un protocollo di controllo di integrità gRPC.