Cantidad mínima de instancias (servicios)

En esta página, se describe cómo habilitar instancias inactivas para tu servicio con la configuración de número mínimo de instancias.

En los servicios de Cloud Run, de forma predeterminada, Cloud Run reduce la escala de la cantidad de instancias según el número de solicitudes entrantes. Sin embargo, si tu servicio requiere una latencia reducida, especialmente cuando escalas desde cero instancias activas, puedes cambiar este comportamiento predeterminado si especificas una cantidad mínima de instancias de contenedor que se deben mantener en espera y listas para entregar solicitudes. Consulta Sugerencias generales para el desarrollo a fin de obtener más detalles sobre esta optimización.

Cloud Run quita las instancias que no entregan solicitudes (inactivas). Con el mínimo de instancias establecidas, Cloud Run mantiene al menos la cantidad mínima de instancias en ejecución, incluso si no entregan solicitudes. Las instancias activas superiores a min-instances pueden quedar inactivas si no reciben solicitudes.

Por ejemplo, si min-instances es 10 y la cantidad de instancias activas es 0, entonces la cantidad de instancias inactivas es 10. Cuando la cantidad de instancias activas aumenta a 6, la cantidad de instancias inactivas disminuye a 4.

Aplica instancias mínimas a nivel de servicio en comparación con a nivel de revisión

Puedes configurar el número mínimo de instancias a nivel de servicio o de revisión. Google recomienda que apliques instancias mínimas a nivel de servicio y evites combinar instancias mínimas a nivel de servicio y de revisión.

Si aplicas instancias mínimas a nivel de revisión, la configuración entrará en vigor cuando se implemente la revisión. Si aplicas esta función a nivel del servicio, la configuración entra en vigor sin necesidad de implementar una revisión nueva.

Revisiones etiquetadas e instancias mínimas a nivel de servicio

Las revisiones etiquetadas se inician, pero no se consideran en las instancias mínimas del nivel de servicio si no forman parte de una división del tráfico.

Facturación

Las instancias que se siguen ejecutando con la función de instancias mínimas generan costos de facturación. Debido a que estos cargos son muy predecibles, Google recomienda adquirir un descuento por compromiso de uso.

Cantidad mínima de instancias y CPU siempre asignada

Puedes configurar la CPU para que se asigne siempre si necesitas CPU fuera de las solicitudes.

Cantidad mínima de reinicios de instancias

La cantidad mínima de instancias se puede reiniciar en cualquier momento.

Revisiones y número mínimo de instancias

Cuando se establecen instancias mínimas a nivel de servicio, se distribuyen a todas las revisiones que entregan tráfico de forma proporcional a la división del tráfico.

Cuando se establecen instancias mínimas a nivel de revisión, se inician instancias mínimas cada vez que se ejecuta la revisión a la que se hace referencia en una división del tráfico (incluso en 0%) o tiene un etiqueta de tráfico asignado.

Configura y actualiza instancias mínimas a nivel de servicio

De forma predeterminada, las instancias de contenedor tienen las instancias mínimas a nivel de servicio desactivadas, con una configuración de 0. Puedes cambiar esta configuración predeterminada con la consola de Google Cloud, Google Cloud CLI o un archivo YAML:

Console

  1. En la consola de Google Cloud ve a Cloud Run:

    Ir a Cloud Run

  2. Si quieres configurar un servicio nuevo, haz clic en Crear servicio . Si quieres configurar un servicio existente, haz clic en el servicio para mostrar su panel de detalles y, luego, haz clic en el ícono de lápiz junto a Cantidad mínima de instancias en la parte superior derecha del panel de detalles.

  3. Ubica el formulario Ajuste de escala automático del servicio:

    imagen

  4. En el campo Número mínimo de instancias, especifica la cantidad de instancias de contenedor que se mantendrán en espera, listas para recibir solicitudes.

  5. Haz clic en Crear para un servicio nuevo o en Implementar en un servicio existente.

Línea de comandos

Actualiza service-min-instances para un servicio determinado mediante el siguiente comando:

gcloud beta run services update SERVICE --service-min-instances MIN-VALUE

Reemplazar

  • SERVICE por el nombre de tu servicio
  • MIN-VALUE por la cantidad de instancias de contenedor que deseas que se mantengan en espera, listas para recibir solicitudes. Especifica default para borrar cualquier configuración de número mínimo de instancias

Como alternativa, puedes configurar el valor de service-min-instances durante la implementación mediante el siguiente comando:

gcloud beta run deploy --image IMAGE_URL --service-min-instances MIN-VALUE

Reemplazar

  • IMAGE_URL por una referencia a la imagen del contenedor, como us-docker.pkg.dev/cloudrun/container/hello:latest Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL tiene el formato REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • MIN-VALUE por la cantidad de instancias de contenedor que deseas que se mantengan en espera, listas para recibir solicitudes. Especifica default para borrar cualquier configuración de número mínimo de instancias

YAML

