Verificaciones de estado de contenedores (servicios)

Puedes configurar sondeos de verificación de estado de inicio de HTTP, TCP y gRPC, junto con sondeos de funcionamiento de HTTP y gRPC para servicios nuevos y existentes de Cloud Run. Configura un sondeo de inicio o funcionamiento para un servicio de Cloud Run mediante el archivo YAML. La configuración varía según el tipo de sondeo.

Puedes usar sondeos de verificación de funcionamiento para determinar cuándo reiniciar un contenedor, por ejemplo, a fin de detectar un interbloqueo en el que se ejecuta un servicio, pero no puede progresar. En este caso, reiniciar un contenedor puede aumentar la disponibilidad del servicio en caso de errores.

Puedes usar sondeos de inicio para determinar cuándo se inició un contenedor y está listo para aceptar tráfico.

Cuando configuras un sondeo de inicio, las verificaciones de funcionamiento se inhabilitan hasta que el sondeo de inicio determina que el contenedor se inicia para evitar interferencias en el inicio del servicio.

Los sondeos de inicio son útiles en especial si usas verificaciones en funcionamiento en contenedores de inicio lento, ya que evita que se cierren prematuramente antes de que los contenedores estén en funcionamiento.

Ten en cuenta que, cuando un servicio experimenta fallas repetidas de sondeo o inicio de funcionamiento, Cloud Run limita los reinicios de las instancias para evitar bucles de fallas no controlados.

Facturación y asignación de CPU

  • La CPU se asigna para cada sondeo.
  • Todos los sondeos se facturan por el consumo de CPU y memoria, pero no se aplican cargos basados en solicitudes.

Cualquier cambio en la configuración conlleva la creación de una revisión nueva. Las revisiones posteriores también adoptarán esta configuración de manera automática, a menos que realices actualizaciones explícitas para cambiarla.

Configura sondeos de inicio

Puedes configurar sondeos de HTTP, TCP y gRPC.

Configura un sondeo de inicio HTTP

No hay sondeos de inicio HTTP predeterminados para HTTP, pero puedes configurar uno en el servicio de Cloud Run. Ten en cuenta que el uso de un sondeo de verificación de estado HTTP requiere que crees un extremo de verificación de estado HTTP correspondiente en tu servicio para responder al sondeo. Además, el servicio debe usar HTTP/1 (el valor predeterminado de Cloud Run), no HTTP/2.

Después de configurar el sondeo de inicio, Cloud Run realiza una solicitud GET HTTP al extremo de verificación de estado del servicio (por ejemplo, /ready). Cualquier respuesta entre 200 y 400 es un éxito, todo lo demás indica un error.

Si un sondeo de inicio no se completa de forma correcta dentro del tiempo especificado (failureThreshold * periodSeconds), que no puede superar los 240 segundos, el contenedor se cierra.

Si el sondeo de inicio HTTP es correcto dentro del tiempo especificado y configuraste un sondeo de funcionamiento de HTTP, se inicia el sondeo de funcionamiento de HTTP.

Puedes configurar un sondeo de inicio HTTP con la consola de Google Cloud para un servicio existente, o YAML para un servicio nuevo o existente:

