Configura las verificaciones de estado de los contenedores para las instancias

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: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.
  • 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, 2 para 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: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: 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, 2 para 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: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.
  • GRPC_INSTANCE (opcional): Si se configura, se usa en el campo de instancia de grpc.health.v1.HealthCheckRequest cuando se llama a la RPC de grpc.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, 2 para 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

  1. 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
  2. Configura el atributo startupProbe como 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: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.
    • 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, 2 para realizar el sondeo cada 2 segundos. Especifica un valor de 1 segundo a 240 segundos. El valor predeterminado es 10 segundos.
  3. 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.

  1. 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
  2. Configura el atributo startupProbe como 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: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: 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 httpHeaders para 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, 2 para realizar el sondeo cada 2 segundos. Especifica un valor de 1 segundo a 240 segundos. El valor predeterminado es 10 segundos.
    1. 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.

  1. 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
  2. Configura el atributo startupProbe como 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: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.
    • GRPC_INSTANCE (opcional): Si se configura, se usa en el campo de instancia de grpc.health.v1.HealthCheckRequest cuando se llama a la RPC de grpc.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, 2 para realizar el sondeo cada 2 segundos. Especifica un valor de 1 segundo a 240 segundos. El valor predeterminado es 10 segundos.
  3. 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: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: 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, 2 para 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: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.
  • GRPC_INSTANCE (opcional): Si se configura, se usa en el campo de instancia de grpc.health.v1.HealthCheckRequest cuando se llama a la RPC de grpc.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, 2 para 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.

  1. 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
  2. Configura el atributo livenessProbe como 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: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: 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 httpHeaders para 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, 2 para realizar el sondeo cada 2 segundos. Especifica un valor de 1 segundo a 3,600 segundos. El valor predeterminado es 10 segundos.
  3. 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.

  1. 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
  2. Configura el atributo livenessProbe como 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: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.
    • GRPC_INSTANCE (opcional): Si se configura, se usa en el campo de instancia de grpc.health.v1.HealthCheckRequest cuando se llama a la RPC de grpc.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, 2 para realizar el sondeo cada 2 segundos. Especifica un valor de 1 segundo a 3,600 segundos. El valor predeterminado es 10 segundos.

  3. 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: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 (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, 2 para 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: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.
  • 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.HealthCheckRequest cuando se llama a la RPC de grpc.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, 2 para 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.

  1. 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
  2. Configura el atributo readinessProbe como 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: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 (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, 2 para realizar el sondeo cada 2 segundos. Especifica un valor de 1 a 300. El valor predeterminado es 10 segundos.

  3. 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.

  1. 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
  2. Configura el atributo readinessProbe como 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: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.
    • 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.HealthCheckRequest cuando se llama a la RPC de grpc.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, 2 para realizar el sondeo cada 2 segundos. Especifica un valor de 1 a 300. El valor predeterminado es 10 segundos.

  3. 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?