Controlli di integrità del container (servizi)

Puoi configurare probe di controllo di integrità all'avvio HTTP, TCP e gRPC, oltre a probe di attività HTTP e gRPC per servizi Cloud Run nuovi ed esistenti. Configura un avvio o un probe di attività per un servizio Cloud Run utilizzando il file YAML. La configurazione varia a seconda del tipo di probe.

Puoi usare i probe di controllo dell'attività per determinare quando riavviare un container, ad esempio per rilevare un deadlock in cui un servizio è in esecuzione, ma non in grado di fare progressi. In questo caso, il riavvio di un container può aumentare la disponibilità del servizio in caso di bug.

Puoi usare i probe di avvio per determinare quando un container è stato avviato ed è pronto ad accettare il traffico.

Quando configuri un probe di avvio, i controlli di attività vengono disabilitati finché il probe di avvio determina che il container non viene avviato, per evitare interferenze con l'avvio del servizio.

i probe di avvio sono particolarmente utili se utilizzi i controlli di attività sui container di avvio lento, poiché impediscono loro di arrestarsi prematuramente prima che i container siano attivi e in esecuzione.

Fatturazione e allocazione della CPU

  • La CPU viene allocata per ogni probe.
  • Tutti i probe vengono fatturati per il consumo di CPU e memoria, ma non è previsto alcun addebito basato su richiesta.

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

Configura probe di avvio

Puoi configurare probe HTTP, TCP e gRPC.

Configura un probe di avvio HTTP

Non esistono probe di avvio HTTP predefiniti per HTTP, ma puoi configurarne uno per il servizio Cloud Run. Tieni presente che l'utilizzo di un probe di controllo di integrità HTTP richiede la creazione di un endpoint di controllo di integrità HTTP corrispondente nel servizio per rispondere al probe. Inoltre, il servizio deve utilizzare HTTP/1 (valore predefinito di Cloud Run), non HTTP/2.

Dopo aver configurato il probe di avvio, Cloud Run effettua una richiesta GET HTTP all'endpoint del controllo di integrità del servizio (ad esempio, /ready). Qualsiasi risposta tra 200 e 400 è un risultato positivo, tutto il resto indica un errore.

Se il probe di avvio non va a buon fine entro il tempo specificato (failureThreshold * periodSeconds), che non può superare 240 secondi, 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, il probe di attività HTTP viene avviato.

Puoi configurare un probe di avvio HTTP utilizzando la console Google Cloud per un servizio esistente o YAML per un servizio nuovo o esistente:

Console

  1. Vai a Cloud Run

  2. Fai clic sul servizio che vuoi configurare.

  3. Fai clic sulla scheda YAML.

  4. Fai clic su Modifica e configura l'attributo startupProbe come mostrato:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
        spec:
          containers:
          - image: IMAGE_URL
            startupProbe:
              httpGet:
                path: PATH
                port: CONTAINER_PORT
                httpHeaders:
                  - name: HEADER_NAME
                    value: HEADER_VALUE
              initialDelaySeconds: DELAY
              timeoutSeconds: TIMEOUT
              failureThreshold: THRESHOLD
              periodSeconds: PERIOD

    sostituisci

    • SERVICE con il nome del servizio Cloud Run.
    • IMAGE_URL con un riferimento all'immagine container, ad esempio, us-docker.pkg.dev/cloudrun/container/hello:latest
    • PATH con il percorso relativo per l'endpoint HTTP, ad esempio /ready.
    • (FACOLTATIVO) CONTAINER_PORT deve essere impostato sulla porta del container utilizzata per il tuo servizio.
    • (FACOLTATIVO) httpHeaders può essere utilizzato per fornire più intestazioni personalizzate o ripetute utilizzando i campi HEADER_NAME e HEADER_VALUE, come mostrato.
    • (FACOLTATIVO) DELAY con numero di secondi di attesa dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 240 secondi. Il valore predefinito è 0 secondi.
    • (FACOLTATIVO) TIMEOUT con il numero di secondi di attesa fino al timeout del probe. Questo valore non può superare il valore specificato per periodSeconds. Specifica un valore compreso tra 1 e 240. Il valore predefinito è 1.
    • (FACOLTATIVO) THRESHOLD con il numero di volte per riprovare il probe prima di contrassegnare il container come Non pronto. Il valore predefinito è 3.
    • (FACOLTATIVO) PERIOD con il periodo (in secondi) in cui eseguire il probe. Ad esempio, 2 per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 secondo e 240 secondi. Il valore predefinito è 10 secondi.
  5. Fai clic su Salva ed esegui il deployment di una nuova revisione.