Consola

  1. Ir a Cloud Run

  2. Haz clic en el servicio que deseas configurar.

  3. Haz clic en la pestaña YAML.

  4. Haz clic en Editar y configura el atributo startupProbe como se muestra a continuación:

    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

    replace

    • SERVICE por el nombre del servicio de Cloud Run
    • IMAGE_URL por una referencia a la imagen del contenedor, como us-docker.pkg.dev/cloudrun/container/hello:latest Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL tiene el formato REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • PATH por la ruta relativa al extremo HTTP, por ejemplo, /ready.
    • (OPCIONAL) CONTAINER_PORT se debe configurar como el puerto del contenedor que se usa para el servicio.
    • Se puede usar httpHeaders para proporcionar varios encabezados personalizados o repetidos mediante los campos HEADER_NAME y HEADER_VALUE (opcional).
    • DELAY con la cantidad de segundos que se espera después de que el contenedor se inició antes de realizar el primer sondeo (opcional). Especifica un valor de 0 segundos a 240 segundos. El valor predeterminado es 0 segundos.
    • TIMEOUT (opcional) por la cantidad de segundos que se espera hasta que se agote el tiempo de espera del sondeo. Este valor no puede exceder el valor especificado para periodSeconds. Especifica un valor de 1 a 240. El valor predeterminado es 1.
    • (Opcional) THRESHOLD por la cantidad de veces que se debe reintentar el sondeo antes de marcar el contenedor como No listo. El valor predeterminado es 3.
    • PERIOD con el período (en segundos) en el que se realizará el sondeo (OPCIONAL). Por ejemplo, 2 para realizar el sondeo cada 2 segundos. Especifica un valor de 1 segundo a 240 segundos. El valor predeterminado es 10 segundos.
  5. Haz clic en Guardar e implementar nueva revisión.

YAML

Puedes descargar y ver las configuraciones del servicio existente mediante el comando gcloud run services describe --format export, que genera resultados limpios en formato YAML. Luego, puedes modificar los campos que se describen a continuación y subir el YAML modificado mediante el comando gcloud run services replace. Asegúrate de modificar los campos tal como se indica en la documentación.

  1. Para ver y descargar la configuración:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Configura el atributo startupProbe como se muestra a continuación:

    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

    replace

    • SERVICE por el nombre del servicio de Cloud Run
    • IMAGE_URL por una referencia a la imagen del contenedor, como us-docker.pkg.dev/cloudrun/container/hello:latest Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL tiene el formato REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • PATH por la ruta relativa al extremo HTTP, por ejemplo, /ready.
    • (OPCIONAL) CONTAINER_PORT se debe configurar como el puerto del contenedor que se usa para el servicio.
    • Se puede usar httpHeaders para proporcionar varios encabezados personalizados o repetidos mediante los campos HEADER_NAME y HEADER_VALUE (opcional).
    • DELAY con la cantidad de segundos que se espera después de que el contenedor se inició antes de realizar el primer sondeo (opcional). Especifica un valor de 0 segundos a 240 segundos. El valor predeterminado es 0 segundos.
    • TIMEOUT (opcional) por la cantidad de segundos que se espera hasta que se agote el tiempo de espera del sondeo. Este valor no puede exceder el valor especificado para periodSeconds. Especifica un valor de 1 a 240. El valor predeterminado es 1.
    • (Opcional) THRESHOLD por la cantidad de veces que se debe reintentar el sondeo antes de marcar el contenedor como No listo. El valor predeterminado es 3.
    • PERIOD con el período (en segundos) en el que se realizará el sondeo (OPCIONAL). Por ejemplo, 2 para realizar el sondeo cada 2 segundos. Especifica un valor de 1 segundo a 240 segundos. El valor predeterminado es 10 segundos.
  3. Reemplaza el servicio por la configuración nueva mediante el siguiente comando:

    gcloud run services replace service.yaml

Terraform

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

Configura el servicio de Cloud Run con el atributo startup_probe como se muestra a continuación:

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

  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 = "*"
          }
        }
      }
    }
  }
}

Crea extremos de verificación de estado HTTP

Si configuras el servicio de Cloud Run para un sondeo de inicio o de funcionamiento de HTTP, debes agregar un extremo en el código de servicio para responder al sondeo. El extremo puede tener el nombre que desees, por ejemplo, /startup o /ready, pero deben coincidir con los valores que especifiques para path en la configuración del sondeo. Por ejemplo, si especificas /ready para un sondeo de inicio HTTP, debes especificar path en la configuración de sondeo, como se muestra a continuación:

startupProbe:
  httpGet:
    path: /ready

