Configurare i controlli di integrità dei container per i servizi

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 quando il container è pronto per ricevere richieste e quando deve essere considerato non integro per richiedere un riavvio.

Casi d'uso

Puoi configurare i seguenti tipi di probe per 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à e idoneità 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 con avvio lento, perché impediscono l'arresto prematuro dei container prima che siano attivi e funzionanti.
  • I probe di attività determinano se riavviare un container.

    • Il riavvio di un container in questo caso può aumentare la disponibilità del servizio in caso di bug.
    • I probe di attività sono destinati a riavviare singole istanze che non possono essere recuperate in altro modo. Dovrebbero essere utilizzati principalmente per errori di istanza non recuperabili, ad esempio per rilevare un deadlock in cui un servizio è in esecuzione, ma non è in grado di procedere. Puoi richiedere un probe di attività per ogni container utilizzando le policy dell'organizzazione personalizzate.
    • Quando un servizio riscontra errori ripetuti dei probe, Cloud Run limita i riavvii delle istanze per evitare loop di arresti anomali incontrollati.
  • Probe di idoneità

    I probe di idoneità determinano quando un'istanza nel tuo servizio Cloud Run deve gestire il traffico. I controlli di idoneità iniziano dopo che il probe di avvio del container ha esito positivo. Se un'istanza non supera il probe di idoneità oltre il valore della soglia di errore configurato, Cloud Run smette di inviarle nuovo traffico. Cloud Run non termina l'istanza e invia nuovamente il traffico all'istanza quando inizia a superare di nuovo il probe di idoneità.

Il container deve implementare i probe di avvio, attività e idoneità in modo coerente. Una volta superato il controllo di avvio, Cloud Run considera il container pronto per gestire il traffico.

Ti consigliamo di incapsulare la logica in modo che il probe di avvio tenga conto dell'idoneità. Poiché Cloud Run può instradare il traffico a una nuova istanza prima del completamento del primo probe di idoneità, assicurati che il superamento del probe di avvio garantisca anche l'idoneità a gestire il traffico in sicurezza immediatamente. Quando il probe di avvio ha esito positivo, consideriamo il container pronto a ricevere traffico.

Configura i probe di avvio

Qualsiasi modifica alla configurazione porta alla creazione di una nuova revisione. Anche le revisioni successive riceveranno automaticamente questa impostazione di configurazione, a meno che non apporti aggiornamenti espliciti per modificarla.

Puoi configurare i probe HTTP, TCP e gRPC utilizzando la console Google Cloud , YAML o Terraform:

Console

  1. Nella console Google Cloud , vai a Cloud Run:

    Vai a Cloud Run

  2. Seleziona Servizi dal menu di navigazione di Cloud Run:

    1. Se stai configurando un nuovo servizio, fai clic su Esegui il deployment del container e compila la pagina delle impostazioni iniziali del servizio. Quindi fai clic su Container, networking, sicurezza per espandere la pagina di configurazione del servizio.

    2. Se stai configurando un servizio esistente, fai clic sul servizio, quindi sulla scheda Container.

  3. Nella sezione Controlli di integrità, fai clic su Aggiungi controllo di integrità per aprire il riquadro di configurazione Aggiungi controllo di integrità.

  4. Dal menu Seleziona il tipo di controllo di integrità, seleziona Controllo di avvio.

  5. Dal menu Seleziona il tipo di probe, seleziona il tipo di probe che vuoi utilizzare, ad esempio HTTP o gRPC. Viene visualizzato il modulo di configurazione del probe. La configurazione del probe varia in base al tipo di probe. Configura le impostazioni del probe:

    • Se utilizzi i probe HTTP:

      • Aggiungi un endpoint HTTP/1 (l'impostazione predefinita di Cloud Run, non HTTP/2) nel codice del servizio 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 controllo di integrità HTTP sono accessibili esternamente e seguono gli stessi principi di qualsiasi altro endpoint di servizio HTTP esposto esternamente.
      • Utilizza il campo Percorso per specificare il percorso relativo dell'endpoint, ad esempio /.
      • Seleziona la casella di controllo Intestazioni HTTP per specificare intestazioni personalizzate facoltative. 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 i probe gRPC:

    • In Porta, specifica la porta del container utilizzata per il servizio.

    • In Ritardo iniziale, specifica il numero di secondi di attesa prima dell'esecuzione del primo probe dopo l'avvio del container. Specifica un valore compreso tra 0 e 600 secondi (1800 per la GPU). Il valore predefinito è 0 secondi.

    • In 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 secondo e 600 secondi (1800 per la GPU). Il valore predefinito è 10 secondi.

    • In 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 600 (1800 per la GPU). Il valore predefinito è 1.

  6. Fai clic su Aggiungi per aggiungere la nuova soglia.

  7. Fai clic su Crea per un nuovo servizio. Fai clic su Visualizza differenze e fai di nuovo il deployment, quindi su Esegui il deployment delle modifiche per un servizio esistente.

Per eliminare un probe, fai clic sull'icona Elimina per il controllo di integrità che vuoi eliminare, quindi fai clic su Conferma. Per eseguire il deployment di una nuova revisione del servizio Cloud Run, fai clic su Visualizza differenze e fai di nuovo il deployment, quindi su Esegui il deployment delle modifiche.

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 quanto segue:

  • SERVICE: il nome del servizio 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 il formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • Facoltativo. CONTAINER_PORT: la porta del container utilizzata per il servizio.
  • DELAY: il numero di secondi di attesa dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 600 secondi (1800 per la GPU). Il valore predefinito è 0 secondi.
  • Facoltativo. TIMEOUT: 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 600 (1800 per la GPU). Il valore predefinito è 1.
  • THRESHOLD: il numero di tentativi del probe prima di arrestare il container. Il valore predefinito è 3.
  • 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 600 secondi (1800 per la GPU). Il valore predefinito è 10 secondi.

Avvio HTTP

Aggiungi un endpoint HTTP/1 (l'impostazione predefinita di Cloud Run, non HTTP/2) nel codice del servizio 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 controllo di integrità HTTP sono accessibili esternamente e seguono gli stessi principi di qualsiasi altro endpoint di servizio HTTP esposto esternamente.

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 quanto segue:

  • SERVICE: il nome del servizio 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 il formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • PATH: un percorso relativo all'endpoint HTTP, ad esempio /health.
  • Facoltativo. CONTAINER_PORT: impostato sulla porta del container utilizzata per il servizio.
  • Facoltativo. DELAY: il numero di secondi di attesa dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 600 secondi (1800 per la GPU). Il valore predefinito è 0 secondi.
  • Facoltativo. THRESHOLD: il numero di tentativi del probe prima di arrestare il container. Il valore predefinito è 3.
  • Facoltativo. TIMEOUT: il numero di secondi di attesa prima che il probe scada. Questo valore non può superare il valore specificato per periodSeconds. Specifica un valore compreso tra 1 e 600 (1800 per la GPU). 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 600 secondi (1800 per la GPU). Il valore predefinito è 10 secondi.

Avvio gRPC

Assicurati che l'immagine container implementi il protocollo di controllo di integrità gRPC.

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 quanto segue:

  • SERVICE: il nome del servizio 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 il formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • Facoltativo. GRPC_SERVICE: se impostato, questo valore viene utilizzato nel campo del servizio di grpc.health.v1.HealthCheckRequest quando viene chiamata la RPC grpc.health.v1.Health.Check.
  • Facoltativo. CONTAINER_PORT: la porta del container utilizzata per il servizio.
  • Facoltativo. DELAY: il numero di secondi di attesa dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 600 secondi (1800 per la GPU). Il valore predefinito è 0 secondi.
  • Facoltativo. THRESHOLD: il numero di tentativi del probe prima di arrestare il container. Il valore predefinito è 3.
  • Facoltativo. TIMEOUT: il numero di secondi di attesa prima che il probe scada. Questo valore non può superare il valore specificato per periodSeconds. Specifica un valore compreso tra 1 e 600 (1800 per la GPU). 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 600 secondi (1800 per la GPU). Il valore predefinito è 10 secondi.

YAML

Avvio TCP

  1. 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 quanto segue:

    • SERVICE: il nome del servizio 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 il formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • Facoltativo. CONTAINER_PORT: la porta del container utilizzata per il servizio.
    • DELAY: il numero di secondi di attesa dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 600 secondi (1800 per la GPU). Il valore predefinito è 0 secondi.
    • Facoltativo. TIMEOUT: 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 600 (1800 per la GPU). Il valore predefinito è 1.
    • THRESHOLD: il numero di tentativi del probe prima di arrestare il container. Il valore predefinito è 3.
    • 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 600 secondi (1800 per la GPU). Il valore predefinito è 10 secondi.

Avvio HTTP

Aggiungi un endpoint HTTP/1 (l'impostazione predefinita di Cloud Run, non HTTP/2) nel codice del servizio 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 controllo di integrità HTTP sono accessibili esternamente e seguono gli stessi principi di qualsiasi altro endpoint di servizio HTTP esposto esternamente.

  1. 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 quanto segue:

    • SERVICE: il nome del servizio 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 il formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • PATH: un percorso relativo all'endpoint HTTP, ad esempio /health.
    • Facoltativo. CONTAINER_PORT: impostato sulla porta del container utilizzata per il servizio.
    • Facoltativo. DELAY: il numero di secondi di attesa dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 600 secondi (1800 per la GPU). Il valore predefinito è 0 secondi.
    • Facoltativo. THRESHOLD: 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 di attesa prima del timeout del probe. Questo valore non può superare il valore specificato per periodSeconds. Specifica un valore compreso tra 1 e 600 (1800 per la GPU). 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 600 secondi (1800 per la GPU). Il valore predefinito è 10 secondi.

Avvio di gRPC

Assicurati che l'immagine container implementi il protocollo di controllo di integrità gRPC.

  1. 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 quanto segue:

    • SERVICE: il nome del servizio 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 il formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • Facoltativo. GRPC_SERVICE: se impostato, questo valore viene utilizzato nel campo del servizio di grpc.health.v1.HealthCheckRequest quando viene chiamata la RPC grpc.health.v1.Health.Check.
    • Facoltativo. CONTAINER_PORT: la porta del container utilizzata per il servizio.
    • Facoltativo. DELAY: il numero di secondi di attesa dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 600 secondi (1800 per la GPU). Il valore predefinito è 0 secondi.
    • Facoltativo. THRESHOLD: il numero di tentativi del probe prima di arrestare il container. Il valore predefinito è 3.
    • Facoltativo. TIMEOUT: il numero di secondi di attesa prima che il probe scada. Questo valore non può superare il valore specificato per periodSeconds. Specifica un valore compreso tra 1 e 600 (1800 per la GPU). 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 600 secondi (1800 per la GPU). Il valore predefinito è 10 secondi.

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:

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-healthcheck"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"

      startup_probe {
        failure_threshold     = 5
        initial_delay_seconds = 10
        timeout_seconds       = 3
        period_seconds        = 3

        tcp_socket {
          port = 8080
        }
      }
    }
  }
}