Puedes descargar y ver las configuraciones 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, ejecuta el siguiente comando:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Actualiza el atributo run.googleapis.com/minScale:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
      annotations:
        run.googleapis.com/launch-stage: BETA
        run.googleapis.com/minScale: 'MIN_INSTANCE'

    Reemplazar

    • SERVICE por el nombre del servicio de Cloud Run
    • MIN-INSTANCE por la cantidad de instancias que se mantendrán en espera, listas para recibir solicitudes.
  3. Reemplaza el servicio por la configuración nueva mediante el siguiente comando:

    gcloud beta run services replace service.yaml

Bibliotecas cliente

Para actualizar las instancias mínimas a nivel de servicio para tu servicio desde el código, haz lo siguiente:

API de REST

Para actualizar las instancias mínimas a nivel de servicio para un servicio determinado, envía una solicitud HTTP PATCH al extremo service de la API de Cloud Run Admin.

Por ejemplo, con curl:

curl -H "Content-Type: application/json" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-X PATCH \
-d '{ "scaling": { "minInstanceCount": MIN-VALUE }}' \
https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/services/SERVICE?update_mask=scaling.minInstanceCount

Reemplaza lo siguiente:

  • ACCESS_TOKEN por un token de acceso válido para una cuenta que tenga los permisos de IAM para actualizar un servicio. Por ejemplo, si accediste a gcloud, puedes recuperar un token de acceso con gcloud auth print-access-token. Desde una instancia de contenedor de Cloud Run, puedes recuperar un token de acceso a través del servidor de metadatos de instancias de contenedor.
  • MIN-VALUE por la cantidad de instancias de contenedor que deseas que se mantengan en espera, listas para recibir solicitudes.
  • SERVICE por el nombre del servicio
  • REGION por la región de Google Cloud del servicio
  • PROJECT-ID por el ID del proyecto de Google Cloud.

Visualiza el nivel mínimo de instancias en el nivel de servicio

Para ver la configuración actual mínima de instancias a nivel de servicio para tu servicio de Cloud Run, sigue estos pasos:

Console

  1. En la consola de Google Cloud ve a Cloud Run:

    Ir a Cloud Run

  2. Haz clic en el servicio que te interesa para abrir el panel Detalles del servicio.

  3. La configuración actual se muestra en la parte superior derecha del panel de detalles del servicio, junto a Cantidad mínima de instancias.

Línea de comandos

  1. Usa el siguiente comando:

    gcloud run services describe SERVICE
  2. Busca el valor de Instancias mínimas de nivel de servicio: en la configuración que se muestra.

Configura y actualiza instancias mínimas a nivel de revisión

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.

De forma predeterminada, las instancias de contenedor tienen min-instances desactivado, con una configuración de 0. Puedes cambiar esta configuración predeterminada mediante la consola de Google Cnloud, Google Cloud CLI o un archivo YAML cuando creas un servicio nuevo o implementas una revisión nueva:

Console

  1. En la consola de Google Cloud ve a Cloud Run:

    Ir a Cloud Run

  2. Haz clic en Crear servicio si quieres configurar un servicio nuevo en el que realizarás la implementación. Si quieres configurar un servicio existente, haz clic en el servicio y, luego, en implementar y editar la nueva revisión.

  3. Si configuras un servicio nuevo, completa la página de configuración del servicio inicial como desees y haz clic en Contenedor, herramientas de redes, seguridad para expandir la página de configuración del servicio.

  4. Haz clic en la pestaña Contenedor.

    imagen

    • En el campo Número mínimo de instancias, especifica la cantidad de instancias de contenedor que deseas que se mantengan en espera, listas para recibir solicitudes.
  5. Haz clic en Crear o Implementar.

Línea de comandos

Puedes actualizar el valor de min-instance de un servicio determinado mediante el siguiente comando:

gcloud run services update SERVICE --min-instances MIN-VALUE

Reemplazar

  • SERVICE por el nombre de tu servicio
  • MIN-VALUE por la cantidad de instancias de contenedor que deseas que se mantengan en espera, listas para recibir solicitudes. Especifica default para borrar cualquier configuración de número mínimo de instancias

También puedes configurar el valor de min-instance durante la implementación mediante el siguiente comando:

gcloud run deploy --image IMAGE_URL --min-instances MIN-VALUE

Reemplazar

  • IMAGE_URL por una referencia a la imagen del contenedor, como us-docker.pkg.dev/cloudrun/container/hello:latest Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL tiene el formato REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • MIN-VALUE por la cantidad de instancias de contenedor que deseas que se mantengan en espera, listas para recibir solicitudes. Especifica default para borrar cualquier configuración de número mínimo de instancias

YAML

Puedes descargar y ver las configuraciones 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, ejecuta el siguiente comando:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Actualiza el atributo autoscaling.knative.dev/minScale::

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            autoscaling.knative.dev/minScale: 'MIN-INSTANCE'
          name: REVISION

    Reemplazar

    • SERVICE por el nombre del servicio de Cloud Run
    • MIN-INSTANCE por la cantidad de instancias que deseas que se mantengan en espera, listas para recibir solicitudes
    • REVISION por un nombre de revisión nuevo o bórralo (si está presente). Si proporcionas un nuevo nombre de revisión, debe cumplir con los siguientes criterios:
      • Comienza con SERVICE-
      • Solo contiene letras minúsculas, números y -
      • No termina con -
      • No supera los 63 caracteres
  3. Reemplaza el servicio por la configuración nueva mediante el siguiente comando:

    gcloud run services replace service.yaml

