Configurar comprobaciones del estado de los contenedores de los servicios

Las comprobaciones de estado de Cloud Run se aseguran de que tus instancias de contenedor se ejecuten correctamente y puedan atender el tráfico. Con las comprobaciones de estado de Cloud Run, puedes personalizar cuándo está listo tu contenedor para recibir solicitudes y cuándo se debe considerar que no está en buen estado para que sea necesario reiniciarlo.

Casos prácticos

Puedes configurar dos tipos de sondas de comprobación del estado:

  • Las sondas de inicio determinan si el contenedor se ha iniciado y está listo para aceptar tráfico.

    • Cuando configuras una sonda de inicio, las comprobaciones de actividad se inhabilitan hasta que la sonda de inicio determina que el contenedor se ha iniciado, para evitar interferencias con el inicio del servicio.
    • Las sondas de inicio son especialmente útiles si usas comprobaciones de actividad en contenedores que tardan en iniciarse, ya que impiden que los contenedores se cierren prematuramente antes de que estén en funcionamiento.
  • Las sondas de vivacidad determinan si se debe reiniciar un contenedor.

    • En este caso, reiniciar un contenedor puede aumentar la disponibilidad del servicio en caso de que haya errores.
    • Las sondas de actividad están diseñadas para reiniciar instancias concretas que no se pueden recuperar de ninguna otra forma. Deben usarse principalmente para errores irrecuperables de instancias, como detectar un interbloqueo en el que se está ejecutando un servicio, pero no puede avanzar. Puedes requerir una prueba de actividad para cada contenedor mediante políticas de organización personalizadas.

Cuando un servicio experimenta fallos repetidos en el inicio o en la comprobación de actividad, Cloud Run limita los reinicios de instancias para evitar bucles de fallos incontrolados.

Configurar sondas

Cualquier cambio en la configuración conlleva la creación de una nueva revisión. Las revisiones posteriores también recibirán automáticamente este ajuste de configuración, a menos que hagas cambios explícitos para modificarlo.

Configurar sondas de inicio

Puedes configurar sondeos HTTP, TCP y gRPC mediante la Google Cloud consola, YAML o Terraform:

Consola

  1. En la Google Cloud consola, ve a la página Cloud Run:

    Ir a Cloud Run

  2. En el caso de un servicio nuevo, despliega Contenedores, volúmenes, redes y seguridad para ver las opciones de comprobación de estado. En el caso de un servicio que ya tengas, haz clic en el que quieras configurar y, a continuación, en Editar y desplegar para ver las opciones de comprobación de estado.

  3. En la sección Contenedores, vaya a Comprobaciones del estado y haga clic en Añadir comprobación del estado para abrir el panel de configuración Añadir comprobación del estado.

  4. En el menú Seleccionar tipo de comprobación del estado, elige el tipo de comprobación del estado que quieras añadir.

  5. En el menú Seleccionar tipo de prueba, elija el tipo de prueba que quiera usar (por ejemplo, HTTP o gRPC). Se muestra el formulario de configuración de la sonda.

  6. Ten en cuenta que la configuración de la sonda varía según el tipo de sonda. Configura los ajustes de la sonda:

    • Si usas comprobaciones HTTP:

      • Asegúrate de que tu servicio usa HTTP/1 (el valor predeterminado de Cloud Run) y no HTTP/2.

      • Usa el campo Ruta para especificar la ruta relativa al endpoint. Por ejemplo, /.

      • Seleccione la casilla Encabezados HTTP para especificar encabezados personalizados opcionales. Especifica el nombre del encabezado en el campo Nombre y el valor del encabezado en el campo Valor. Haz clic en Añadir encabezado HTTP para especificar más encabezados.

    • Si usas sondas gRPC, asegúrate de que tu imagen de contenedor implemente el protocolo de comprobación de estado de gRPC. Para obtener más información, consulta el protocolo de comprobación del estado de gRPC.

    • En Puerto, especifica el puerto del contenedor que se usa en tu servicio.

    • En Retraso inicial, especifica el número de segundos que deben transcurrir después de que se haya iniciado el contenedor antes de realizar la primera comprobación. Especifica un valor entre 0 y 240 segundos. El valor predeterminado es 0 segundos.

    • En Period (Periodo), especifique el periodo (en segundos) en el que se realizará la prueba. Por ejemplo, 2 para realizar la comprobación cada 2 segundos. Especifica un valor de entre 1 y 240 segundos. El valor predeterminado es 10 segundos.

    • En Umbral de fallos, especifica el número de veces que se debe reintentar la comprobación antes de cerrar el contenedor. El valor predeterminado es 3.

    • En Tiempo de espera, especifica el número de segundos que se debe esperar hasta que se agote el tiempo de espera de la comprobación. Este valor no puede superar el valor especificado para periodSeconds. Especifica un valor entre 1 y 240. El valor predeterminado es 1.

  7. Haga clic en Añadir para añadir el nuevo umbral.