Los extremos de la verificación de estado de HTTP son accesibles de forma externa y siguen los mismos principios que cualquier otro extremo de servicio HTTP que se exponga de forma externa.

Configura un sondeo de inicio de TCP

Un sondeo de inicio de TCP se configura de forma automática con valores predeterminados para un servicio de Cloud Run nuevo si no configuras un sondeo de inicio por tu cuenta. El sondeo predeterminado es equivalente a lo siguiente:

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

En el ejemplo anterior, CONTAINER_PORT se configura como el puerto del contenedor que se usa para el servicio.

Puedes cambiar estos valores predeterminados según las instrucciones de esta sección.

En los sondeos de inicio de TCP, Cloud Run realiza una conexión TCP para abrir el socket de TCP en el puerto especificado. Si Cloud Run no puede establecer una conexión, indica un error.

Si un sondeo de inicio no se completa de forma correcta dentro del tiempo especificado (failureThreshold * periodSeconds), que no puede superar los 240 segundos, el contenedor se cierra.

Puedes configurar un sondeo de inicio de TCP con la consola de Google Cloud para un servicio existente o YAML para un servicio nuevo o existente:

Consola

  1. Ir a Cloud Run

  2. Haz clic en el servicio que deseas configurar.

  3. Haz clic en la pestaña YAML.

  4. Haz clic en Editar y configura el atributo startupProbe como se muestra a continuación:

    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

    replace

    • SERVICE por el nombre del servicio de Cloud Run
    • IMAGE_URL por una referencia a la imagen del contenedor, como us-docker.pkg.dev/cloudrun/container/hello:latest Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL tiene el formato REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • (OPCIONAL) CONTAINER_PORT se debe configurar como el puerto del contenedor que se usa para el servicio.
    • DELAY con la cantidad de segundos que se espera después de que el contenedor se inició antes de realizar el primer sondeo (opcional). Especifica un valor de 0 segundos a 240 segundos. El valor predeterminado es 0 segundos.
    • TIMEOUT (opcional) por la cantidad de segundos que se espera hasta que se agote el tiempo de espera del sondeo. Este valor no puede exceder el valor especificado para periodSeconds. Especifica un valor de 1 a 240. El valor predeterminado es 1.
    • THRESHOLD por la cantidad de veces que se debe reintentar el sondeo antes de marcar el contenedor como No listo (opcional). El valor predeterminado es 3.
    • PERIOD con el período (en segundos) en el que se realizará el sondeo (opcional). Por ejemplo, 2 para realizar el sondeo cada 2 segundos. Especifica un valor de 1 segundo a 240 segundos. El valor predeterminado es 10 segundos.
  5. Haz clic en Guardar e implementar nueva revisión.

YAML

Puedes descargar y ver las configuraciones del servicio existente mediante el comando gcloud run services describe --format export, que genera resultados limpios en formato YAML. Luego, puedes modificar los campos que se describen a continuación y subir el YAML modificado mediante el comando gcloud run services replace. Asegúrate de modificar los campos tal como se indica en la documentación.

  1. Para ver y descargar la configuración:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Configura el atributo startupProbe como se muestra a continuación:

    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

    Reemplazar

    • SERVICE por el nombre del servicio de Cloud Run
    • IMAGE_URL por una referencia a la imagen del contenedor, como us-docker.pkg.dev/cloudrun/container/hello:latest Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL tiene el formato REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • (OPCIONAL) CONTAINER_PORT se debe configurar como el puerto del contenedor que se usa para el servicio.
    • DELAY con una cantidad de segundos que se espera después de que el contenedor se inició antes de realizar el primer sondeo. Especifica un valor de 0 segundos a 240 segundos. El valor predeterminado es 0 segundos.
    • TIMEOUT (opcional) por la cantidad de segundos que se espera hasta que se agote el tiempo de espera del sondeo. Este valor no puede exceder el valor especificado para periodSeconds. Especifica un valor de 1 a 240. El valor predeterminado es 1.
    • THRESHOLD por la cantidad de veces que se debe reintentar el sondeo antes de marcar el contenedor como No listo El valor predeterminado es 3.
    • PERIOD por el período (en segundos) en el que se realizará el sondeo. Por ejemplo, 2 para realizar el sondeo cada 2 segundos. Especifica un valor de 1 segundo a 240 segundos. El valor predeterminado es 10 segundos.
  3. Reemplaza el servicio por la configuración nueva mediante el siguiente comando:

    gcloud run services replace service.yaml