Terraform

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

El siguiente recurso google_cloud_run_v2_service especifica una cantidad mínima de instancias de 1 en template.scaling. Reemplaza 1 por tu propia cantidad mínima de instancias.

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-min-instances"
  location = "us-central1"

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
    }
    scaling {
      # Min instances
      min_instance_count = 1
    }
  }
}

Visualiza la configuración mínima de instancias a nivel de revisión

Para ver la configuración actual mínima de instancias a nivel de revisión para el servicio de Cloud Run, sigue estos pasos:

Console

  1. En la consola de Google Cloud ve a Cloud Run:

    Ir a Cloud Run

  2. Haz clic en el servicio que te interesa para abrir la página Detalles del servicio.

  3. Haz clic en la pestaña Revisiones.

  4. En el panel de detalles a la derecha, la configuración de instancias mínimas a nivel de revisión se muestra en la pestaña Contenedor.

Línea de comandos

  1. Usa el siguiente comando:

    gcloud run services describe SERVICE
  2. Busca la configuración de instancias mínimas a nivel de revisión en la configuración que se muestra.

Usa instancias mínimas o máximas a nivel de servicio y de revisión

En la siguiente tabla, se muestra el comportamiento si combinas las instancias mínimas a nivel de servicio y las instancias mínimas o máximas a nivel de revisión:

Parámetros de configuración Comportamiento
Se establecen las instancias mínimas a nivel de servicio y a nivel de revisión. El valor efectivo para la revisión es el mayor entre las instancias mínimas a nivel de revisión y las instancias mínimas a nivel de servicio.
Se establecen las instancias mínimas a nivel de servicio y las instancias máximas a nivel de revisión. El valor efectivo para la revisión es el menor entre las instancias máximas a nivel de revisión y las instancias mínimas a nivel de servicio.

Esto es verdadero incluso si la cantidad máxima de instancias a nivel de revisión evita que el servicio alcance la cantidad de instancias configuradas para instancias mínimas a nivel de servicio.

Usa instancias mínimas de nivel de servicio con división de tráfico

Si usas la división del tráfico, las instancias mínimas a nivel de servicio se dividen entre las revisiones según la proporción de la división del tráfico. Por ejemplo, si las instancias mínimas a nivel de servicio equivalen a 10, una división del tráfico de 50/50 asigna 5 instancias mínimas a nivel de servicio a cada revisión.

En la siguiente tabla, se muestran situaciones de configuración de muestra:

Caso práctico de muestra Configuración de ejemplo Comportamiento resultante
No hay configuración de nivel de revisión Cantidad mínima de instancias a nivel de servicio: 10
  • Instancias mínimas de la revisión A: 0
  • Instancias mínimas de la revisión B: 0
  • División del tráfico: 60/40
La revisión A recibe 6 instancias de las instancias mínimas a nivel de servicio proporcionales a la división del tráfico. La revisión B recibe 4 instancias de las instancias mínimas a nivel de servicio proporcionales a la división del tráfico.
Recibe más instancias que las instancias mínimas en el nivel de servicio debido a las instancias mínimas en el nivel de revisión Cantidad mínima de instancias a nivel de servicio: 10
  • Instancias mínimas de la revisión A: 6
  • Instancias mínimas de la revisión B: 0
  • División del tráfico: 50/50
La revisión A recibe 6 instancias de las instancias mínimas a nivel de revisión. La revisión B recibe 5 instancias de las instancias mínimas a nivel de servicio proporcionales a la división del tráfico. Esto supera el mínimo de instancias en el nivel de servicio y está previsto.
Recibes instancias mínimas en el nivel de servicio debido a la cantidad máxima de instancias a nivel de revisión. Cantidad mínima de instancias a nivel de servicio: 10
  • Instancias mínimas de la revisión A: 0
  • Instancias máximas de la revisión A: 3
  • Instancias mínimas de la revisión B: 0
  • División del tráfico: 50/50
La revisión A recibe 3 instancias de instancias mínimas a nivel de servicio que genera la división del tráfico, pero se limita a su cantidad máxima de instancias.
La revisión B recibe 5 instancias de instancias mínimas a nivel de servicio proporcionales a la división del tráfico. Esto da como resultado 8 instancias a nivel de servicio, ya que 2 se pierden debido a la cantidad máxima de instancias a nivel de revisión de la revisión A.
El mínimo de instancias en el nivel de servicio es mayor que la cantidad de revisiones en la división del tráfico y hay una cantidad fraccionaria de instancias proporcional a la división del tráfico Instancias mínimas de nivel de servicio: 3 La revisión A obtiene 1 instancia mínima y la revisión B obtiene 2 instancias mínimas. El recuento de instancias para el servicio es 3.