gcloud

Inicio de TCP

Ejecuta el siguiente comando:

  gcloud run deploy SERVICE \
      --image=IMAGE_URL \
      --startup-probe tcpSocket.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD

Sustituye:

  • SERVICE con el nombre de tu servicio de Cloud Run.
  • IMAGE_URL con una referencia a la imagen del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL tiene el formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
  • (OPCIONAL) CONTAINER_PORT debe configurarse en el puerto del contenedor que se utilice en tu servicio.
  • DELAY con el número de segundos que se debe esperar después de que se haya iniciado el contenedor antes de realizar la primera comprobación. Especifica un valor entre 0 y 240 segundos. El valor predeterminado es 0 segundos.
  • OPCIONAL: TIMEOUT con el número de segundos que se debe esperar hasta que se agote el tiempo de espera de la comprobación. Este valor no puede superar el valor especificado para periodSeconds. Especifica un valor entre 1 y 240. El valor predeterminado es 1.
  • THRESHOLD con el número de veces que se debe reintentar la comprobación antes de cerrar el contenedor. El valor predeterminado es 3.
  • PERIOD con el periodo (en segundos) en el que se debe realizar la comprobación. Por ejemplo, 2 para realizar la comprobación cada 2 segundos. Especifica un valor entre 1 y 240 segundos. El valor predeterminado es 10 segundos.

Inicio de HTTP

Ejecuta el siguiente 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

Sustituye:

  • SERVICE con el nombre de tu servicio de Cloud Run.
  • IMAGE_URL con una referencia a la imagen del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL tiene el formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
  • PATH con la ruta relativa al endpoint HTTP. Por ejemplo, /ready.
  • OPCIONAL: CONTAINER_PORT debe configurarse en el puerto del contenedor que se utilice en tu servicio.
  • (OPCIONAL) DELAY con el número de segundos que se deben esperar después de que se haya iniciado el contenedor antes de realizar la primera comprobación. Especifica un valor entre 0 y 240 segundos. El valor predeterminado es 0 segundos.
  • (OPCIONAL) THRESHOLD con el número de veces que se debe reintentar la comprobación antes de cerrar el contenedor. El valor predeterminado es 3.
  • (OPCIONAL)TIMEOUT con el número de segundos que se debe esperar hasta que se agote el tiempo de espera de la comprobación. Este valor no puede superar el valor especificado en periodSeconds. Especifica un valor entre 1 y 240. El valor predeterminado es 1.
  • (OPCIONAL) PERIOD con el periodo (en segundos) en el que se debe realizar la comprobación. Por ejemplo, 2 para realizar la comprobación cada 2 segundos. Especifica un valor entre 1 y 240 segundos. El valor predeterminado es 10 segundos.

Inicio de gRPC

