Las verificaciones de estado de Cloud Run garantizan que tus instancias de contenedor se ejecuten correctamente y puedan entregar tráfico. Con las verificaciones de estado de Cloud Run, puedes personalizar el momento en que tu contenedor está listo para recibir solicitudes y cuándo se debe considerar que está en mal estado para que se reinicie.
Casos de uso
Puedes configurar los siguientes tipos de sondeos de verificación de estado:
- Los sondeos de inicio determinan si el contenedor se inició y está listo para aceptar tráfico.
- Los sondeos de funcionamiento determinan si el contenedor se debe reiniciar.
- En este caso, reiniciar un contenedor puede aumentar la disponibilidad de la instancia en caso de errores.
- Los sondeos de funcionamiento están diseñados para reiniciar instancias individuales que no se pueden recuperar de ninguna otra manera. Se deben usar en particular para fallas de instancias irrecuperables, como detectar un interbloqueo en el que se ejecuta una instancia, pero no puede avanzar. Puedes solicitar un sondeo de funcionamiento para cada contenedor con políticas de la organización personalizadas.
- Cuando una instancia experimenta fallas repetidas de sondeo, Cloud Run limita los reinicios de la instancia para evitar bucles de fallas no controlados.
Sondeos de preparación (versión preliminar)
Los sondeos de preparación determinan cuándo una instancia de Cloud Run debe entregar tráfico. Las verificaciones de preparación comienzan después de que el sondeo de inicio del contenedor se realiza correctamente. Si una instancia falla en su sondeo de disponibilidad más allá del valor del umbral de fallas que configures, Cloud Run dejará de enviarle tráfico nuevo. Cloud Run no finaliza la instancia y le envía tráfico cuando esta vuelve a pasar su sondeo de disponibilidad.
Tu contenedor debe implementar los sondeos de inicio, funcionamiento y preparación de manera coherente. Una vez que se supera la verificación de inicio, Cloud Run considera que tu contenedor está listo para entregar tráfico.
Te recomendamos que encapsules tu lógica para que la sonda de inicio tenga en cuenta la preparación. Dado que Cloud Run puede enrutar el tráfico a una instancia nueva antes de que se complete la primera sonda de disponibilidad, asegúrate de que aprobar la sonda de inicio también garantice la disponibilidad para entregar tráfico de forma segura de inmediato. Cuando el sondeo de inicio se realiza correctamente, consideramos que el contenedor está listo para recibir tráfico.
Configura sondeos de inicio
Puedes configurar sondeos de HTTP, TCP y gRPC con Google Cloud CLI o YAML:
gcloud
Inicio de TCP
Ejecuta el comando siguiente:
gcloud beta run instances create INSTANCE \
--image=IMAGE_URL \
--startup-probe tcpSocket.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
Reemplaza lo siguiente:
- INSTANCE: El nombre de tu instancia de Cloud Run.
- IMAGE_URL: Una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latestSi 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. - CONTAINER_PORT (opcional): Es el puerto del contenedor que se usa para tu instancia.
- DELAY: 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 a 240 segundos. El valor predeterminado es 0 segundos.
- TIMEOUT (opcional): Es 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: Es la cantidad de veces que se debe reintentar el sondeo antes de apagar el contenedor. El valor predeterminado es 3.
- PERIOD: Es el período (en segundos) en el que se realizará el sondeo.
Por ejemplo,
2para realizar el sondeo cada 2 segundos. Especifica un valor de 1 segundo a 240 segundos. El valor predeterminado es 10 segundos.
Inicio de HTTP
Agrega un extremo HTTP/1 (el valor predeterminado de Cloud Run, no HTTP/2) en el código de tu instancia para responder al sondeo. El nombre del extremo (por ejemplo, /startup, /health o /are_you_ready) debe coincidir con el path en la configuración del sondeo. Los extremos de verificación de estado de HTTP son accesibles de forma externa y siguen los mismos principios que cualquier otro extremo de instancia de HTTP expuesto de forma externa.
Ejecuta el comando siguiente:
gcloud beta run instances create INSTANCE \
--image=IMAGE_URL \
--startup-probe httpGet.path=PATH,httpGet.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
Reemplaza lo siguiente:
- INSTANCE: El nombre de tu instancia de Cloud Run.
- IMAGE_URL: Una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latestSi 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: Es una ruta relativa al extremo HTTP, por ejemplo,
/health. - CONTAINER_PORT (opcional): Se configura como el puerto del contenedor que se usa para tu instancia.
- DELAY (opcional): 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.
- THRESHOLD (opcional): Es la cantidad de veces que se debe reintentar el sondeo antes de apagar el contenedor. El valor predeterminado es 3.
- TIMEOUT (opcional): Es 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.
- PERIOD (opcional): Es el período (en segundos) en el que se realizará el sondeo. Por ejemplo,
2para realizar el sondeo cada 2 segundos. Especifica un valor de 1 segundo a 240 segundos. El valor predeterminado es 10 segundos.
Inicio de gRPC
Asegúrate de que tu imagen de contenedor implemente el protocolo de verificación de estado de gRPC.
Ejecuta el comando siguiente:
gcloud beta run instances create INSTANCE \
--image=IMAGE_URL \
--startup-probe grpc.port=CONTAINER_PORT,grpc.instance=GRPC_INSTANCE,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
Reemplaza lo siguiente:
- INSTANCE: El nombre de tu instancia de Cloud Run.
- IMAGE_URL: Una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latestSi 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. - GRPC_INSTANCE (opcional): Si se configura, se usa en el campo de instancia de
grpc.health.v1.HealthCheckRequestcuando se llama a la RPC degrpc.health.v1.Health.Check. - CONTAINER_PORT (opcional): El puerto del contenedor que se usa para tu instancia.
- DELAY (opcional): 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.
- THRESHOLD (opcional): Es la cantidad de veces que se debe reintentar el sondeo antes de apagar el contenedor. El valor predeterminado es 3.
- TIMEOUT (opcional): Es 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.
- PERIOD (opcional): Es el período (en segundos) en el que se realizará el sondeo. Por ejemplo,
2para realizar el sondeo cada 2 segundos. Especifica un valor de 1 segundo a 240 segundos. El valor predeterminado es 10 segundos.
YAML
Inicio de TCP
Si creas una instancia nueva, omite este paso. Si actualizas una instancia existente, descarga su configuración de YAML:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
Configura el atributo
startupProbecomo se muestra a continuación:apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA spec: containers: - image: IMAGE_URL startupProbe: tcpSocket: port: CONTAINER_PORT initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
Reemplaza lo siguiente:
- INSTANCE: El nombre de tu instancia de Cloud Run.
- IMAGE_URL: Una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latestSi 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. - CONTAINER_PORT (opcional): Es el puerto del contenedor que se usa para tu instancia.
- DELAY: 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 a 240 segundos. El valor predeterminado es 0 segundos.
- TIMEOUT (opcional): Es 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: Es la cantidad de veces que se debe reintentar el sondeo antes de apagar el contenedor. El valor predeterminado es 3.
- PERIOD: Es el período (en segundos) en el que se realizará el sondeo.
Por ejemplo,
2para realizar el sondeo cada 2 segundos. Especifica un valor de 1 segundo a 240 segundos. El valor predeterminado es 10 segundos.
-
Crea o actualiza la instancia con el siguiente comando:
gcloud beta run instances replace instance.yaml
Inicio de HTTP
Agrega un extremo HTTP/1 (el valor predeterminado de Cloud Run, no HTTP/2) en el código de tu instancia para responder al sondeo. El nombre del extremo (por ejemplo, /startup, /health o /are_you_ready) debe coincidir con el path en la configuración del sondeo. Los extremos de verificación de estado de HTTP son accesibles de forma externa y siguen los mismos principios que cualquier otro extremo de instancia de HTTP expuesto de forma externa.
Si creas una instancia nueva, omite este paso. Si actualizas una instancia existente, descarga su configuración de YAML:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
Configura el atributo
startupProbecomo se muestra a continuación:apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA 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
Reemplaza lo siguiente:
- INSTANCE: El nombre de tu instancia de Cloud Run.
- IMAGE_URL: Una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latestSi 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: Es una ruta relativa al extremo HTTP, por ejemplo,
/health. - CONTAINER_PORT (opcional): Se configura como el puerto del contenedor que se usa para tu instancia.
- DELAY (opcional): 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.
- THRESHOLD (opcional): Es la cantidad de veces que se debe reintentar el sondeo antes de apagar el contenedor. El valor predeterminado es 3.
- Opcional: Se puede usar
httpHeaderspara proporcionar varios encabezados personalizados o repetidos con los campos HEADER_NAME y HEADER_VALUE, como se muestra. - TIMEOUT (opcional): Es 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.
- PERIOD (opcional): Es el período (en segundos) en el que se realizará el sondeo. Por ejemplo,
2para realizar el sondeo cada 2 segundos. Especifica un valor de 1 segundo a 240 segundos. El valor predeterminado es 10 segundos.
Si creas una instancia nueva, omite este paso. Si actualizas una instancia existente, descarga su configuración de YAML:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
Inicio de gRPC
Asegúrate de que tu imagen de contenedor implemente el protocolo de verificación de estado de gRPC.
Si creas una instancia nueva, omite este paso. Si actualizas una instancia existente, descarga su configuración de YAML:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
Configura el atributo
startupProbecomo se muestra a continuación:apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA spec: containers: - image: IMAGE_URL startupProbe: grpc: instance: GRPC_INSTANCE port: CONTAINER_PORT initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
Reemplaza lo siguiente:
- INSTANCE: El nombre de tu instancia de Cloud Run.
- IMAGE_URL: Una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latestSi 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. - GRPC_INSTANCE (opcional): Si se configura, se usa en el campo de instancia de
grpc.health.v1.HealthCheckRequestcuando se llama a la RPC degrpc.health.v1.Health.Check. - CONTAINER_PORT (opcional): El puerto del contenedor que se usa para tu instancia.
- DELAY (opcional): 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.
- THRESHOLD (opcional): Es la cantidad de veces que se debe reintentar el sondeo antes de apagar el contenedor. El valor predeterminado es 3.
- TIMEOUT (opcional): Es 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.
- PERIOD (opcional): Es el período (en segundos) en el que se realizará el sondeo. Por ejemplo,
2para realizar el sondeo cada 2 segundos. Especifica un valor de 1 segundo a 240 segundos. El valor predeterminado es 10 segundos.
Si creas una instancia nueva, omite este paso. Si actualizas una instancia existente, descarga su configuración de YAML:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
El sondeo de inicio de TCP predeterminado
Si no configuras de forma explícita un sondeo de inicio de TCP para una instancia nueva de Cloud Run, Cloud Run configurará automáticamente un sondeo de inicio de TCP con los siguientes valores predeterminados:
startupProbe:
timeoutSeconds: 240
periodSeconds: 240
failureThreshold: 1
Puedes cambiar estos valores predeterminados según las instrucciones de la sección Configuración de sondeo en esta página.
Requisitos y comportamiento del sondeo de inicio
| Tipo de sondeo | Requisitos | Comportamiento |
|---|---|---|
| Inicio de TCP | Ninguno | De forma predeterminada, Cloud Run realiza una conexión TCP para abrir el socket TCP en el puerto especificado. Si Cloud Run no puede establecer una conexión, indica un error. Si un sondeo de inicio no se realiza de forma correcta dentro del tiempo especificado ( failureThreshold * periodSeconds), que no puede superar los 240 segundos, el contenedor se cierra. Consulta también Valores predeterminados de TCP. |
| Inicio de HTTP | Crea un extremo de verificación de estado HTTP Usa HTTP/1 |
Después de configurar el sondeo, Cloud Run realiza una solicitud HTTP GET al extremo de verificación de estado (por ejemplo, /health). Cualquier respuesta 2XX o 3XX es correcta, y 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. |
| Inicio de gRPC | Implementa el protocolo de verificación de estado de gRPC en tu instancia de Cloud Run. | 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. |
Configura los sondeos de funcionamiento
Puedes configurar sondeos de HTTP y gRPC con el SDK de Google Cloud o YAML:
gcloud
Activo de HTTP
Agrega un extremo HTTP/1 (el valor predeterminado de Cloud Run, no HTTP/2) en el código de tu instancia para responder al sondeo. El nombre del extremo (por ejemplo, /startup, /health o /are_you_ready) debe coincidir con el path en la configuración del sondeo. Los extremos de verificación de estado de HTTP son accesibles de forma externa y siguen los mismos principios que cualquier otro extremo de instancia de HTTP expuesto de forma externa.
Ejecuta el comando siguiente:
gcloud beta run instances deploy INSTANCE \
--image=IMAGE_URL \
--liveness-probe httpGet.path=PATH,httpGet.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
Reemplaza lo siguiente:
- INSTANCE: El nombre de tu instancia de Cloud Run.
- IMAGE_URL: Una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latestSi 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: Es una ruta relativa al extremo HTTP, por ejemplo,
/health. - CONTAINER_PORT (opcional): Se configura como el puerto del contenedor que se usa para tu instancia.
- DELAY (opcional): 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.
- THRESHOLD (opcional): Es la cantidad de veces que se debe reintentar el sondeo antes de apagar el contenedor. El valor predeterminado es 3.
- Es opcional. TIMEOUT: Es 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. - Es opcional. PERIOD: Es el período (en segundos) en el que se realizará el sondeo. Por ejemplo,
2para realizar el sondeo cada 2 segundos. Especifica un valor de 1 segundo a 3,600 segundos. El valor predeterminado es 10 segundos.
gRPC en funcionamiento
Asegúrate de que tu imagen de contenedor implemente el protocolo de verificación de estado de gRPC.
Ejecuta el comando siguiente:
gcloud beta run instances deploy INSTANCE \
--image=IMAGE_URL \
--liveness-probe grpc.port=CONTAINER_PORT,grpc.service=GRPC_SERVICE,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
Reemplaza lo siguiente:
- INSTANCE: El nombre de tu instancia de Cloud Run.
- IMAGE_URL: Una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latestSi 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. - GRPC_INSTANCE (opcional): Si se configura, se usa en el campo de instancia de
grpc.health.v1.HealthCheckRequestcuando se llama a la RPC degrpc.health.v1.Health.Check. - CONTAINER_PORT (opcional): El puerto del contenedor que se usa para tu instancia.
- DELAY (opcional): 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.
- THRESHOLD (opcional): Es la cantidad de veces que se debe reintentar el sondeo antes de apagar el contenedor. El valor predeterminado es 3.
- Es opcional. TIMEOUT: Es 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. - Es opcional. PERIOD: Es el período (en segundos) en el que se realizará el sondeo. Por ejemplo,
2para realizar el sondeo cada 2 segundos. Especifica un valor de 1 segundo a 3,600 segundos. El valor predeterminado es 10 segundos.
YAML
Activo de HTTP
Agrega un extremo HTTP/1 (el valor predeterminado de Cloud Run, no HTTP/2) en el código de tu instancia para responder al sondeo. El nombre del extremo (por ejemplo, /startup, /health o /are_you_ready) debe coincidir con el path en la configuración del sondeo. Los extremos de verificación de estado de HTTP son accesibles de forma externa y siguen los mismos principios que cualquier otro extremo de instancia de HTTP expuesto de forma externa.
-
Si creas una instancia nueva, omite este paso. Si actualizas una instancia existente, descarga su configuración de YAML:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
Configura el atributo
livenessProbecomo se muestra a continuación:apiVersion: serving.knative.dev/v1 apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA 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
Reemplaza lo siguiente:
- INSTANCE: El nombre de tu instancia de Cloud Run.
- IMAGE_URL: Una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latestSi 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: Es una ruta relativa al extremo HTTP, por ejemplo,
/health. - CONTAINER_PORT (opcional): Se configura como el puerto del contenedor que se usa para tu instancia.
- DELAY (opcional): 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.
- THRESHOLD (opcional): Es la cantidad de veces que se debe reintentar el sondeo antes de apagar el contenedor. El valor predeterminado es 3.
- Opcional: Se puede usar
httpHeaderspara proporcionar varios encabezados personalizados o repetidos con los campos HEADER_NAME y HEADER_VALUE, como se muestra. - Es opcional. TIMEOUT: Es 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. - Es opcional. PERIOD: Es el período (en segundos) en el que se realizará el sondeo. Por ejemplo,
2para realizar el sondeo cada 2 segundos. Especifica un valor de 1 segundo a 3,600 segundos. El valor predeterminado es 10 segundos.
-
Crea o actualiza la instancia con el siguiente comando:
gcloud beta run instances replace instance.yaml
gRPC en funcionamiento
Asegúrate de que tu imagen de contenedor implemente el protocolo de verificación de estado de gRPC.
-
Si creas una instancia nueva, omite este paso. Si actualizas una instancia existente, descarga su configuración de YAML:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
Configura el atributo
livenessProbecomo se muestra a continuación:apiVersion: serving.knative.dev/v1 apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA spec: containers: - image: IMAGE_URL livenessProbe: grpc: port: CONTAINER_PORT service: GRPC_SERVICE initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
Reemplaza lo siguiente:
- INSTANCE: El nombre de tu instancia de Cloud Run.
- IMAGE_URL: Una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latestSi 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. - GRPC_INSTANCE (opcional): Si se configura, se usa en el campo de instancia de
grpc.health.v1.HealthCheckRequestcuando se llama a la RPC degrpc.health.v1.Health.Check. - CONTAINER_PORT (opcional): El puerto del contenedor que se usa para tu instancia.
- DELAY (opcional): 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.
- THRESHOLD (opcional): Es la cantidad de veces que se debe reintentar el sondeo antes de apagar el contenedor. El valor predeterminado es 3.
- Es opcional. TIMEOUT: Es 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. - Es opcional. PERIOD: Es el período (en segundos) en el que se realizará el sondeo. Por ejemplo,
2para realizar el sondeo cada 2 segundos. Especifica un valor de 1 segundo a 3,600 segundos. El valor predeterminado es 10 segundos.
-
Crea o actualiza la instancia con el siguiente comando:
gcloud beta run instances replace instance.yaml
Requisitos y comportamiento del sondeo de funcionamiento
| Tipo de sondeo | Requisitos | Comportamiento |
|---|---|---|
| Activo de HTTP | Crea un extremo de verificación de estado HTTP Usa HTTP/1 |
El sondeo de capacidad de respuesta comienza solo después de que el sondeo de inicio se realiza correctamente. Después de configurar el sondeo y de que cualquier sondeo de inicio se realice correctamente, Cloud Run realiza una solicitud GET HTTP al extremo de verificación de estado (por ejemplo, /health). Cualquier respuesta 2XX o 3XX es correcta, y todo lo demás indica un error.Si un sondeo de funcionamiento no se realiza correctamente dentro del tiempo especificado ( failureThreshold * periodSeconds), el contenedor se cierra con una señal 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. |
| gRPC en funcionamiento | Implementa el protocolo de verificación de estado de gRPC en tu instancia de Cloud Run. | 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. 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 a la instancia. 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. |
Configura los sondeos de preparación
Se aplican las siguientes limitaciones a las sondas de disponibilidad:- Si habilitas la afinidad de sesión, Cloud Run seguirá enviando solicitudes a la misma instancia, incluso si falla su verificación de disponibilidad.
Puedes configurar un sondeo de disponibilidad con Google Cloud CLI o YAML:
gcloud
Disponibilidad de HTTP
Agrega un extremo HTTP/1 (el valor predeterminado de Cloud Run, no HTTP/2) en el código de tu instancia para responder al sondeo. El nombre del extremo (por ejemplo, /startup, /health o /are_you_ready) debe coincidir con el path en la configuración del sondeo. Los extremos de verificación de estado de HTTP son accesibles de forma externa y siguen los mismos principios que cualquier otro extremo de instancia de HTTP expuesto de forma externa.
Ejecuta el comando siguiente:
gcloud beta run instances deploy INSTANCE \
--image=IMAGE_URL \
--readiness-probe httpGet.path=PATH,httpGet.port=CONTAINER_PORT,successThreshold=SUCCESS_THRESHOLD,failureThreshold=FAILURE_THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
Reemplaza lo siguiente:
- INSTANCE: El nombre de tu instancia de Cloud Run.
- IMAGE_URL: Una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latestSi 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 (opcional): Es la ruta relativa al extremo HTTP, por ejemplo,
/are_you_ready. La ruta de acceso predeterminada es/. - CONTAINER_PORT (opcional): Es el puerto del contenedor que se usa para tu instancia. El puerto predeterminado es el puerto de entrada principal.
- SUCCESS_THRESHOLD (opcional): Es la cantidad mínima de resultados consecutivos para que el sondeo se considere exitoso después de haber fallado. El valor predeterminado es 2.
- FAILURE_THRESHOLD (opcional): Es la cantidad de veces que se debe reintentar el sondeo antes de informar una falla, lo que hace que la instancia deje de recibir tráfico. El valor predeterminado es 3.
- TIMEOUT (opcional): Es 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 300. El valor predeterminado es 1. - PERIOD (opcional): Es el período (en segundos) en el que se realizará el sondeo.
Por ejemplo,
2para realizar el sondeo cada 2 segundos. Especifica un valor de 1 a 300. El valor predeterminado es 10 segundos.
Preparación de gRPC
Asegúrate de que tu imagen de contenedor implemente el protocolo de verificación de estado de gRPC.
Ejecuta el comando siguiente:
gcloud beta run instances deploy INSTANCE \
--image=IMAGE_URL \
--readiness-probe grpc.port=CONTAINER_PORT,grpc.instance=GRPC_INSTANCE,successThreshold=SUCCESS_THRESHOLD,failureThreshold=FAILURE_THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
Reemplaza lo siguiente:
- INSTANCE: El nombre de tu instancia de Cloud Run.
- IMAGE_URL: Una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latestSi 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. - CONTAINER_PORT (opcional): Es el puerto del contenedor que se usa para tu instancia. El puerto predeterminado es el puerto de entrada principal.
- GRPC_INSTANCE (opcional): Si se configura, se usa en el campo de instancia de
grpc.health.v1.HealthCheckRequestcuando se llama a la RPC degrpc.health.v1.Health.Check. - SUCCESS_THRESHOLD (opcional): Es la cantidad mínima de resultados consecutivos para que el sondeo se considere exitoso después de haber fallado. El valor predeterminado es 2.
- FAILURE_THRESHOLD (opcional): Es la cantidad de veces que se debe reintentar el sondeo antes de informar una falla, lo que hace que la instancia deje de recibir tráfico. El valor predeterminado es 3.
- TIMEOUT (opcional): Es 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 300. El valor predeterminado es 1. - PERIOD (opcional): Es el período (en segundos) en el que se realizará el sondeo.
Por ejemplo,
2para realizar el sondeo cada 2 segundos. Especifica un valor de 1 a 300. El valor predeterminado es 10 segundos.
YAML
Disponibilidad de HTTP
Agrega un extremo HTTP/1 (el valor predeterminado de Cloud Run, no HTTP/2) en el código de tu instancia para responder al sondeo. El nombre del extremo (por ejemplo, /startup, /health o /are_you_ready) debe coincidir con el path en la configuración del sondeo. Los extremos de verificación de estado de HTTP son accesibles de forma externa y siguen los mismos principios que cualquier otro extremo de instancia de HTTP expuesto de forma externa.
-
Si creas una instancia nueva, omite este paso. Si actualizas una instancia existente, descarga su configuración de YAML:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
Configura el atributo
readinessProbecomo se muestra a continuación:apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA spec: template: metadata: spec: containers: - image: IMAGE_URL readinessProbe: httpGet: path: PATH port: CONTAINER_PORT successThreshold: SUCCESS_THRESHOLD failureThreshold: FAILURE_THRESHOLD timeoutSeconds: TIMEOUT periodSeconds: PERIOD
Reemplaza lo siguiente:
- INSTANCE: El nombre de tu instancia de Cloud Run.
- IMAGE_URL: Una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latestSi 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 (opcional): Es la ruta relativa al extremo HTTP, por ejemplo,
/are_you_ready. La ruta de acceso predeterminada es/. - CONTAINER_PORT (opcional): Es el puerto del contenedor que se usa para tu instancia. El puerto predeterminado es el puerto de entrada principal.
- SUCCESS_THRESHOLD (opcional): Es la cantidad mínima de resultados consecutivos para que el sondeo se considere exitoso después de haber fallado. El valor predeterminado es 2.
- FAILURE_THRESHOLD (opcional): Es la cantidad de veces que se debe reintentar el sondeo antes de informar una falla, lo que hace que la instancia deje de recibir tráfico. El valor predeterminado es 3.
- TIMEOUT (opcional): Es 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 300. El valor predeterminado es 1. - PERIOD (opcional): Es el período (en segundos) en el que se realizará el sondeo.
Por ejemplo,
2para realizar el sondeo cada 2 segundos. Especifica un valor de 1 a 300. El valor predeterminado es 10 segundos.
-
Crea o actualiza la instancia con el siguiente comando:
gcloud beta run instances replace instance.yaml
Preparación de gRPC
Asegúrate de que tu imagen de contenedor implemente el protocolo de verificación de estado de gRPC.
-
Si creas una instancia nueva, omite este paso. Si actualizas una instancia existente, descarga su configuración de YAML:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
Configura el atributo
readinessProbecomo se muestra a continuación:apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA spec: template: metadata: spec: containers: - image: IMAGE_URL readinessProbe: grpc: port: CONTAINER_PORT instance: GRPC_INSTANCE successThreshold: SUCCESS_THRESHOLD failureThreshold: FAILURE_THRESHOLD timeoutSeconds: TIMEOUT periodSeconds: PERIOD
Reemplaza lo siguiente:
- INSTANCE: El nombre de tu instancia de Cloud Run.
- IMAGE_URL: Una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latestSi 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. - CONTAINER_PORT (opcional): Es el puerto del contenedor que se usa para tu instancia. El puerto predeterminado es el puerto de entrada principal.
- GRPC_INSTANCE (opcional): Si se configura, se usa en el campo de instancia de
grpc.health.v1.HealthCheckRequestcuando se llama a la RPC degrpc.health.v1.Health.Check. - SUCCESS_THRESHOLD (opcional): Es la cantidad mínima de resultados consecutivos para que el sondeo se considere exitoso después de haber fallado. El valor predeterminado es 2.
- FAILURE_THRESHOLD (opcional): Es la cantidad de veces que se debe reintentar el sondeo antes de informar una falla, lo que hace que la instancia deje de recibir tráfico. El valor predeterminado es 3.
- TIMEOUT (opcional): Es 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 300. El valor predeterminado es 1. - PERIOD (opcional): Es el período (en segundos) en el que se realizará el sondeo.
Por ejemplo,
2para realizar el sondeo cada 2 segundos. Especifica un valor de 1 a 300. El valor predeterminado es 10 segundos.
-
Crea o actualiza la instancia con el siguiente comando:
gcloud beta run instances replace instance.yaml
Asignación de CPU
- La CPU siempre se asigna cuando se ejecutan los sondeos.
- Todos los sondeos se facturan por el consumo de CPU y uso de memoria, pero no se aplican cargos basados en solicitudes.
¿Qué sigue?
- Obtén más información para configurar un protocolo de verificación de estado de gRPC.