YAML

Puoi scaricare e visualizzare le configurazioni di servizio esistenti utilizzando il comando gcloud run services describe --format export, che genera risultati puliti in formato YAML. Successivamente, potrai modificare i campi descritti di seguito e caricare il file YAML modificato utilizzando il comando gcloud run services replace. Assicurati di modificare solo i campi come documentato.

  1. Per visualizzare e scaricare la configurazione:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Configura l'attributo startupProbe come mostrato di seguito:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
        spec:
          containers:
          - image: IMAGE_URL
            startupProbe:
              httpGet:
                path: PATH
                port: CONTAINER_PORT
                httpHeaders:
                  - name: HEADER_NAME
                    value: HEADER_VALUE
              initialDelaySeconds: DELAY
              timeoutSeconds: TIMEOUT
              failureThreshold: THRESHOLD
              periodSeconds: PERIOD

    sostituisci

    • SERVICE con il nome del servizio Cloud Run.
    • IMAGE_URL con un riferimento all'immagine container, ad esempio, us-docker.pkg.dev/cloudrun/container/hello:latest
    • PATH con il percorso relativo per l'endpoint HTTP, ad esempio /ready.
    • (FACOLTATIVO) CONTAINER_PORT deve essere impostato sulla porta del container utilizzata per il tuo servizio.
    • (FACOLTATIVO) httpHeaders può essere utilizzato per fornire più intestazioni personalizzate o ripetute utilizzando i campi HEADER_NAME e HEADER_VALUE, come mostrato.
    • (FACOLTATIVO) DELAY con numero di secondi di attesa dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 240 secondi. Il valore predefinito è 0 secondi.
    • (FACOLTATIVO) TIMEOUT con il numero di secondi di attesa fino al timeout del probe. Questo valore non può superare il valore specificato per periodSeconds. Specifica un valore compreso tra 1 e 240. Il valore predefinito è 1.
    • (FACOLTATIVO) THRESHOLD con il numero di volte per riprovare il probe prima di contrassegnare il container come Non pronto. Il valore predefinito è 3.
    • (FACOLTATIVO) PERIOD con il periodo (in secondi) in cui eseguire il probe. Ad esempio, 2 per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 secondo e 240 secondi. Il valore predefinito è 10 secondi.
  3. Sostituisci il servizio con la nuova configurazione utilizzando il seguente comando:

    gcloud run services replace service.yaml

Terraform

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

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

resource "google_cloud_run_service" "default" {
  provider = google-beta
  name     = "cloudrun-service-healthcheck"
  location = "us-central1"

  template {
    spec {
      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 = "/"
            http_headers {
              name  = "Access-Control-Allow-Origin"
              value = "*"
            }
          }
        }
      }
    }
  }

  traffic {
    percent         = 100
    latest_revision = true
  }
}

Crea endpoint di controllo di integrità HTTP

Se configuri il servizio Cloud Run per un probe di avvio o un probe di attività HTTP, devi aggiungere un endpoint nel codice di servizio per rispondere al probe. L'endpoint può avere il nome che preferisci, ad esempio /startup o /ready, ma deve corrispondere ai valori specificati per path nella configurazione del probe. Ad esempio, se specifichi /ready per un probe di avvio HTTP, specifica path nella configurazione del probe come mostrato:

startupProbe:
  httpGet:
    path: /ready

Gli endpoint HTTP Healthcheck sono accessibili esternamente e seguono gli stessi principi degli altri endpoint HTTP dei servizi esposti esternamente.

Configura un probe di avvio TCP