Antes de usar las sondas gRPC, asegúrate de que tu imagen de contenedor implemente el protocolo de comprobación de estado de gRPC. Para obtener más información, consulta el protocolo de comprobación del estado de gRPC.

Ejecuta el siguiente 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

Sustituye:

  • SERVICE con el nombre de tu servicio de Cloud Run.
  • IMAGE_URL con una referencia a la imagen del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL tiene el formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
  • (OPCIONAL) GRPC_SERVICE. Si se define, se usa en el campo de servicio de grpc.health.v1.HealthCheckRequest cuando se llama al RPC grpc.health.v1.Health.Check.
  • OPCIONAL: CONTAINER_PORT debe configurarse en el puerto del contenedor que se utilice en tu servicio.
  • (OPCIONAL) DELAY con el número de segundos que se deben esperar después de que se haya iniciado el contenedor antes de realizar la primera comprobación. Especifica un valor entre 0 y 240 segundos. El valor predeterminado es 0 segundos.
  • (OPCIONAL) THRESHOLD con el número de veces que se debe reintentar la comprobación antes de cerrar el contenedor. El valor predeterminado es 3.
  • (OPCIONAL)TIMEOUT con el número de segundos que se debe esperar hasta que se agote el tiempo de espera de la comprobación. Este valor no puede superar el valor especificado en periodSeconds. Especifica un valor entre 1 y 240. El valor predeterminado es 1.
  • (OPCIONAL) PERIOD con el periodo (en segundos) en el que se debe realizar la comprobación. Por ejemplo, 2 para realizar la comprobación cada 2 segundos. Especifica un valor entre 1 y 240 segundos. El valor predeterminado es 10 segundos.

YAML

Inicio de TCP

  1. Si va a crear un servicio, puede saltarse este paso. Si vas a actualizar un servicio, descarga su configuración YAML:
    gcloud run services describe SERVICE --format export > service.yaml
  2. Configure el atributo startupProbe como se indica 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

    Sustituye:

    • SERVICE con el nombre de tu servicio de Cloud Run.
    • IMAGE_URL con una referencia a la imagen del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL tiene el formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • (OPCIONAL) CONTAINER_PORT debe configurarse en el puerto del contenedor que se utilice en tu servicio.
    • DELAY con el número de segundos que se debe esperar después de que se haya iniciado el contenedor antes de realizar la primera comprobación. Especifica un valor entre 0 y 240 segundos. El valor predeterminado es 0 segundos.
    • OPCIONAL: TIMEOUT con el número de segundos que se debe esperar hasta que se agote el tiempo de espera de la comprobación. Este valor no puede superar el valor especificado para periodSeconds. Especifica un valor entre 1 y 240. El valor predeterminado es 1.
    • THRESHOLD con el número de veces que se debe reintentar la comprobación antes de cerrar el contenedor. El valor predeterminado es 3.
    • PERIOD con el periodo (en segundos) en el que se debe realizar la comprobación. Por ejemplo, 2 para realizar la comprobación cada 2 segundos. Especifica un valor entre 1 y 240 segundos. El valor predeterminado es 10 segundos.
  3. Crea o actualiza el servicio con el siguiente comando:
    gcloud run services replace service.yaml