Terraform

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

Configura el servicio de Cloud Run con el atributo startup_probe como se muestra a continuación:

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

  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
        }
      }
    }
  }
}

Configura un sondeo de inicio de gRPC

Para usar un sondeo de inicio de gRPC, debes implementar el protocolo de verificación de estado de gRPC en tu servicio de Cloud Run y, luego, configurar el sondeo según corresponda, como se describe en esta sección.

Puedes configurar un sondeo de inicio de gRCP con la consola de Google Cloud para un servicio existente o YAML para un servicio nuevo o existente:

Consola

  1. Ir a Cloud Run

  2. Haz clic en el servicio que deseas configurar.

  3. Haz clic en la pestaña YAML.

  4. Haz clic en Editar y configura el atributo startupProbe como se muestra a continuación:

    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

    Reemplazar

    • SERVICE por el nombre del servicio de Cloud Run
    • IMAGE_URL por una referencia a la imagen del contenedor, como us-docker.pkg.dev/cloudrun/container/hello:latest Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL tiene el formato REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • (OPCIONAL) CONTAINER_PORT se debe configurar como el puerto del contenedor que se usa para el servicio.
    • GRPC_SERVICE por el nombre del servicio de gRPC al que se enviará la verificación de estado.
    • DELAY con la cantidad de segundos que se espera después de que el contenedor se inició antes de realizar el primer sondeo (opcional). Especifica un valor de 0 segundos a 240 segundos. El valor predeterminado es 0 segundos.
    • TIMEOUT (opcional) por la cantidad de segundos que se espera hasta que se agote el tiempo de espera del sondeo. Este valor no puede exceder el valor especificado para periodSeconds. Especifica un valor de 1 a 240. El valor predeterminado es 1.
    • THRESHOLD por la cantidad de veces que se debe reintentar el sondeo antes de marcar el contenedor como No listo (opcional). El valor predeterminado es 3.
    • PERIOD con el período (en segundos) en el que se realizará el sondeo (opcional). Por ejemplo, 2 para realizar el sondeo cada 2 segundos. Especifica un valor de 1 segundo a 240 segundos. El valor predeterminado es 10 segundos.
  5. Haz clic en Guardar e implementar nueva revisión.

YAML

Puedes descargar y ver las configuraciones del servicio existente mediante el comando gcloud run services describe --format export, que genera resultados limpios en formato YAML. Luego, puedes modificar los campos que se describen a continuación y subir el YAML modificado mediante el comando gcloud run services replace. Asegúrate de modificar los campos tal como se indica en la documentación.

  1. Para ver y descargar la configuración:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Configura el atributo startupProbe como se muestra a continuación:

    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

    Reemplazar

    • SERVICE por el nombre del servicio de Cloud Run
    • IMAGE_URL por una referencia a la imagen del contenedor, como us-docker.pkg.dev/cloudrun/container/hello:latest Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL tiene el formato REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • GRPC_SERVICE por el nombre del servicio de gRPC al que se enviará la verificación de estado.
    • (OPCIONAL) CONTAINER_PORT se debe configurar como el puerto del contenedor que se usa para el servicio.
      • DELAY con la cantidad de segundos que se espera después de que el contenedor se inició antes de realizar el primer sondeo (opcional). Especifica un valor de 0 segundos a 240 segundos. El valor predeterminado es 0 segundos.
      • TIMEOUT por la cantidad de segundos que se espera hasta que se agote el tiempo de espera del sondeo (opcional). Este valor no puede exceder el valor especificado para periodSeconds. Especifica un valor de 1 a 240. El valor predeterminado es 1.
      • (Opcional) THRESHOLD por la cantidad de veces que se debe reintentar el sondeo antes de marcar el contenedor como No listo. El valor predeterminado es 3.
      • PERIOD con el período (en segundos) en el que se realizará el sondeo (OPCIONAL). Por ejemplo, 2 para realizar el sondeo cada 2 segundos. Especifica un valor de 1 segundo a 240 segundos. El valor predeterminado es 10 segundos.
  3. Reemplaza el servicio por la configuración nueva mediante el siguiente comando:

    gcloud run services replace service.yaml