Un probe di avvio TCP viene configurato automaticamente con valori predefiniti per un nuovo servizio Cloud Run se non configuri autonomamente un probe di avvio. Il probe predefinito è equivalente al seguente:

startupProbe:
  tcpSocket:
    port: CONTAINER_PORT
  timeoutSeconds: 240
  periodSeconds: 240
  failureThreshold: 1

dove CONTAINER_PORT è impostato sulla porta del container utilizzata per il tuo servizio.

Puoi modificare questi valori predefiniti seguendo le istruzioni riportate in questa sezione.

Per i probe di avvio TCP, Cloud Run effettua una connessione TCP per aprire il socket TCP sulla porta specificata. Se Cloud Run non è in grado di stabilire una connessione, indica un errore.

Se il probe di avvio non va a buon fine entro il tempo specificato (failureThreshold * periodSeconds), che non può superare 240 secondi, il container viene arrestato.

Puoi configurare un probe di avvio TCP utilizzando la console Google Cloud per un servizio esistente o YAML per un servizio nuovo o esistente:

Console

  1. Vai a Cloud Run

  2. Fai clic sul servizio che vuoi configurare.

  3. Fai clic sulla scheda YAML.

  4. Fai clic su Modifica e 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:
              failureThreshold: THRESHOLD
              initialDelaySeconds: DELAY
              timeoutSeconds: TIMEOUT
              periodSeconds: PERIOD
              tcpSocket:
                port: CONTAINER_PORT

    sostituisci

    • SERVICE con il nome del servizio Cloud Run.
    • IMAGE_URL con un riferimento all'immagine container, ad esempio, us-docker.pkg.dev/cloudrun/container/hello:latest
    • (FACOLTATIVO) CONTAINER_PORT deve essere impostato sulla porta del container utilizzata per il tuo servizio.
    • (Facoltativo) DELAY con numero di secondi di attesa dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 240 secondi. Il valore predefinito è 0 secondi.
    • (FACOLTATIVO) TIMEOUT con il numero di secondi di attesa fino al timeout del probe. Questo valore non può superare il valore specificato per periodSeconds. Specifica un valore compreso tra 1 e 240. Il valore predefinito è 1.
    • (Facoltativo) THRESHOLD con il numero di volte per riprovare il probe prima di contrassegnare il container come Non pronto. Il valore predefinito è 3.
    • (Facoltativo) PERIOD con il periodo (in secondi) in cui eseguire il probe. Ad esempio, 2 per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 secondo e 240 secondi. Il valore predefinito è 10 secondi.
  5. Fai clic su Salva ed esegui il deployment di una nuova revisione.

YAML

Puoi scaricare e visualizzare le configurazioni di servizio esistenti utilizzando il comando gcloud run services describe --format export, che genera risultati puliti in formato YAML. Successivamente, potrai modificare i campi descritti di seguito e caricare il file YAML modificato utilizzando il comando gcloud run services replace. Assicurati di modificare solo i campi come documentato.

  1. Per visualizzare e scaricare la configurazione:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Configura l'attributo startupProbe come mostrato di seguito:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
        spec:
          containers:
          - image: IMAGE_URL
            startupProbe:
              tcpSocket:
                port: CONTAINER_PORT
              initialDelaySeconds: DELAY
              timeoutSeconds: TIMEOUT
              failureThreshold: THRESHOLD
              periodSeconds: PERIOD

    Sostituisci

    • SERVICE con il nome del servizio Cloud Run.
    • IMAGE_URL con un riferimento all'immagine container, ad esempio, us-docker.pkg.dev/cloudrun/container/hello:latest
    • (FACOLTATIVO) CONTAINER_PORT deve essere impostato sulla porta del container utilizzata per il tuo servizio.
    • DELAY con numero di secondi da attendere dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 240 secondi. Il valore predefinito è 0 secondi.
    • (FACOLTATIVO) TIMEOUT con il numero di secondi di attesa fino al timeout del probe. Questo valore non può superare il valore specificato per periodSeconds. Specifica un valore compreso tra 1 e 240. Il valore predefinito è 1.
    • THRESHOLD con il numero di volte per riprovare il probe prima di contrassegnare il container come Non pronto. Il valore predefinito è 3.
    • PERIOD con il periodo (in secondi) in cui eseguire il probe. Ad esempio, 2 per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 secondo e 240 secondi. Il valore predefinito è 10 secondi.
  3. Sostituisci il servizio con la nuova configurazione utilizzando il seguente comando:

    gcloud run services replace service.yaml