Inicio de HTTP

  1. Si va a crear un servicio, puede saltarse este paso. Si vas a actualizar un servicio, descarga su configuración YAML:
    gcloud run services describe SERVICE --format export > service.yaml
  2. Asegúrate de que tu servicio usa HTTP/1 (el valor predeterminado de Cloud Run) y no HTTP/2.

  3. Configure el atributo startupProbe como se indica 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

    Sustituye:

    • SERVICE con el nombre de tu servicio de Cloud Run.
    • IMAGE_URL con una referencia a la imagen del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL tiene el formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • PATH con la ruta relativa al endpoint HTTP. Por ejemplo, /ready.
    • OPCIONAL: CONTAINER_PORT debe configurarse en el puerto del contenedor que se utilice en tu servicio.
    • (OPCIONAL) DELAY con el número de segundos que se deben esperar después de que se haya iniciado el contenedor antes de realizar la primera comprobación. Especifica un valor entre 0 y 240 segundos. El valor predeterminado es 0 segundos.
    • (OPCIONAL) THRESHOLD con el número de veces que se debe reintentar la comprobación antes de cerrar el contenedor. El valor predeterminado es 3.
    • (OPCIONAL) Se puede usar httpHeaders para proporcionar varios encabezados personalizados o repetidos mediante los campos HEADER_NAME y HEADER_VALUE, tal como se muestra.
    • (OPCIONAL)TIMEOUT con el número de segundos que se debe esperar hasta que se agote el tiempo de espera de la comprobación. Este valor no puede superar el valor especificado en periodSeconds. Especifica un valor entre 1 y 240. El valor predeterminado es 1.
    • (OPCIONAL) PERIOD con el periodo (en segundos) en el que se debe realizar la comprobación. Por ejemplo, 2 para realizar la comprobación cada 2 segundos. Especifica un valor entre 1 y 240 segundos. El valor predeterminado es 10 segundos.
  4. Crea o actualiza el servicio con el siguiente comando:
    gcloud run services replace service.yaml

Inicio de gRPC

Antes de usar las sondas gRPC, asegúrate de que tu imagen de contenedor implemente el protocolo de comprobación de estado de gRPC. Para obtener más información, consulta el protocolo de comprobación del estado de gRPC.

  1. Si va a crear un servicio, puede saltarse este paso. Si vas a actualizar un servicio, descarga su configuración YAML:
    gcloud run services describe SERVICE --format export > service.yaml
  2. Configure el atributo startupProbe como se indica 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

    Sustituye:

    • SERVICE con el nombre de tu servicio de Cloud Run.
    • IMAGE_URL con una referencia a la imagen del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL tiene el formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • (OPCIONAL) GRPC_SERVICE. Si se define, se usa en el campo de servicio de grpc.health.v1.HealthCheckRequest cuando se llama al RPC grpc.health.v1.Health.Check.
    • OPCIONAL: CONTAINER_PORT debe configurarse en el puerto del contenedor que se utilice en tu servicio.
    • (OPCIONAL) DELAY con el número de segundos que se deben esperar después de que se haya iniciado el contenedor antes de realizar la primera comprobación. Especifica un valor entre 0 y 240 segundos. El valor predeterminado es 0 segundos.
    • (OPCIONAL) THRESHOLD con el número de veces que se debe reintentar la comprobación antes de cerrar el contenedor. El valor predeterminado es 3.
    • (OPCIONAL)TIMEOUT con el número de segundos que se debe esperar hasta que se agote el tiempo de espera de la comprobación. Este valor no puede superar el valor especificado en periodSeconds. Especifica un valor entre 1 y 240. El valor predeterminado es 1.
    • (OPCIONAL) PERIOD con el periodo (en segundos) en el que se debe realizar la comprobación. Por ejemplo, 2 para realizar la comprobación cada 2 segundos. Especifica un valor entre 1 y 240 segundos. El valor predeterminado es 10 segundos.
  3. Crea o actualiza el servicio con el siguiente comando:
    gcloud run services replace service.yaml

Terraform

Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.

Inicio de TCP

Configura tu 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"

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

Inicio de HTTP

Asegúrate de que tu servicio usa HTTP/1 (el valor predeterminado de Cloud Run) y no HTTP/2.

Configura tu 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"

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

Inicio de gRPC

Antes de usar las sondas gRPC, asegúrate de que tu imagen de contenedor implemente el protocolo de comprobación de estado de gRPC. Para obtener más información, consulta el protocolo de comprobación del estado de gRPC.

Configura tu 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"

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

La comprobación de inicio de TCP predeterminada