Avvio HTTP

Aggiungi un endpoint HTTP/1 (l'impostazione predefinita di Cloud Run, non HTTP/2) nel codice del servizio 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 controllo di integrità HTTP sono accessibili esternamente e seguono gli stessi principi di qualsiasi altro endpoint di servizio HTTP esposto esternamente.

Configura il servizio Cloud Run con l'attributo startup_probe come mostrato:

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-healthcheck"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"

      startup_probe {
        failure_threshold     = 5
        initial_delay_seconds = 10
        timeout_seconds       = 3
        period_seconds        = 3

        http_get {
          path = "/"
          # Custom headers to set in the request
          # https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/cloud_run_v2_service#http_headers
          http_headers {
            name  = "Access-Control-Allow-Origin"
            value = "*"
          }
        }
      }
    }
  }
}

Avvio gRPC

Assicurati che l'immagine container implementi il protocollo di controllo di integrità gRPC.

Configura il servizio Cloud Run con l'attributo startup_probe come mostrato:

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-healthcheck"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      # Note: Change to the name of your image
      image = "us-docker.pkg.dev/cloudrun/container/hello"

      startup_probe {
        failure_threshold     = 5
        initial_delay_seconds = 10
        timeout_seconds       = 3
        period_seconds        = 3

        grpc {
          # Note: Change to the name of your pre-existing grpc health status service
          service = "grpc.health.v1.Health"
        }
      }
    }
  }
}

Il probe di avvio TCP predefinito

Se non configuri esplicitamente un probe di avvio TCP per un nuovo servizio Cloud Run, Cloud Run ne configura automaticamente uno con i seguenti valori predefiniti:

startupProbe:
          timeoutSeconds: 240
          periodSeconds: 240
          failureThreshold: 1

Puoi modificare questi valori predefiniti seguendo le istruzioni riportate nella sezione Configurazione dei probe di questa pagina.

Requisiti e comportamento del probe di avvio

Tipo di probe Requisiti Comportamento
Avvio TCP Nessuno Per impostazione predefinita, Cloud Run stabilisce 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 600 secondi (1800 per la GPU), il container viene arrestato. Consulta 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 GET HTTP all'endpoint del controllo di integrità (ad esempio /health). Qualsiasi risposta 2XX o 3XX indica un esito positivo, mentre qualsiasi altra risposta indica un errore.

Se un probe di avvio non ha esito positivo entro il tempo specificato (failureThreshold * periodSeconds), che non può superare i 600 secondi (1800 per la GPU), il container viene arrestato.

Se il probe di avvio HTTP ha esito positivo entro il tempo specificato e hai configurato un probe di attività HTTP, viene avviato il probe di attività HTTP.
Avvio 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 600 secondi (1800 per la GPU), il container viene arrestato.

configura probe di attività

Qualsiasi modifica alla configurazione porta alla creazione di una nuova revisione. Anche le revisioni successive riceveranno automaticamente questa impostazione di configurazione, a meno che non apporti aggiornamenti espliciti per modificarla.

Puoi configurare i probe HTTP e gRPC utilizzando la console Google Cloud , YAML o Terraform:

Console

  1. Nella console Google Cloud , vai a Cloud Run:

    Vai a Cloud Run

  2. Seleziona Servizi dal menu di navigazione di Cloud Run:

    1. Se stai configurando un nuovo servizio, fai clic su Esegui il deployment del container e compila la pagina delle impostazioni iniziali del servizio. Quindi fai clic su Container, networking, sicurezza per espandere la pagina di configurazione del servizio.

    2. Se stai configurando un servizio esistente, fai clic sul servizio, quindi sulla scheda Container.

  3. Nella sezione Controlli di integrità, fai clic su Aggiungi controllo di integrità per aprire il riquadro di configurazione Aggiungi controllo di integrità.

  4. Dal menu Seleziona il tipo di controllo di integrità, seleziona Controllo di attività.

  5. Dal menu Seleziona il tipo di probe, seleziona il tipo di probe che vuoi utilizzare, ad esempio HTTP o gRPC. Viene visualizzato il modulo di configurazione del probe.

  6. La configurazione del probe varia in base al tipo di probe. Configura le impostazioni del probe:

    • Se utilizzi i probe HTTP:

      • Aggiungi un endpoint HTTP/1 (l'impostazione predefinita di Cloud Run, non HTTP/2) nel codice del servizio 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 controllo di integrità HTTP sono accessibili esternamente e seguono gli stessi principi di qualsiasi altro endpoint di servizio HTTP esposto esternamente.
      • Utilizza il campo Percorso per specificare il percorso relativo dell'endpoint, ad esempio /.
      • Seleziona la casella di controllo Intestazioni HTTP per specificare intestazioni personalizzate facoltative. 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 i probe gRPC:

    • In Porta, specifica la porta del container utilizzata per il servizio.

    • In Ritardo iniziale, specifica il numero di secondi di attesa prima dell'esecuzione del primo probe dopo l'avvio del container. Specifica un valore compreso tra 0 e 600 secondi (1800 per la GPU). Il valore predefinito è 0 secondi.

    • In 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 secondo e 3600 secondi. Il valore predefinito è 10 secondi.

    • In Soglia di errore, specifica il numero di tentativi del probe prima di arrestare il container. Il valore predefinito è 3.

    • In Timeout, specifica il numero di secondi di attesa prima che il probe scada. Questo valore non può superare il valore specificato per periodSeconds. Specifica un valore compreso tra 1 e 3600. Il valore predefinito è 1.

  7. Fai clic su Aggiungi per aggiungere la nuova soglia.

  8. Fai clic su Crea per un nuovo servizio. Fai clic su Visualizza differenze e fai di nuovo il deployment, quindi su Esegui il deployment delle modifiche per un servizio esistente.

Per eliminare un probe, fai clic sull'icona Elimina per il controllo di integrità che vuoi eliminare, quindi fai clic su Conferma. Per eseguire il deployment di una nuova revisione del servizio Cloud Run, fai clic su Visualizza differenze e fai di nuovo il deployment, quindi su Esegui il deployment delle modifiche.

gcloud

HTTP liveness

Aggiungi un endpoint HTTP/1 (l'impostazione predefinita di Cloud Run, non HTTP/2) nel codice del servizio 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 controllo di integrità HTTP sono accessibili esternamente e seguono gli stessi principi di qualsiasi altro endpoint di servizio HTTP esposto esternamente.

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 quanto segue:

  • SERVICE: il nome del servizio 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 il formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • PATH: un percorso relativo all'endpoint HTTP, ad esempio /health.
  • Facoltativo. CONTAINER_PORT: impostato sulla porta del container utilizzata per il servizio.
  • Facoltativo. DELAY: il numero di secondi di attesa dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 600 secondi (1800 per la GPU). Il valore predefinito è 0 secondi.
  • Facoltativo. THRESHOLD: il numero di tentativi del probe prima di arrestare il container. Il valore predefinito è 3.
  • Facoltativo. TIMEOUT: 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 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.

Attività gRPC

Assicurati che l'immagine container implementi il protocollo di controllo di integrità gRPC.

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 quanto segue:

  • SERVICE: il nome del servizio 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 il formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • Facoltativo. GRPC_SERVICE: se impostato, questo valore viene utilizzato nel campo del servizio di grpc.health.v1.HealthCheckRequest quando viene chiamata la RPC grpc.health.v1.Health.Check.
  • Facoltativo. CONTAINER_PORT: la porta del container utilizzata per il servizio.
  • Facoltativo. DELAY: il numero di secondi di attesa dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 600 secondi (1800 per la GPU). Il valore predefinito è 0 secondi.
  • Facoltativo. THRESHOLD: il numero di tentativi del probe prima di arrestare il container. Il valore predefinito è 3.
  • Facoltativo. TIMEOUT: 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 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

HTTP liveness

Aggiungi un endpoint HTTP/1 (l'impostazione predefinita di Cloud Run, non HTTP/2) nel codice del servizio 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 controllo di integrità HTTP sono accessibili esternamente e seguono gli stessi principi di qualsiasi altro endpoint di servizio HTTP esposto esternamente.

  1. 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 quanto segue:

    • SERVICE: il nome del servizio 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 il formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • PATH: un percorso relativo all'endpoint HTTP, ad esempio /health.
    • Facoltativo. CONTAINER_PORT: impostato sulla porta del container utilizzata per il servizio.
    • Facoltativo. DELAY: il numero di secondi di attesa dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 600 secondi (1800 per la GPU). Il valore predefinito è 0 secondi.
    • Facoltativo. THRESHOLD: 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 di attesa 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: 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

Assicurati che l'immagine container implementi il protocollo di controllo di integrità gRPC.

  1. 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 quanto segue:

    • SERVICE: il nome del servizio 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 il formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • Facoltativo. GRPC_SERVICE: se impostato, questo valore viene utilizzato nel campo del servizio di grpc.health.v1.HealthCheckRequest quando viene chiamata la RPC grpc.health.v1.Health.Check.
    • Facoltativo. CONTAINER_PORT: la porta del container utilizzata per il servizio.
    • Facoltativo. DELAY: il numero di secondi di attesa dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 600 secondi (1800 per la GPU). Il valore predefinito è 0 secondi.
    • Facoltativo. THRESHOLD: il numero di tentativi del probe prima di arrestare il container. Il valore predefinito è 3.
    • Facoltativo. TIMEOUT: 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 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.

Terraform

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

HTTP liveness

Aggiungi un endpoint HTTP/1 (l'impostazione predefinita di Cloud Run, non HTTP/2) nel codice del servizio 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 controllo di integrità HTTP sono accessibili esternamente e seguono gli stessi principi di qualsiasi altro endpoint di servizio HTTP esposto esternamente.

Configura il servizio Cloud Run con l'attributo liveness_probe come mostrato:

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-healthcheck"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"

      liveness_probe {
        failure_threshold     = 5
        initial_delay_seconds = 10
        timeout_seconds       = 3
        period_seconds        = 3

        http_get {
          path = "/"
          # Custom headers to set in the request
          # https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/cloud_run_v2_service#http_headers
          http_headers {
            name  = "Access-Control-Allow-Origin"
            value = "*"
          }
        }
      }
    }
  }
}

Attività gRPC

Assicurati che l'immagine container implementi il protocollo di controllo di integrità gRPC.

Configura il servizio Cloud Run con l'attributo liveness_probe come mostrato:

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-healthcheck"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      # Note: Change to the name of your image
      image = "us-docker.pkg.dev/cloudrun/container/hello"

      liveness_probe {
        failure_threshold     = 5
        initial_delay_seconds = 10
        timeout_seconds       = 3
        period_seconds        = 3

        # Note: Change to the name of your pre-existing grpc health status service
        grpc {
          service = "grpc.health.v1.Health"
        }
      }
    }
  }
}