Terraform

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

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

resource "google_cloud_run_service" "default" {
  provider = google-beta
  name     = "cloudrun-service-healthcheck"
  location = "us-central1"

  template {
    spec {
      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
          }
        }
      }
    }
  }

  traffic {
    percent         = 100
    latest_revision = true
  }
}

Configura un probe di avvio gRPC

Per utilizzare un probe di avvio gRPC, devi implementare il protocollo per il controllo di integrità gRPC nel servizio Cloud Run, quindi configurare il probe di conseguenza, come descritto in questa sezione.

Puoi configurare un probe di avvio gRPC utilizzando la console Google Cloud per un servizio esistente o YAML per un servizio nuovo o esistente:

Console

  1. Vai a Cloud Run

  2. Fai clic sul servizio che vuoi configurare.

  3. Fai clic sulla scheda YAML.

  4. Fai clic su Modifica e configura l'attributo startupProbe come mostrato:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
        spec:
          containers:
          - image: IMAGE_URL
            startupProbe:
              grpc:
                service: GRPC_SERVICE
                port: CONTAINER_PORT
              initialDelaySeconds: DELAY
              timeoutSeconds: TIMEOUT
              failureThreshold: THRESHOLD
              periodSeconds: PERIOD

    Sostituisci

    • SERVICE con il nome del servizio Cloud Run.
    • IMAGE_URL con un riferimento all'immagine container, ad esempio, us-docker.pkg.dev/cloudrun/container/hello:latest
    • (FACOLTATIVO) CONTAINER_PORT deve essere impostato sulla porta del container utilizzata per il tuo servizio.
    • GRPC_SERVICE con il nome del servizio gRPC a cui inviare il controllo di integrità.
    • (Facoltativo) DELAY con numero di secondi di attesa dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 240 secondi. Il valore predefinito è 0 secondi.
    • (FACOLTATIVO) TIMEOUT con il numero di secondi di attesa fino al timeout del probe. Questo valore non può superare il valore specificato per periodSeconds. Specifica un valore compreso tra 1 e 240. Il valore predefinito è 1.
    • (Facoltativo) THRESHOLD con il numero di volte per riprovare il probe prima di contrassegnare il container come Non pronto. Il valore predefinito è 3.
    • (Facoltativo) PERIOD con il periodo (in secondi) in cui eseguire il probe. Ad esempio, 2 per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 secondo e 240 secondi. Il valore predefinito è 10 secondi.
  5. Fai clic su Salva ed esegui il deployment di una nuova revisione.

YAML

Puoi scaricare e visualizzare le configurazioni di servizio esistenti utilizzando il comando gcloud run services describe --format export, che genera risultati puliti in formato YAML. Successivamente, potrai modificare i campi descritti di seguito e caricare il file YAML modificato utilizzando il comando gcloud run services replace. Assicurati di modificare solo i campi come documentato.

  1. Per visualizzare e scaricare la configurazione:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Configura l'attributo startupProbe come mostrato di seguito:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
        spec:
          containers:
          - image: IMAGE_URL
            startupProbe:
              grpc:
                service: GRPC_SERVICE
                port: CONTAINER_PORT
              initialDelaySeconds: DELAY
              timeoutSeconds: TIMEOUT
              failureThreshold: THRESHOLD
              periodSeconds: PERIOD

    Sostituisci

    • SERVICE con il nome del servizio Cloud Run.
    • IMAGE_URL con un riferimento all'immagine container, ad esempio, us-docker.pkg.dev/cloudrun/container/hello:latest
    • GRPC_SERVICE con il nome del servizio gRPC a cui inviare il controllo di integrità.
    • (FACOLTATIVO) CONTAINER_PORT deve essere impostato sulla porta del container utilizzata per il tuo servizio.
      • (FACOLTATIVO) DELAY con numero di secondi di attesa dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 240 secondi. Il valore predefinito è 0 secondi.
      • (FACOLTATIVO) TIMEOUT con il numero di secondi di attesa fino al timeout del probe. Questo valore non può superare il valore specificato per periodSeconds. Specifica un valore compreso tra 1 e 240. Il valore predefinito è 1.
      • (FACOLTATIVO) THRESHOLD con il numero di volte per riprovare il probe prima di contrassegnare il container come Non pronto. Il valore predefinito è 3.
      • (FACOLTATIVO) PERIOD con il periodo (in secondi) in cui eseguire il probe. Ad esempio, 2 per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 secondo e 240 secondi. Il valore predefinito è 10 secondi.
  3. Sostituisci il servizio con la nuova configurazione utilizzando il seguente comando:

    gcloud run services replace service.yaml