Si no configuras explícitamente una sonda de inicio de TCP para un nuevo servicio de Cloud Run, Cloud Run configurará automáticamente una sonda de inicio de TCP con los siguientes valores predeterminados:

startupProbe:
          timeoutSeconds: 240
          periodSeconds: 240
          failureThreshold: 1

Puedes cambiar estos valores predeterminados siguiendo las instrucciones de la sección Configuración de la sonda de esta página.

Requisitos y comportamiento de la sonda de inicio

Tipo de sonda Requisitos Comportamiento
Inicio de TCP Ninguno De forma predeterminada, Cloud Run establece una conexión TCP para abrir el socket TCP en el puerto especificado. Si Cloud Run no puede establecer una conexión, significa que se ha producido un error.

Si una sonda de inicio no se completa correctamente en el tiempo especificado (failureThreshold * periodSeconds), que no puede superar los 240 segundos, el contenedor se cierra. Consulta también los valores predeterminados de TCP.
Inicio de HTTP Crea un endpoint de comprobación del estado HTTP
Usa HTTP/1
Después de configurar la sonda, Cloud Run envía una solicitud HTTP GET al endpoint de comprobación del estado del servicio (por ejemplo, /ready). Cualquier respuesta 2XX o 3XX indica que la solicitud se ha realizado correctamente. Cualquier otra respuesta indica que ha fallado.

Si una sonda de inicio no se completa correctamente en el tiempo especificado (failureThreshold * periodSeconds), que no puede superar los 240 segundos, el contenedor se cierra.

Si la sonda de inicio HTTP se completa correctamente en el tiempo especificado y has configurado una sonda de vivacidad HTTP, se inicia la sonda de vivacidad HTTP.
Inicio de gRPC Implementa el protocolo de comprobación de estado de gRPC en tu servicio de Cloud Run Si una sonda de inicio no se completa correctamente en el plazo especificado (failureThreshold * periodSeconds), que no puede superar los 240 segundos, el contenedor se cierra.

Configurar comprobaciones de actividad

Puedes configurar las sondas HTTP y gRPC mediante la Google Cloud consola, YAML o Terraform:

Consola

Antes de usar las sondas gRPC, asegúrate de que tu imagen de contenedor implemente el protocolo de comprobación de estado de gRPC. Para obtener más información, consulta el protocolo de comprobación del estado de gRPC.
  1. En la Google Cloud consola, ve a la página Cloud Run:

    Ir a Cloud Run

  2. En el caso de un servicio nuevo, despliega Contenedores, volúmenes, redes y seguridad para ver las opciones de comprobación de estado. En el caso de un servicio que ya tengas, haz clic en el que quieras configurar y, a continuación, en Editar y desplegar para ver las opciones de comprobación de estado.

  3. En la sección Contenedores, vaya a Comprobaciones del estado y haga clic en Añadir comprobación del estado para abrir el panel de configuración Añadir comprobación del estado.

  4. En el menú Seleccionar tipo de comprobación del estado, elige el tipo de comprobación del estado que quieras añadir.

  5. En el menú Seleccionar tipo de prueba, elija el tipo de prueba que quiera usar (por ejemplo, HTTP o gRPC). Se muestra el formulario de configuración de la sonda.

  6. Ten en cuenta que la configuración de la sonda varía según el tipo de sonda. Configura los ajustes de la sonda:

    • Si usas comprobaciones HTTP:

      • Asegúrate de que tu servicio usa HTTP/1 (el valor predeterminado de Cloud Run) y no HTTP/2.

      • Usa el campo Ruta para especificar la ruta relativa al endpoint. Por ejemplo, /.

      • Seleccione la casilla Encabezados HTTP para especificar encabezados personalizados opcionales. Especifica el nombre del encabezado en el campo Nombre y el valor del encabezado en el campo Valor. Haz clic en Añadir encabezado HTTP para especificar más encabezados.

    • Si usas sondas gRPC, asegúrate de que tu imagen de contenedor implemente el protocolo de comprobación de estado de gRPC. Para obtener más información, consulta el protocolo de comprobación del estado de gRPC.

    • En Puerto, especifica el puerto del contenedor que se usa en tu servicio.

    • En Retraso inicial, especifica el número de segundos que deben transcurrir después de que se haya iniciado el contenedor antes de realizar la primera comprobación. Especifica un valor entre 0 y 240 segundos. El valor predeterminado es 0 segundos.

    • En Period (Periodo), especifique el periodo (en segundos) en el que se realizará la prueba. Por ejemplo, 2 para realizar la comprobación cada 2 segundos. Especifica un valor de entre 1 y 240 segundos. El valor predeterminado es 10 segundos.

    • En Umbral de fallos, especifica el número de veces que se debe reintentar la comprobación antes de cerrar el contenedor. El valor predeterminado es 3.

    • En Tiempo de espera, especifica el número de segundos que se debe esperar hasta que se agote el tiempo de espera de la comprobación. Este valor no puede superar el valor especificado para periodSeconds. Especifica un valor entre 1 y 240. El valor predeterminado es 1.

  7. Haga clic en Añadir para añadir el nuevo umbral.

