Configura i controlli di integrità dei container per le istanze

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 forma LOCATION-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, 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

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 forma LOCATION-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, 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

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 forma LOCATION-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.HealthCheckRequest quando viene chiamato l'RPC grpc.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, 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

  1. 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
  2. Configura l'attributo startupProbe come 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 forma LOCATION-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, 2 per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 secondo e 240 secondi. Il valore predefinito è 10 secondi.
  3. 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.

  1. 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
  2. Configura l'attributo startupProbe come 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 forma LOCATION-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: httpHeaders può 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, 2 per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 secondo e 240 secondi. Il valore predefinito è 10 secondi.
    1. 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.

  1. 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
  2. Configura l'attributo startupProbe come 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 forma LOCATION-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.HealthCheckRequest quando viene chiamato l'RPC grpc.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, 2 per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 secondo e 240 secondi. Il valore predefinito è 10 secondi.
  3. 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 forma LOCATION-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, 2 per 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 forma LOCATION-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.HealthCheckRequest quando viene chiamato l'RPC grpc.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, 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

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.

  1. 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
  2. Configura l'attributo livenessProbe come 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 forma LOCATION-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: httpHeaders può 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, 2 per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 secondo e 3600 secondi. Il valore predefinito è 10 secondi.
  3. 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.

  1. 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
  2. Configura l'attributo livenessProbe come 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 forma LOCATION-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.HealthCheckRequest quando viene chiamato l'RPC grpc.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, 2 per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 secondo e 3600 secondi. Il valore predefinito è 10 secondi.

  3. 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 forma LOCATION-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, 2 per 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 forma LOCATION-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.HealthCheckRequest quando viene chiamato l'RPC grpc.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, 2 per 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.

  1. 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
  2. Configura l'attributo readinessProbe come 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 forma LOCATION-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, 2 per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 e 300. Il valore predefinito è 10 secondi.

  3. 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.

  1. 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
  2. Configura l'attributo readinessProbe come 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 forma LOCATION-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.HealthCheckRequest quando viene chiamato l'RPC grpc.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, 2 per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 e 300. Il valore predefinito è 10 secondi.

  3. 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