Terraform

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

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

resource "google_cloud_run_service" "default" {
  provider = google-beta
  name     = "cloudrun-service-healthcheck"
  location = "us-central1"
  project = "tf-healthchecks-grpc-probe-1"

  template {
    spec {
      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"
          }
        }
      }
    }
  }

  traffic {
    percent         = 100
    latest_revision = true
  }
}

Configura un probe di attività

Puoi configurare probe di attività HTTP e gRPC.

Configura un probe di attività HTTP

Se configuri un probe di avvio HTTP, il probe di attività viene avviato solo dopo l'esito positivo del probe di avvio. Tieni presente che l'utilizzo di un probe di controllo di integrità HTTP richiede la creazione di un endpoint di controllo di integrità HTTP corrispondente nel servizio per rispondere al probe. Inoltre, il servizio deve utilizzare HTTP/1 (valore predefinito di Cloud Run), non HTTP/2.

Dopo aver configurato il probe di attività e se ogni probe di avvio ha esito positivo, Cloud Run effettua una richiesta GET HTTP all'endpoint del controllo di integrità del servizio (ad esempio, /health). Qualsiasi risposta tra 200 e 400 è un'operazione riuscita, tutto il resto indica un errore.

Se il probe di avvio non va a buon fine entro il tempo specificato (failureThreshold * periodSeconds), che non può superare 240 secondi, il container viene arrestato.

Se il probe di attività HTTP non va a buon fine entro il tempo specificato, il container viene arrestato e quindi viene riavviato dalla richiesta in entrata successiva.

Puoi configurare un probe di attività HTTP utilizzando la console Google Cloud per un servizio esistente o YAML per un servizio nuovo o esistente:

Console

  1. Vai a Cloud Run

  2. Fai clic sul servizio che vuoi configurare.

  3. Fai clic sulla scheda YAML.

  4. Fai clic su Modifica e configura l'attributo livenessProbe come mostrato:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
        spec:
          containers:
            image: IMAGE_URL
            livenessProbe:
              httpGet:
                path: PATH
                port: CONTAINER_PORT
                httpHeaders:
                  - name: HEADER_NAME
                    value: HEADER_VALUE
              initialDelaySeconds: DELAY
              timeoutSeconds: TIMEOUT
              failureThreshold: THRESHOLD
              periodSeconds: PERIOD

    Sostituisci

    • SERVICE con il nome del servizio Cloud Run.
    • IMAGE_URL con un riferimento all'immagine container, ad esempio, us-docker.pkg.dev/cloudrun/container/hello:latest
    • PATH con il percorso relativo per l'endpoint HTTP, ad esempio /ready.
    • (FACOLTATIVO) CONTAINER_PORT deve essere impostato sulla porta del container utilizzata per il tuo servizio.
    • (FACOLTATIVO) httpHeaders può essere utilizzato per fornire più intestazioni personalizzate o ripetute utilizzando i campi HEADER_NAME e HEADER_VALUE, come mostrato.
    • (FACOLTATIVO) DELAY con numero di secondi di attesa dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 240 secondi. Il valore predefinito è 0 secondi.
    • (FACOLTATIVO) TIMEOUT con il numero di secondi di attesa fino al 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) THRESHOLD con il numero di volte per riprovare il probe prima di contrassegnare il container come Non pronto. Il valore predefinito è 3.
    • (FACOLTATIVO) PERIOD con il periodo (in secondi) in cui eseguire il probe. Ad esempio, 2 per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 secondo e 3600 secondi. Il valore predefinito è 10 secondi.
  5. Fai clic su Salva ed esegui il deployment di una nuova revisione.