gcloud

Actividad de HTTP

Ejecuta el siguiente 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

Sustituye:

  • SERVICE con el nombre de tu servicio de Cloud Run.
  • IMAGE_URL con una referencia a la imagen del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL tiene el formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
  • PATH con la ruta relativa al endpoint HTTP. Por ejemplo, /ready.
  • OPCIONAL: CONTAINER_PORT debe configurarse en el puerto del contenedor que se utilice en tu servicio.
  • (OPCIONAL) DELAY con el número de segundos que se deben esperar después de que se haya iniciado el contenedor antes de realizar la primera comprobación. Especifica un valor entre 0 y 240 segundos. El valor predeterminado es 0 segundos.
  • (OPCIONAL) THRESHOLD con el número de veces que se debe reintentar la comprobación antes de cerrar el contenedor. El valor predeterminado es 3.
  • (OPCIONAL) TIMEOUT con el número de segundos que se debe esperar hasta que se agote el tiempo de espera de la comprobación. Este valor no puede superar el valor especificado para periodSeconds. Especifica un valor entre 1 y 3600.El valor predeterminado es 1.
  • (OPCIONAL) PERIOD con el periodo (en segundos) en el que se debe realizar la comprobación. Por ejemplo, 2 para realizar la comprobación cada 2 segundos. Especifica un valor entre 1 y 3600 segundos. El valor predeterminado es 10 segundos.

Vivacidad de gRPC

Antes de usar las sondas gRPC, asegúrate de que tu imagen de contenedor implemente el protocolo de comprobación de estado de gRPC. Para obtener más información, consulta el protocolo de comprobación del estado de gRPC.

Ejecuta el siguiente 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

Sustituye:

  • SERVICE con el nombre de tu servicio de Cloud Run.
  • IMAGE_URL con una referencia a la imagen del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL tiene el formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
  • (OPCIONAL) GRPC_SERVICE. Si se define, se usa en el campo de servicio de grpc.health.v1.HealthCheckRequest cuando se llama al RPC grpc.health.v1.Health.Check.
  • OPCIONAL: CONTAINER_PORT debe configurarse en el puerto del contenedor que se utilice en tu servicio.
  • (OPCIONAL) DELAY con el número de segundos que se deben esperar después de que se haya iniciado el contenedor antes de realizar la primera comprobación. Especifica un valor entre 0 y 240 segundos. El valor predeterminado es 0 segundos.
  • (OPCIONAL) THRESHOLD con el número de veces que se debe reintentar la comprobación antes de cerrar el contenedor. El valor predeterminado es 3.
  • (OPCIONAL) TIMEOUT con el número de segundos que se debe esperar hasta que se agote el tiempo de espera de la comprobación. Este valor no puede superar el valor especificado para periodSeconds. Especifica un valor entre 1 y 3600.El valor predeterminado es 1.
  • (OPCIONAL) PERIOD con el periodo (en segundos) en el que se debe realizar la comprobación. Por ejemplo, 2 para realizar la comprobación cada 2 segundos. Especifica un valor entre 1 y 3600 segundos. El valor predeterminado es 10 segundos.