Requisiti e comportamento del probe di attività

Tipo di probe Requisiti Comportamento
HTTP liveness Crea un endpoint di controllo di integrità HTTP
Utilizza HTTP/1
Il probe di attività viene avviato solo dopo che il probe di avvio è stato completato con successo. Dopo la configurazione del probe e l'esito positivo di qualsiasi probe di avvio, Cloud Run invia una richiesta GET HTTP all'endpoint del controllo di integrità (ad esempio /health). Qualsiasi risposta 2XX o 3XX indica un esito positivo, mentre qualsiasi altra risposta indica un errore.

Se un probe di attività non viene completato entro il tempo specificato (failureThreshold * periodSeconds), il container viene arrestato utilizzando un segnale SIGKILL. Eventuali richieste rimanenti ancora gestite dal container vengono terminate con il codice di stato HTTP 503. Dopo l'arresto del container, la scalabilità automatica di Cloud Run avvia una nuova istanza del 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 è stato eseguito correttamente.

Dopo aver configurato il probe di attività e aver eseguito correttamente un probe di avvio, Cloud Run invia una richiesta di controllo di integrità al servizio.

Se un probe di attività non viene eseguito correttamente entro il tempo specificato (failureThreshold * periodSeconds), il container viene arrestato utilizzando un segnale SIGKILL. Dopo l'arresto del container, la scalabilità automatica di Cloud Run avvia una nuova istanza del container.

configura i probe di idoneità

Qualsiasi modifica alla configurazione porta alla creazione di una nuova revisione. Anche le revisioni successive riceveranno automaticamente questa impostazione di configurazione, a meno che non apporti aggiornamenti espliciti per modificarla.