YAML

Puoi scaricare e visualizzare le configurazioni di servizio esistenti utilizzando il comando gcloud run services describe --format export, che genera risultati puliti in formato YAML. Successivamente, potrai modificare i campi descritti di seguito e caricare il file YAML modificato utilizzando il comando gcloud run services replace. Assicurati di modificare solo i campi come documentato.

  1. Per visualizzare e scaricare la configurazione:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Configura l'attributo livenessProbe come mostrato di seguito:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
        spec:
          containers:
          - image: IMAGE_URL
            livenessProbe:
              httpGet:
                path: PATH
                port: CONTAINER_PORT
                httpHeaders:
                  - name: HEADER_NAME
                    value: HEADER_VALUE
              initialDelaySeconds: DELAY
              timeoutSeconds: TIMEOUT
              failureThreshold: THRESHOLD
              periodSeconds: PERIOD

    Sostituisci

    • SERVICE con il nome del servizio Cloud Run.
    • IMAGE_URL con un riferimento all'immagine container, ad esempio, us-docker.pkg.dev/cloudrun/container/hello:latest
    • PATH con il percorso relativo per l'endpoint HTTP, ad esempio /ready.
    • (FACOLTATIVO) CONTAINER_PORT deve essere impostato sulla porta del container utilizzata per il tuo servizio.
    • (FACOLTATIVO) httpHeaders può essere utilizzato per fornire più intestazioni personalizzate o ripetute utilizzando i campi HEADER_NAME e HEADER_VALUE, come mostrato.
    • (FACOLTATIVO) DELAY con numero di secondi di attesa dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 240 secondi. Il valore predefinito è 0 secondi.
    • (FACOLTATIVO) TIMEOUT con il numero di secondi di attesa fino al 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) THRESHOLD con il numero di volte per riprovare il probe prima di contrassegnare il container come Non pronto. Il valore predefinito è 3.
    • (FACOLTATIVO) PERIOD con il periodo (in secondi) in cui eseguire il probe. Ad esempio, 2 per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 secondo e 3600 secondi. Il valore predefinito è 10 secondi.
  3. Sostituisci il servizio con la nuova configurazione utilizzando il seguente comando:

    gcloud run services replace service.yaml

Terraform

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

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

resource "google_cloud_run_service" "default" {
  provider = google-beta
  name     = "cloudrun-service-healthcheck"
  location = "us-central1"

  template {
    spec {
      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 = "/"
            http_headers {
              name  = "Access-Control-Allow-Origin"
              value = "*"
            }
          }
        }
      }
    }
  }

  traffic {
    percent         = 100
    latest_revision = true
  }
}

Dopo la configurazione del probe HTTP, devi anche creare un endpoint del controllo di integrità per rispondere al probe.

Configura un probe di attività gRPC

Se configuri un probe di avvio gRPC, il probe di attività viene avviato solo dopo che il probe di avvio è riuscito. Tieni presente che l'utilizzo di un probe di controllo di integrità gRPC richiede l'implementazione del protocollo per il controllo di integrità gRPC nel servizio Cloud Run.

Una volta configurato il probe di attività e dopo che qualsiasi probe di avvio ha esito positivo, Cloud Run effettua una richiesta di controllo di integrità al servizio.

Se il probe di avvio non va a buon fine entro il tempo specificato (failureThreshold * periodSeconds), che non può superare 240 secondi, il container viene arrestato.

Se il probe di attività gRPC non riesce entro il tempo specificato, il container viene arrestato e poi viene riavviato dalla richiesta in entrata successiva.

