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
En la Google Cloud consola, ve a la página Cloud Run:
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.
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.
En el menú Seleccionar tipo de comprobación del estado, elige el tipo de comprobación del estado que quieras añadir.
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.
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.
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 formatoLOCATION-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 formatoLOCATION-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 formatoLOCATION-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 RPCgrpc.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
-
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
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 formatoLOCATION-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.
-
Crea o actualiza el servicio con el siguiente comando:
gcloud run services replace service.yaml
Inicio de HTTP
-
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
Asegúrate de que tu servicio usa HTTP/1 (el valor predeterminado de Cloud Run) y no HTTP/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: 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 formatoLOCATION-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.
-
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.
-
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
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 formatoLOCATION-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 RPCgrpc.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.
-
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:
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:
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:
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