Ai probe di idoneità si applicano le seguenti limitazioni:

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

  • Se in precedenza hai configurato un probe di idoneità per il tuo servizio Cloud Run utilizzando l'API Cloud Run Admin v1 prima di novembre 2025, i controlli di idoneità non avranno effetto anche dopo il deployment di una nuova configurazione per quel servizio. Questo accade perché il servizio conserva una configurazione precedente. I servizi creati dopo novembre 2025 o quelli che non hanno mai utilizzato un probe di idoneità non sono interessati. Per abilitare i probe di idoneità supportati sui servizi interessati, segui questi passaggi:

    1. Esegui il deployment di una nuova revisione che rimuova la definizione del probe di idoneità precedente.

    2. Esegui il deployment di un'altra nuova revisione che aggiunge la definizione del probe di idoneità pertinente.

    Questi passaggi cancellano qualsiasi configurazione precedente e attivano la funzionalità del probe di idoneità.

Puoi configurare un probe di idoneità utilizzando la console Google Cloud , Google Cloud CLI o YAML:

Console

  1. Nella console Google Cloud , vai a Cloud Run:

    Vai a Cloud Run

  2. Seleziona Servizi dal menu di navigazione di Cloud Run:

    1. Se stai configurando un nuovo servizio, fai clic su Esegui il deployment del container e compila la pagina delle impostazioni iniziali del servizio. Quindi fai clic su Container, networking, sicurezza per espandere la pagina di configurazione del servizio.

    2. Se stai configurando un servizio esistente, fai clic sul servizio, quindi sulla scheda Container.

  3. Nella sezione Controlli di integrità, fai clic su Aggiungi controllo di integrità per aprire il riquadro di configurazione Aggiungi controllo di integrità.

  4. Dal menu Seleziona il tipo di controllo di integrità, seleziona Controllo di idoneità.

  5. Dal menu Seleziona il tipo di probe, seleziona il tipo di probe che vuoi utilizzare, ad esempio HTTP o gRPC. Viene visualizzato il modulo di configurazione del probe.

  6. La configurazione del probe varia in base al tipo di probe. Configura le impostazioni del probe:

    • Se utilizzi i probe HTTP:

      • Aggiungi un endpoint HTTP/1 (l'impostazione predefinita di Cloud Run, non HTTP/2) nel codice del servizio 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 controllo di integrità HTTP sono accessibili esternamente e seguono gli stessi principi di qualsiasi altro endpoint di servizio HTTP esposto esternamente.

      • Utilizza il campo Percorso per specificare il percorso relativo dell'endpoint, ad esempio /are_you_ready. Il percorso predefinito è /.

    • Se utilizzi i probe gRPC:

    • In Porta, specifica la porta del container per il servizio. La porta predefinita è la porta di ingresso principale.

    • In 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 300. Il valore predefinito è 10 secondi.

    • In Soglia di successo, specifica il numero minimo di successi consecutivi necessari affinché il probe venga considerato riuscito dopo un errore. Il valore predefinito è 2.

    • In Soglia di errore, specifica il numero di tentativi del probe prima di segnalare un errore, che comporta l'interruzione della ricezione del traffico da parte dell'istanza. Il valore predefinito è 3.

    • In 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 300. Il valore predefinito è 1.

  7. Fai clic su Aggiungi per aggiungere la nuova soglia.

  8. Fai clic su Crea per un nuovo servizio. Fai clic su Visualizza differenze e fai di nuovo il deployment, quindi su Esegui il deployment delle modifiche per un servizio esistente.

Per eliminare un probe, fai clic sull'icona Elimina per il controllo di integrità che vuoi eliminare, quindi fai clic su Conferma. Per eseguire il deployment di una nuova revisione del servizio Cloud Run, fai clic su Visualizza differenze e fai di nuovo il deployment, quindi su Esegui il deployment delle modifiche.

gcloud

Idoneità HTTP

Aggiungi un endpoint HTTP/1 (l'impostazione predefinita di Cloud Run, non HTTP/2) nel codice del servizio 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 controllo di integrità HTTP sono accessibili esternamente e seguono gli stessi principi di qualsiasi altro endpoint di servizio HTTP esposto esternamente.

Esegui questo comando:

gcloud run deploy SERVICE \
    --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:

  • SERVICE: il nome del servizio 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 il formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • Facoltativo. PATH: il percorso relativo all'endpoint HTTP, ad esempio /are_you_ready. Il percorso predefinito è /.
  • Facoltativo. CONTAINER_PORT: la porta del container utilizzata per il servizio. La porta predefinita è la porta di ingresso principale.
  • Facoltativo. SUCCESS_THRESHOLD: il numero minimo di successi consecutivi necessari affinché il probe venga considerato riuscito dopo un errore. Il valore predefinito è 2.
  • Facoltativo. FAILURE_THRESHOLD: il numero di tentativi del probe prima di segnalare un errore, che comporta l'interruzione della ricezione del traffico da parte dell'istanza. Il valore predefinito è 3.
  • Facoltativo. TIMEOUT: 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 300. 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 e 300. Il valore predefinito è 10 secondi.

Idoneità gRPC

Assicurati che l'immagine container implementi il protocollo di controllo di integrità gRPC.

Esegui questo comando:

gcloud run deploy SERVICE \
    --image=IMAGE_URL \
    --readiness-probe grpc.port=CONTAINER_PORT,grpc.service=GRPC_SERVICE,successThreshold=SUCCESS_THRESHOLD,failureThreshold=FAILURE_THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD

Sostituisci quanto segue:

  • SERVICE: il nome del servizio 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 il formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • Facoltativo. CONTAINER_PORT: la porta del container utilizzata per il servizio. La porta predefinita è la porta di ingresso principale.
  • Facoltativo. GRPC_SERVICE: se impostato, questo valore viene utilizzato nel campo del servizio di grpc.health.v1.HealthCheckRequest quando viene chiamata la RPC grpc.health.v1.Health.Check.
  • Facoltativo. SUCCESS_THRESHOLD: il numero minimo di successi consecutivi necessari affinché il probe venga considerato riuscito dopo un errore. Il valore predefinito è 2.
  • Facoltativo. FAILURE_THRESHOLD: il numero di tentativi del probe prima di segnalare un errore, che comporta l'interruzione della ricezione del traffico da parte dell'istanza. Il valore predefinito è 3.
  • Facoltativo. TIMEOUT: 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 300. 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 e 300. Il valore predefinito è 10 secondi.

YAML

Idoneità HTTP

Aggiungi un endpoint HTTP/1 (l'impostazione predefinita di Cloud Run, non HTTP/2) nel codice del servizio 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 controllo di integrità HTTP sono accessibili esternamente e seguono gli stessi principi di qualsiasi altro endpoint di servizio HTTP esposto esternamente.

  1. Configura l'attributo readinessProbe come mostrato:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    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:

    • SERVICE: il nome del servizio 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 il formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • Facoltativo. PATH: il percorso relativo all'endpoint HTTP, ad esempio /are_you_ready. Il percorso predefinito è /.
    • Facoltativo. CONTAINER_PORT: la porta del container utilizzata per il servizio. La porta predefinita è la porta di ingresso principale.
    • Facoltativo. SUCCESS_THRESHOLD: il numero minimo di successi consecutivi necessari affinché il probe venga considerato riuscito dopo un errore. Il valore predefinito è 2.
    • Facoltativo. FAILURE_THRESHOLD: il numero di tentativi del probe prima di segnalare un errore, che comporta l'interruzione della ricezione del traffico da parte dell'istanza. Il valore predefinito è 3.
    • Facoltativo. TIMEOUT: 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 300. 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 e 300. Il valore predefinito è 10 secondi.

Idoneità gRPC

Assicurati che l'immagine container implementi il protocollo di controllo di integrità gRPC.

  1. Configura l'attributo readinessProbe come mostrato:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
      annotations:
        run.googleapis.com/launch-stage: BETA
    spec:
      template:
        metadata:
        spec:
          containers:
          - image: IMAGE_URL
            readinessProbe:
              grpc:
                port: CONTAINER_PORT
                service: GRPC_SERVICE
              successThreshold: SUCCESS_THRESHOLD
              failureThreshold: FAILURE_THRESHOLD
              timeoutSeconds: TIMEOUT
              periodSeconds: PERIOD

    Sostituisci quanto segue:

    • SERVICE: il nome del servizio 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 il formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • Facoltativo. CONTAINER_PORT: la porta del container utilizzata per il servizio. La porta predefinita è la porta di ingresso principale.
    • Facoltativo. GRPC_SERVICE: se impostato, questo valore viene utilizzato nel campo del servizio di grpc.health.v1.HealthCheckRequest quando viene chiamata la RPC grpc.health.v1.Health.Check.
    • Facoltativo. SUCCESS_THRESHOLD: il numero minimo di successi consecutivi necessari affinché il probe venga considerato riuscito dopo un errore. Il valore predefinito è 2.
    • Facoltativo. FAILURE_THRESHOLD: il numero di tentativi del probe prima di segnalare un errore, che comporta l'interruzione della ricezione del traffico da parte dell'istanza. Il valore predefinito è 3.
    • Facoltativo. TIMEOUT: 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 300. 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 e 300. Il valore predefinito è 10 secondi.

Terraform

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

Idoneità HTTP

Aggiungi un endpoint HTTP/1 (l'impostazione predefinita di Cloud Run, non HTTP/2) nel codice del servizio 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 controllo di integrità HTTP sono accessibili esternamente e seguono gli stessi principi di qualsiasi altro endpoint di servizio HTTP esposto esternamente.

Configura il servizio Cloud Run con l'attributo readiness_probe come mostrato:

resource "google_cloud_run_v2_service" "default" {
  name     = "SERVICE"
  location = "REGION"
  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "IMAGE_URL"

      readiness_probe {
        timeout_seconds   = TIMEOUT
        period_seconds    = PERIOD
        success_threshold = SUCCESS_THRESHOLD
        failure_threshold = FAILURE_THRESHOLD

        http_get {
          path = "PATH"
          port = CONTAINER_PORT
        }
      }
    }
  }
}

Sostituisci quanto segue:

  • REGION: la regione Google Cloud , ad esempio us-central1.
  • SERVICE: il nome del servizio 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 il formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • Facoltativo. PATH: il percorso relativo all'endpoint HTTP, ad esempio /are_you_ready. Il percorso predefinito è /.
  • Facoltativo. CONTAINER_PORT: la porta del container utilizzata per il servizio. La porta predefinita è la porta di ingresso principale.
  • Facoltativo. SUCCESS_THRESHOLD: il numero minimo di successi consecutivi necessari affinché il probe venga considerato riuscito dopo un errore. Il valore predefinito è 2.
  • Facoltativo. FAILURE_THRESHOLD: il numero di tentativi del probe prima di segnalare un errore, che comporta l'interruzione della ricezione del traffico da parte dell'istanza. Il valore predefinito è 3.
  • Facoltativo. TIMEOUT: 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 300. 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 e 300. Il valore predefinito è 10 secondi.

Idoneità gRPC

Assicurati che l'immagine container implementi il protocollo di controllo di integrità gRPC.

Configura il servizio Cloud Run con l'attributo readiness_probe come mostrato:

resource "google_cloud_run_v2_service" "default" {
  name     = "SERVICE"
  location = "REGION"
  deletion_protection = "true"

  template {
    containers {
      image = "IMAGE_URL"

      readiness_probe {
        timeout_seconds   = TIMEOUT
        period_seconds    = PERIOD
        success_threshold = SUCCESS_THRESHOLD
        failure_threshold = FAILURE_THRESHOLD

        grpc {
          service = "GRPC_SERVICE"
          port = CONTAINER_PORT
        }
      }
    }
  }
}

Sostituisci quanto segue:

  • REGION: la regione Google Cloud , ad esempio us-central1.
  • SERVICE: il nome del servizio 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 il formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • Facoltativo. CONTAINER_PORT: la porta del container utilizzata per il servizio. La porta predefinita è la porta di ingresso principale.
  • Facoltativo. GRPC_SERVICE: se impostato, questo valore viene utilizzato nel campo del servizio di grpc.health.v1.HealthCheckRequest quando viene chiamata la RPC grpc.health.v1.Health.Check.
  • Facoltativo. SUCCESS_THRESHOLD: il numero minimo di successi consecutivi necessari affinché il probe venga considerato riuscito dopo un errore. Il valore predefinito è 2.
  • Facoltativo. FAILURE_THRESHOLD: il numero di tentativi del probe prima di segnalare un errore, che comporta l'interruzione della ricezione del traffico da parte dell'istanza. Il valore predefinito è 3.
  • Facoltativo. TIMEOUT: 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 300. 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 e 300. Il valore predefinito è 10 secondi.

Requisiti e comportamento del probe di idoneità

Tipo di probe Requisiti Comportamento
Idoneità HTTP Crea un endpoint di controllo di integrità HTTP
Utilizza HTTP/1
Il probe di idoneità viene avviato solo dopo che il probe di avvio è stato eseguito correttamente. Dopo la configurazione del probe e l'esito positivo di un eventuale probe di avvio, Cloud Run invia una richiesta GET HTTP all'endpoint del controllo di integrità (ad esempio /are_you_ready). Qualsiasi risposta 2XX o 3XX indica un esito positivo, mentre qualsiasi altra risposta indica un errore.

Se un'istanza non supera il probe di idoneità oltre il valore failureThreshold configurato, Cloud Run interrompe il routing delle nuove richieste all'istanza senza arrestarla e riprende il routing delle richieste una volta che l'istanza supera il probe di idoneità (successThreshold volte consecutive).
Idoneità gRPC Implementa il protocollo di controllo di integrità gRPC nel tuo servizio Cloud Run Il probe di idoneità viene avviato solo dopo che l'eventuale probe di avvio configurato è stato eseguito correttamente. Cloud Run invia una richiesta di controllo di integrità gRPC al servizio.

Se un'istanza non supera il probe di idoneità oltre il valore failureThreshold configurato, Cloud Run interrompe il routing delle nuove richieste all'istanza senza arrestarla e riprende il routing delle richieste una volta che l'istanza supera il probe di idoneità (successThreshold volte consecutive).

Allocazione della CPU

  • La CPU è sempre allocata durante l'esecuzione dei probe.
  • Tutti i probe vengono fatturati in base al consumo di CPU e memoria utilizzata, ma non è previsto alcun addebito basato sulle richieste.

Passaggi successivi