Puoi configurare un probe di attività gRPC utilizzando la console Google Cloud per un servizio esistente o YAML per un servizio nuovo o esistente:

Console

  1. Vai a Cloud Run

  2. Fai clic sul servizio che vuoi configurare.

  3. Fai clic sulla scheda YAML.

  4. Fai clic su Modifica e configura l'attributo livenessProbe come mostrato:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
        spec:
          containers:
            image: IMAGE_URL
            livenessProbe:
              grpc:
                port: CONTAINER_PORT
                service: GRPC_SERVICE
              initialDelaySeconds: DELAY
              timeoutSeconds: TIMEOUT
              failureThreshold: THRESHOLD
              periodSeconds: PERIOD

    Sostituisci

    • SERVICE con il nome del servizio Cloud Run.
    • IMAGE_URL con un riferimento all'immagine container, ad esempio, us-docker.pkg.dev/cloudrun/container/hello:latest
    • (FACOLTATIVO) CONTAINER_PORT deve essere impostato sulla porta del container utilizzata per il tuo servizio.
    • GRPC_SERVICE con il nome del servizio gRPC a cui inviare il controllo di integrità.
    • (FACOLTATIVO) DELAY con numero di secondi di attesa dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 240 secondi. Il valore predefinito è 0 secondi.
    • (FACOLTATIVO) TIMEOUT con il numero di secondi di attesa fino al 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) THRESHOLD con il numero di volte per riprovare il probe prima di contrassegnare il container come Non pronto. Il valore predefinito è 3.
    • (FACOLTATIVO) PERIOD con il periodo (in secondi) in cui eseguire il probe. Ad esempio, 2 per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 secondo e 3600 secondi. Il valore predefinito è 10 secondi.
  5. Fai clic su Salva ed esegui il deployment di una nuova revisione.

YAML

Puoi scaricare e visualizzare le configurazioni di servizio esistenti utilizzando il comando gcloud run services describe --format export, che genera risultati puliti in formato YAML. Successivamente, potrai modificare i campi descritti di seguito e caricare il file YAML modificato utilizzando il comando gcloud run services replace. Assicurati di modificare solo i campi come documentato.

  1. Per visualizzare e scaricare la configurazione:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Configura l'attributo livenessProbe come mostrato di seguito:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
        spec:
          containers:
          - image: IMAGE_URL
            livenessProbe:
              grpc:
                port: CONTAINER_PORT
                service: GRPC_SERVICE
              initialDelaySeconds: DELAY
              timeoutSeconds: TIMEOUT
              failureThreshold: THRESHOLD
              periodSeconds: PERIOD

    Sostituisci

    • SERVICE con il nome del servizio Cloud Run.
    • IMAGE_URL con un riferimento all'immagine container, ad esempio, us-docker.pkg.dev/cloudrun/container/hello:latest
    • (FACOLTATIVO) CONTAINER_PORT deve essere impostato sulla porta del container utilizzata per il tuo servizio.
    • GRPC_SERVICE con il nome del servizio gRPC a cui inviare il controllo di integrità.
    • (FACOLTATIVO) DELAY con numero di secondi di attesa dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 240 secondi. Il valore predefinito è 0 secondi.
    • (FACOLTATIVO) TIMEOUT con il numero di secondi di attesa fino al 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) THRESHOLD con il numero di volte per riprovare il probe prima di contrassegnare il container come Non pronto. Il valore predefinito è 3.
    • (FACOLTATIVO) PERIOD con il periodo (in secondi) in cui eseguire il probe. Ad esempio, 2 per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 secondo e 3600 secondi. Il valore predefinito è 10 secondi.
  3. Sostituisci il servizio con la nuova configurazione utilizzando il seguente comando:

    gcloud run services replace service.yaml

Terraform

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

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

resource "google_cloud_run_service" "default" {
  provider = google-beta
  name     = "cloudrun-service-healthcheck"
  location = "us-central1"

  template {
    spec {
      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"
          }
        }
      }
    }
  }

  traffic {
    percent         = 100
    latest_revision = true
  }
}