Controlli di integrità del container (servizi)

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Puoi configurare probe di controllo di integrità all'avvio HTTP e TCP per servizi Cloud Run nuovi ed esistenti.

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

Configura probe di avvio

Qualsiasi modifica della configurazione determina la 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 seguenti tipi di probe:

  • probe di avvio HTTP
  • probe di avvio TCP

Configura un probe di avvio per un servizio Cloud Run utilizzando il file YAML. La configurazione varia a seconda del tipo di probe.

Configura un probe di avvio HTTP

Non esistono probe di avvio HTTP predefiniti per HTTP, ma puoi configurarne uno per il tuo servizio Cloud Run. Tieni presente che l'utilizzo di un probe di controllo di integrità HTTP richiede di creare un endpoint di integrità HTTP corrispondente nel servizio per rispondere al probe.

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

Se il probe di avvio non riesce entro il tempo specificato (failureThreshold * periodSeconds) e non può superare i 240 secondi, il container viene arrestato.

Puoi configurare un probe di avvio HTTP utilizzando Google Cloud Console 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 di seguito:

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

    sostituisci

    • SERVICE con il nome del tuo servizio Cloud Run.
    • IMAGE_URL con un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest
    • PATH con il percorso relativo all'endpoint HTTP, ad esempio /ready.
    • (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 da attendere dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 240 secondi. Il valore predefinito è 0 secondi.
    • (FACOLTATIVO) TIMEOUT con il numero di secondi da attendere 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 tentativi per ripetere il probe prima di contrassegnare il container come Non pronto. Il valore predefinito è 3.
    • (FACOLTATIVO) PERIOD con la frequenza (in secondi) da usare per il probe. 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 la configurazione del servizio esistente utilizzando il comando gcloud run services describe --format export, che restituisce risultati puliti in formato YAML. Puoi quindi modificare i campi descritti di seguito e caricare il file YAML modificato con 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
                httpHeaders:
                  - name: HEADER_NAME
                    value: HEADER_VALUE
              initialDelaySeconds: DELAY
              timeoutSeconds: TIMEOUT
              failureThreshold: THRESHOLD
              periodSeconds: PERIOD
    

    sostituisci

    • SERVICE con il nome del tuo servizio Cloud Run.
    • IMAGE_URL con un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest
    • PATH con il percorso relativo all'endpoint HTTP, ad esempio /ready.
    • (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 da attendere dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 240 secondi. Il valore predefinito è 0 secondi.
    • (FACOLTATIVO) TIMEOUT con il numero di secondi da attendere 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 tentativi per ripetere il probe prima di contrassegnare il container come Non pronto. Il valore predefinito è 3.
    • (FACOLTATIVO) PERIOD con la frequenza (in secondi) da usare per il probe. 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

Crea endpoint per il controllo di integrità HTTP

Se configuri il tuo servizio Cloud Run per un probe di avvio HTTP, devi aggiungere un endpoint nel codice di servizio per rispondere al probe. L'endpoint può avere qualsiasi nome, 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, specifichi path nella configurazione del probe come mostrato:

startupProbe:
  httpGet:
    path: /ready

Configura un probe di avvio TCP

Se non configuri autonomamente un probe di avvio, il probe di avvio TCP viene configurato automaticamente con i valori predefiniti per un nuovo servizio Cloud Run. Il probe predefinito equivale al seguente:

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

dove port è già impostato sulla porta del container e rimarrà impostato sulla porta del container anche se provi a impostarlo quando aggiorni la configurazione del probe.

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, significa un errore.

Se il probe di avvio non riesce entro il tempo specificato (failureThreshold * periodSeconds) e non può superare i 240 secondi, il container viene arrestato.

Puoi configurare un probe di avvio TCP utilizzando Google Cloud Console 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 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
            failureThreshold: THRESHOLD
            periodSeconds: PERIOD
    

    sostituisci

    • SERVICE con il nome del tuo servizio Cloud Run.
    • IMAGE_URL con un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest
    • CONTAINER_PORT è già impostato su qualsiasi sia la porta del container. Rimarrà impostata sulla porta del container anche se tenti di impostarla quando aggiorni il probe.
    • 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.
    • THRESHOLD con il numero di tentativi per eseguire nuovamente il probe prima di contrassegnare il container come Non pronto. Il valore predefinito è 3.
    • PERIOD con la frequenza (in secondi) per eseguire il probe. 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 la configurazione del servizio esistente utilizzando il comando gcloud run services describe --format export, che restituisce risultati puliti in formato YAML. Puoi quindi modificare i campi descritti di seguito e caricare il file YAML modificato con 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
              failureThreshold: THRESHOLD
              periodSeconds: PERIOD
                

    sostituisci

    • SERVICE con il nome del tuo servizio Cloud Run.
    • IMAGE_URL con un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest
    • CONTAINER_PORT è già impostato su qualsiasi porta del container. Questo valore non deve essere modificato.
    • 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.
    • THRESHOLD con il numero di tentativi per eseguire nuovamente il probe prima di contrassegnare il container come Non pronto. Il valore predefinito è 3.
    • PERIOD con la frequenza (in secondi) per eseguire il probe. 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