Verificaciones de estado de contenedores (servicios)

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Puedes configurar los sondeos de verificación de estado de inicio HTTP y TCP para los servicios nuevos y existentes de Cloud Run.

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

Configura sondeos de inicio

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

Puedes configurar los siguientes tipos de sondeos:

  • Sondeo de inicio HTTP
  • Sondeo de inicio TCP

Configura un sondeo de inicio para un servicio de Cloud Run mediante el archivo YAML. La configuración varía según el tipo de sondeo.

Configura un sondeo de inicio HTTP

No hay sondeos de inicio HTTP predeterminados para HTTP, pero puedes configurar uno para tu servicio de Cloud Run. Ten en cuenta que usar un sondeo de verificación de estado HTTP requiere que crees un extremo de verificación de estado HTTP correspondiente en el servicio para responder al sondeo.

Después de configurar el sondeo de inicio, Cloud Run realiza una solicitud HTTP GET al extremo de verificación de estado del servicio (por ejemplo, /ready). Cualquier respuesta entre 200 y 400 es un éxito, ya que 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.

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

Consola

  1. Ir a Cloud Run

  2. Haz clic en el servicio que deseas configurar.

  3. Haz clic en la pestaña YAML.

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

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
    name: SERVICE
    spec:
    template:
    metadata:
    spec:
      containers:
        image: IMAGE_URL
        startupProbe:
          httpGet:
            path: PATH
            httpHeaders:
              - name: HEADER_NAME
                value: HEADER_VALUE
          initialDelaySeconds: DELAY
          timeoutSeconds: TIMEOUT
          failureThreshold: THRESHOLD
          periodSeconds: PERIOD
    

    replace

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

YAML

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

  1. Para ver y descargar la configuración:

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

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
        spec:
          containers:
          - image: IMAGE_URL
            startupProbe:
              httpGet:
                path: PATH
                httpHeaders:
                  - name: HEADER_NAME
                    value: HEADER_VALUE
              initialDelaySeconds: DELAY
              timeoutSeconds: TIMEOUT
              failureThreshold: THRESHOLD
              periodSeconds: PERIOD
    

    replace

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

    gcloud run services replace service.yaml

Crear extremos de verificación de estado HTTP

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

startupProbe:
  httpGet:
    path: /ready

Configura un sondeo de inicio de TCP

Un sondeo de inicio de TCP se configura automáticamente con los valores predeterminados para un servicio de Cloud Run nuevo si no configuras un sondeo de inicio tú mismo. El sondeo predeterminado es equivalente al siguiente:

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

En el ejemplo anterior, port ya se estableció en el puerto del contenedor y permanecerá configurado en el puerto del contenedor, incluso si intentas configurarlo cuando actualizas la configuración del sondeo.

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

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

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

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

Consola

  1. Ir a Cloud Run

  2. Haz clic en el servicio que deseas configurar.

  3. Haz clic en la pestaña YAML.

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

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
    name: SERVICE
    spec:
    template:
      metadata:
      spec:
        containers:
        - image: IMAGE_URL
          startupProbe:
            tcpSocket:
              port: CONTAINER_PORT
            initialDelaySeconds: DELAY
            failureThreshold: THRESHOLD
            periodSeconds: PERIOD
    

    replace

    • SERVICE por el nombre del servicio de Cloud Run
    • IMAGE_URL por una referencia a la imagen de contenedor, como us-docker.pkg.dev/cloudrun/container/hello:latest
    • CONTAINER_PORT ya está configurado en cualquiera que sea el puerto del contenedor. Permanecerá en el puerto del contenedor incluso si intentas configurarlo cuando actualizas el sondeo.
    • DELAY con una cantidad de segundos que se espera después de que el contenedor se inició antes de realizar el primer sondeo. Especifica un valor de 0 segundos a 240 segundos. El valor predeterminado es 0 segundos.
    • THRESHOLD por la cantidad de veces que se debe reintentar el sondeo antes de marcar el contenedor como No listo El valor predeterminado es 3.
    • PERIOD por la frecuencia (en segundos) para realizar el sondeo. Especifica un valor de 1 segundo a 240 segundos. El valor predeterminado es 10 segundos.
  5. Haz clic en Guardar e implementar nueva revisión.

YAML

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

  1. Para ver y descargar la configuración:

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

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
        spec:
          containers:
          - image: IMAGE_URL
            startupProbe:
              tcpSocket:
                port: CONTAINER_PORT
              initialDelaySeconds: DELAY
              failureThreshold: THRESHOLD
              periodSeconds: PERIOD
                

    replace

    • SERVICE por el nombre del servicio de Cloud Run
    • IMAGE_URL por una referencia a la imagen de contenedor, como us-docker.pkg.dev/cloudrun/container/hello:latest
    • CONTAINER_PORT ya está establecido en cualquiera que sea el puerto del contenedor; este valor no se debe cambiar.
    • DELAY con una cantidad de segundos que se espera después de que el contenedor se inició antes de realizar el primer sondeo. Especifica un valor de 0 segundos a 240 segundos. El valor predeterminado es 0 segundos.
    • THRESHOLD por la cantidad de veces que se debe reintentar el sondeo antes de marcar el contenedor como No listo El valor predeterminado es 3.
    • PERIOD por la frecuencia (en segundos) para realizar el sondeo. Especifica un valor de 1 segundo a 240 segundos. El valor predeterminado es 10 segundos.
  3. Reemplaza el servicio por la configuración nueva mediante el siguiente comando:

    gcloud run services replace service.yaml