Terraform

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

El servicio debe implementar verificaciones de estado de gRPC.

Configura el servicio de Cloud Run con el atributo startup_probe como se muestra a continuación:

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

  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"
        }
      }
    }
  }
}

Configura un sondeo de funcionamiento

Puedes configurar los sondeos de funcionamiento HTTP y gRPC.

Configura un sondeo de funcionamiento HTTP

Si configuras un sondeo de inicio HTTP, el sondeo de funcionamiento solo comienza después de que el sondeo de inicio sea exitoso. Ten en cuenta que el uso de un sondeo de verificación de estado HTTP requiere que crees un extremo de verificación de estado HTTP correspondiente en tu servicio para responder al sondeo. Además, el servicio debe usar HTTP/1 (el valor predeterminado de Cloud Run), no HTTP/2.

Después de configurar el sondeo en funcionamiento y de que cualquier sondeo de inicio se realice de forma correcta, Cloud Run realiza una solicitud GET de HTTP al extremo de verificación de estado del servicio (por ejemplo, /health). Cualquier respuesta entre 200 y 400 es un éxito, todo lo demás indica un error.

Si un sondeo de funcionamiento no funciona de forma correcta dentro del tiempo especificado (failureThreshold * periodSeconds), el contenedor se cierra con una señal de SIGKILL. Las solicitudes restantes que el contenedor aún entregaba se finalizan con el código de estado HTTP 503. Después de cerrar el contenedor, el ajuste de escala automático de Cloud Run inicia una instancia de contenedor nueva.

Puedes configurar un sondeo de capacidad de respuesta HTTP con la consola de Google Cloud para un servicio existente o YAML para un servicio nuevo o existente:

Consola

  1. Ir a Cloud Run

  2. Haz clic en el servicio que deseas configurar.

  3. Haz clic en la pestaña YAML.

  4. Haz clic en Editar y configura el atributo livenessProbe como se muestra a continuación:

    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

    Reemplazar

    • SERVICE por el nombre del servicio de Cloud Run
    • IMAGE_URL por una referencia a la imagen del contenedor, como us-docker.pkg.dev/cloudrun/container/hello:latest Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL tiene el formato REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • PATH por la ruta relativa al extremo HTTP, por ejemplo, /ready.
    • (OPCIONAL) CONTAINER_PORT se debe configurar como el puerto del contenedor que se usa para el servicio.
    • Se puede usar httpHeaders para proporcionar varios encabezados personalizados o repetidos mediante los campos HEADER_NAME y HEADER_VALUE (opcional).
    • DELAY con la cantidad de segundos que se espera después de que el contenedor se inició antes de realizar el primer sondeo (opcional). Especifica un valor de 0 segundos a 240 segundos. El valor predeterminado es 0 segundos.
    • TIMEOUT (opcional) por la cantidad de segundos que se espera hasta que se agote el tiempo de espera del sondeo. Este valor no puede exceder el valor especificado para periodSeconds. Especifica un valor de 1 a 3,600. El valor predeterminado es 1.
    • (Opcional) THRESHOLD por la cantidad de veces que se debe reintentar el sondeo antes de marcar el contenedor como No listo. El valor predeterminado es 3.
    • PERIOD con el período (en segundos) en el que se realizará el sondeo (OPCIONAL). Por ejemplo, 2 para realizar el sondeo cada 2 segundos. Especifica un valor de 1 segundo a 3,600 segundos. El valor predeterminado es 10 segundos.
  5. Haz clic en Guardar e implementar nueva revisión.