YAML

Actividad de HTTP

  1. Si va a crear un servicio, puede saltarse este paso. Si vas a actualizar un servicio, descarga su configuración YAML:
    gcloud run services describe SERVICE --format export > service.yaml
  2. Asegúrate de que tu servicio usa HTTP/1 (el valor predeterminado de Cloud Run) y no HTTP/2.

  3. Configure el atributo livenessProbe como se indica 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

    Sustituye:

    • SERVICE con el nombre de tu servicio de Cloud Run.
    • IMAGE_URL con una referencia a la imagen del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL tiene el formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • PATH con la ruta relativa al endpoint HTTP. Por ejemplo, /ready.
    • OPCIONAL: CONTAINER_PORT debe configurarse en el puerto del contenedor que se utilice en tu servicio.
    • (OPCIONAL) DELAY con el número de segundos que se deben esperar después de que se haya iniciado el contenedor antes de realizar la primera comprobación. Especifica un valor entre 0 y 240 segundos. El valor predeterminado es 0 segundos.
    • (OPCIONAL) THRESHOLD con el número de veces que se debe reintentar la comprobación antes de cerrar el contenedor. El valor predeterminado es 3.
    • (OPCIONAL) Se puede usar httpHeaders para proporcionar varios encabezados personalizados o repetidos mediante los campos HEADER_NAME y HEADER_VALUE, tal como se muestra.
    • (OPCIONAL) TIMEOUT con el número de segundos que se debe esperar hasta que se agote el tiempo de espera de la comprobación. Este valor no puede superar el valor especificado para periodSeconds. Especifica un valor entre 1 y 3600.El valor predeterminado es 1.
    • (OPCIONAL) PERIOD con el periodo (en segundos) en el que se debe realizar la comprobación. Por ejemplo, 2 para realizar la comprobación cada 2 segundos. Especifica un valor entre 1 y 3600 segundos. El valor predeterminado es 10 segundos.
  4. Crea o actualiza el servicio con el siguiente comando:
    gcloud run services replace service.yaml

Vivacidad de gRPC

Antes de usar las sondas gRPC, asegúrate de que tu imagen de contenedor implemente el protocolo de comprobación de estado de gRPC. Para obtener más información, consulta el protocolo de comprobación del estado de gRPC.

  1. Si va a crear un servicio, puede saltarse este paso. Si vas a actualizar un servicio, descarga su configuración YAML:
    gcloud run services describe SERVICE --format export > service.yaml
  2. Configure el atributo livenessProbe como se indica 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

    Sustituir

    • SERVICE con el nombre de tu servicio de Cloud Run.
    • IMAGE_URL con una referencia a la imagen del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL tiene el formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • (OPCIONAL) GRPC_SERVICE. Si se define, se usa en el campo de servicio de grpc.health.v1.HealthCheckRequest cuando se llama al RPC grpc.health.v1.Health.Check.
    • OPCIONAL: CONTAINER_PORT debe configurarse en el puerto del contenedor que se utilice en tu servicio.
    • (OPCIONAL) DELAY con el número de segundos que se deben esperar después de que se haya iniciado el contenedor antes de realizar la primera comprobación. Especifica un valor entre 0 y 240 segundos. El valor predeterminado es 0 segundos.
    • (OPCIONAL) THRESHOLD con el número de veces que se debe reintentar la comprobación antes de cerrar el contenedor. El valor predeterminado es 3.
    • (OPCIONAL) TIMEOUT con el número de segundos que se debe esperar hasta que se agote el tiempo de espera de la comprobación. Este valor no puede superar el valor especificado para periodSeconds. Especifica un valor entre 1 y 3600.El valor predeterminado es 1.
    • (OPCIONAL) PERIOD con el periodo (en segundos) en el que se debe realizar la comprobación. Por ejemplo, 2 para realizar la comprobación cada 2 segundos. Especifica un valor entre 1 y 3600 segundos. El valor predeterminado es 10 segundos.

  3. Crea o actualiza el servicio con el siguiente comando:
    gcloud run services replace service.yaml