YAML

Puedes descargar y ver las configuraciones del servicio existente mediante el comando gcloud run services describe --format export, que genera resultados limpios en formato YAML. Luego, puedes modificar los campos que se describen a continuación y subir el YAML modificado mediante el comando gcloud run services replace. Asegúrate de modificar los campos tal como se indica en la documentación.

  1. Para ver y descargar la configuración:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Configura el atributo livenessProbe como se muestra a continuación:

    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

    Reemplazar

    • SERVICE por el nombre del servicio de Cloud Run
    • IMAGE_URL por una referencia a la imagen del contenedor, como us-docker.pkg.dev/cloudrun/container/hello:latest Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL tiene el formato REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • PATH por la ruta relativa al extremo HTTP, por ejemplo, /ready.
    • (OPCIONAL) CONTAINER_PORT se debe configurar como el puerto del contenedor que se usa para el servicio.
    • Se puede usar httpHeaders para proporcionar varios encabezados personalizados o repetidos mediante los campos HEADER_NAME y HEADER_VALUE (opcional).
    • DELAY con la cantidad de segundos que se espera después de que el contenedor se inició antes de realizar el primer sondeo (opcional). Especifica un valor de 0 segundos a 240 segundos. El valor predeterminado es 0 segundos.
    • TIMEOUT (opcional) por la cantidad de segundos que se espera hasta que se agote el tiempo de espera del sondeo. Este valor no puede exceder el valor especificado para periodSeconds. Especifica un valor de 1 a 3,600. El valor predeterminado es 1.
    • (Opcional) THRESHOLD por la cantidad de veces que se debe reintentar el sondeo antes de marcar el contenedor como No listo. El valor predeterminado es 3.
    • PERIOD con el período (en segundos) en el que se realizará el sondeo (OPCIONAL). Por ejemplo, 2 para realizar el sondeo cada 2 segundos. Especifica un valor de 1 segundo a 3,600 segundos. El valor predeterminado es 10 segundos.
  3. Reemplaza el servicio por la configuración nueva mediante el siguiente comando:

    gcloud run services replace service.yaml

Terraform

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

El servicio debe implementar verificaciones de estado de gRPC.

Configura el servicio de Cloud Run con el atributo liveness_probe como se muestra a continuación:

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

  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 = "*"
          }
        }
      }
    }
  }
}

Después de la configuración del sondeo de HTTP, también debes crear un extremo de verificación de estado para responder al sondeo.

Configura un sondeo de funcionamiento de gRPC

Si configuras un sondeo de inicio de gRPC, el sondeo de funcionamiento comienza solo después de que el sondeo de inicio se realiza correctamente. Ten en cuenta que usar un sondeo de funcionamiento de gRPC requiere que implementes el protocolo de verificación de estado de gRPC en tu servicio de Cloud Run.

Después de configurar el sondeo de funcionamiento y de que cualquier sondeo de inicio se realice correctamente, Cloud Run realiza una solicitud de verificación de estado al servicio.

Si un sondeo de funcionamiento no funciona de forma correcta dentro del tiempo especificado (failureThreshold * periodSeconds), el contenedor se cierra con una señal de SIGKILL. Después de cerrar el contenedor, el ajuste de escala automático de Cloud Run inicia una instancia de contenedor nueva.

Puedes configurar un sondeo de funcionamiento HTTP con la consola de Google Cloud para un servicio existente o YAML para un servicio nuevo o existente:

Consola

  1. Ir a Cloud Run

  2. Haz clic en el servicio que deseas configurar.

  3. Haz clic en la pestaña YAML.

  4. Haz clic en Editar y configura el atributo livenessProbe como se muestra a continuación:

    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

    Reemplazar

    • SERVICE por el nombre del servicio de Cloud Run
    • IMAGE_URL por una referencia a la imagen del contenedor, como us-docker.pkg.dev/cloudrun/container/hello:latest Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL tiene el formato REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • (OPCIONAL) CONTAINER_PORT se debe configurar como el puerto del contenedor que se usa para el servicio.
    • GRPC_SERVICE por el nombre del servicio de gRPC al que se enviará la verificación de estado.
    • DELAY con la cantidad de segundos que se espera después de que el contenedor se inició antes de realizar el primer sondeo (opcional). Especifica un valor de 0 segundos a 240 segundos. El valor predeterminado es 0 segundos.
    • TIMEOUT (opcional) por la cantidad de segundos que se espera hasta que se agote el tiempo de espera del sondeo. Este valor no puede exceder el valor especificado para periodSeconds. Especifica un valor de 1 a 3,600. El valor predeterminado es 1.
    • (Opcional) THRESHOLD por la cantidad de veces que se debe reintentar el sondeo antes de marcar el contenedor como No listo. El valor predeterminado es 3.
    • PERIOD con el período (en segundos) en el que se realizará el sondeo (OPCIONAL). Por ejemplo, 2 para realizar el sondeo cada 2 segundos. Especifica un valor de 1 segundo a 3,600 segundos. El valor predeterminado es 10 segundos.
  5. Haz clic en Guardar e implementar nueva revisión.

YAML

Puedes descargar y ver las configuraciones del servicio existente mediante el comando gcloud run services describe --format export, que genera resultados limpios en formato YAML. Luego, puedes modificar los campos que se describen a continuación y subir el YAML modificado mediante el comando gcloud run services replace. Asegúrate de modificar los campos tal como se indica en la documentación.

  1. Para ver y descargar la configuración:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Configura el atributo livenessProbe como se muestra a continuación:

    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

    Reemplazar

    • SERVICE por el nombre del servicio de Cloud Run
    • IMAGE_URL por una referencia a la imagen del contenedor, como us-docker.pkg.dev/cloudrun/container/hello:latest Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL tiene el formato REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • (OPCIONAL) CONTAINER_PORT se debe configurar como el puerto del contenedor que se usa para el servicio.
    • GRPC_SERVICE por el nombre del servicio de gRPC al que se enviará la verificación de estado.
    • DELAY con la cantidad de segundos que se espera después de que el contenedor se inició antes de realizar el primer sondeo (opcional). Especifica un valor de 0 segundos a 240 segundos. El valor predeterminado es 0 segundos.
    • TIMEOUT (opcional) por la cantidad de segundos que se espera hasta que se agote el tiempo de espera del sondeo. Este valor no puede exceder el valor especificado para periodSeconds. Especifica un valor de 1 a 3,600. El valor predeterminado es 1.
    • (Opcional) THRESHOLD por la cantidad de veces que se debe reintentar el sondeo antes de marcar el contenedor como No listo. El valor predeterminado es 3.
    • PERIOD con el período (en segundos) en el que se realizará el sondeo (OPCIONAL). Por ejemplo, 2 para realizar el sondeo cada 2 segundos. Especifica un valor de 1 segundo a 3,600 segundos. El valor predeterminado es 10 segundos.
  3. Reemplaza el servicio por la configuración nueva mediante el siguiente comando:

    gcloud run services replace service.yaml

Terraform

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

Configura el servicio de Cloud Run con el atributo liveness_probe como se muestra a continuación:

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

  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"
        }
      }
    }
  }
}