Terraform

Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.

Actividad de HTTP

Asegúrate de que tu servicio usa HTTP/1 (el valor predeterminado de Cloud Run) y no HTTP/2.

Configura tu 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"

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

Vivacidad de gRPC

Antes de usar las sondas gRPC, asegúrate de que tu imagen de contenedor implemente el protocolo de comprobación de estado de gRPC. Para obtener más información, consulta el protocolo de comprobación del estado de gRPC.

Configura tu 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"

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

Requisitos y comportamiento de la comprobación de actividad

Tipo de sonda Requisitos Comportamiento
Actividad de HTTP Crea un endpoint de comprobación del estado HTTP
Usa HTTP/1
La prueba de actividad empieza solo después de que la prueba de inicio se haya completado correctamente. Después de configurar la sonda y de que se complete correctamente cualquier sonda de inicio, Cloud Run envía una solicitud HTTP GET al endpoint de comprobación del estado del servicio (por ejemplo, /health). Cualquier respuesta 2XX o 3XX indica que la operación se ha completado correctamente. Cualquier otra respuesta indica que ha fallado.

Si una sonda de vivacidad no se completa correctamente en el tiempo especificado (failureThreshold * periodSeconds), el contenedor se cierra mediante una señal SIGKILL. Las solicitudes restantes que aún estuviera atendiendo el contenedor se terminarán con el código de estado HTTP 503. Una vez que se ha cerrado el contenedor, el ajuste de escala automático de Cloud Run inicia una nueva instancia del contenedor.
Vivacidad de gRPC Implementa el protocolo de comprobación de estado de gRPC en tu servicio de Cloud Run Si configuras una sonda de inicio de gRPC, la sonda de vivacidad se inicia solo después de que la sonda de inicio se haya completado correctamente.

Una vez configurada la sonda de vivacidad y completada correctamente la sonda de inicio, Cloud Run envía una solicitud de comprobación del estado al servicio.

Si una sonda de vivacidad no se completa correctamente en el tiempo especificado (failureThreshold * periodSeconds), el contenedor se cierra mediante una señal SIGKILL. Una vez que se ha cerrado el contenedor, el ajuste de escala automático de Cloud Run inicia una nueva instancia del contenedor.

Crear endpoints de comprobación del estado HTTP

Si configura su servicio de Cloud Run para una sonda de inicio HTTP, debe añadir un endpoint en el código de su servicio para responder a la sonda. El endpoint puede tener el nombre que quieras, por ejemplo, /startup o /ready, pero debe coincidir con los valores que especifiques para path en la configuración de la sonda, como se indica a continuación:

startupProbe:
    httpGet:
      path: /ready

Si configuras tu servicio de Cloud Run para una sonda de actividad HTTP con una ruta como /health, la defines en la configuración de la sonda de la siguiente manera:

livenessProbe:
    httpGet:
      path: /health

Se puede acceder a los endpoints de comprobación de estado HTTP desde fuera y siguen los mismos principios que cualquier otro endpoint de servicio HTTP expuesto externamente.

Asignación de CPU

  • La CPU siempre se asigna cuando se ejecutan las sondas.
  • Todas las sondas se facturan por el consumo de uso de CPU y memoria, pero no se aplican cargos basados en solicitudes.