Establece instancias mínimas para los servicios

En esta página, se describe cómo habilitar instancias inactivas para un servicio configurando las instancias mínimas con el comportamiento predeterminado de ajuste de escala automático de Cloud Run. Para escalar tu servicio de forma manual, consulta ajuste de escala manual.

Si necesitas tener más control sobre el comportamiento de escalado automático de tu servicio, puedes establecer una cantidad mínima de instancias para evitar tiempos de inicio de contenedores lentos y reducir la latencia del servicio. 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 procesan solicitudes (inactivas). Cuando se establece la cantidad mínima de instancias, Cloud Run mantiene al menos la cantidad mínima de instancias en ejecución, incluso si estas no están procesando solicitudes. Las instancias activas superiores al número 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.

Ten en cuenta que, si un servicio no entregó tráfico recientemente, la métrica de instancias activas puede indicar que no hay instancias activas, incluso si especificaste una o más para la cantidad mínima de instancias.

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

Prácticas recomendadas para la alta disponibilidad

Para garantizar que tu servicio siga teniendo alta disponibilidad, considera configurar al menos 3 instancias mínimas.

Limitaciones de las instancias mínimas

La cantidad mínima de instancias es un objetivo de mejor esfuerzo para mantener las instancias activas y listas. Es posible que experimentes disminuciones temporales por debajo de la cantidad mínima de instancias configuradas debido a los siguientes riesgos no mitigados, incluso si configuras 3 o más instancias:

  • Capacidad de la zona o región: En caso de que se agote la capacidad de una zona o región, es posible que el sistema no pueda iniciar ni ejecutar instancias.
  • Reequilibrio de la infraestructura: En ocasiones, se reequilibra la infraestructura subyacente, lo que puede causar un retraso temporal en la activación de las instancias de reemplazo. Puedes obtener más información sobre cómo se finalizan las instancias en la documentación sobre el cierre de instancias.
  • Fallas de la aplicación: Si tu contenedor falla durante el inicio o no supera las verificaciones de estado de forma constante, el sistema intenta iniciar instancias de forma continua para cumplir con el mínimo, pero la cantidad de instancias en buen estado y listas para entregar solicitudes se mantiene por debajo del límite configurado.
  • Límites de cuota y facturación: Si tu proyecto alcanza los límites de cuota de CPU o memoria, o si se inhabilita la facturación, la plataforma detiene el escalamiento y puede finalizar las instancias, independientemente de la configuración de instancia mínima.

Facturación

Las instancias que se siguen ejecutando con la función de instancias mínimas generan costos de facturación.

En el siguiente diagrama, se muestra cómo funciona la facturación durante el ciclo de vida de la instancia cuando configuras instancias mínimas para un servicio o una revisión:

Llama a la API de Cloud Run Admin desde la consola de Google Cloud .
Figura 1. Una instancia de ejemplo que recibe y procesa tres solicitudes.

Según la configuración de facturación establecida, el servicio se factura de la siguiente manera:

  • En el caso de la facturación basada en solicitudes, se te cobra una tarifa más baja cuando las instancias están inactivas y esperan para procesar solicitudes. Si la cantidad mínima de instancias se establece en 0, no se te facturará cuando las instancias estén inactivas.
  • En el caso de la facturación basada en instancias, se te cobra la tarifa predeterminada por todo el ciclo de vida de la instancia. El tiempo desde el inicio hasta el cierre incluye el momento en que una instancia procesa solicitudes o está inactiva. En otras palabras, incluso si la cantidad mínima de instancias se establece en 0, se te facturará la tarifa predeterminada. Esta opción funciona bien si necesitas CPU fuera de las solicitudes. Si la cantidad mínima de instancias se establece en 0, se te facturará la tarifa predeterminada.

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. Obtén más información sobre el comportamiento cuando estableces la configuración de escalamiento 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 y número mínimo de instancias

Cuando la cantidad mínima de instancias se establece en el nivel de servicio, las solicitudes entrantes se distribuyen a todas las revisiones que entregan tráfico de manera 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 o tiene una etiqueta de tráfico asignada. Esto significa que la instancia se factura cuando procesa solicitudes y también cuando espera solicitudes entrantes.

Revisiones etiquetadas e instancias mínimas a nivel de servicio

Si se inicia una revisión con una etiqueta asignada, la instancia se cuenta para las instancias mínimas a nivel de servicio si forman parte de una división del tráfico.

Enrutamiento de solicitudes con instancias mínimas

Cuando estableces instancias mínimas, Cloud Run distribuye las solicitudes entrantes de manera uniforme en todas estas instancias aprovisionadas. Comprender este comportamiento es importante para administrar los costos, en especial con la facturación basada en solicitudes o si pretendes mantener instancias de reserva activa inactivas. Para minimizar los costos, establece la cantidad mínima de instancias en la cantidad de instancias necesarias para entregar tu tráfico típico.

Roles obligatorios

Para obtener los permisos que necesitas para configurar y, luego, implementar los servicios de Cloud Run, pídele a tu administrador que te otorgue los siguientes roles de IAM:

Si implementas un servicio o una función desde el código fuente, también debes tener roles adicionales otorgados en tu proyecto y en la cuenta de servicio de Cloud Build.

Para obtener una lista de los roles y los permisos de IAM asociados con Cloud Run, consulta los roles de IAM de Cloud Run y los permisos de IAM de Cloud Run. Si tu servicio de Cloud Run interactúa con las APIs deGoogle Cloud , como las bibliotecas cliente de Cloud, consulta la guía de configuración de identidades del servicio. Para obtener más información sobre cómo otorgar roles, consulta los permisos de implementación y cómo administrar el acceso.

Configura la cantidad mínima de instancias 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 deGoogle Cloud , Google Cloud CLI o un archivo YAML:

Console

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

    Ir a Cloud Run

  2. Selecciona Servicios en el menú de navegación de Cloud Run:

    1. Si estás configurando un servicio nuevo, haz clic en Implementar contenedor y completa la página de configuración inicial del servicio.

    2. Si quieres configurar un servicio existente, haz clic en el servicio y, luego, en la pestaña Ajuste de escala.

  3. En la sección Escalamiento del servicio, especifica la cantidad mínima de instancias de contenedor en el campo Cantidad mínima de instancias.

  4. Haz clic en Crear para un servicio nuevo. Haz clic en Ver diferencia y volver a implementar y, luego, en Implementar cambios para un servicio existente.

gcloud

Actualiza la cantidad mínima de instancias para un servicio determinado con el siguiente comando:

gcloud run services update SERVICE --min MIN-VALUE

Reemplaza lo siguiente:

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

Como alternativa, puedes configurar la cantidad mínima de instancias durante la implementación con el siguiente comando:

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

Reemplaza lo siguiente:

  • IMAGE_URL: una referencia a la imagen de contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL sigue el formato de LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • MIN-VALUE: Es 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

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.

  1. Si creas un servicio nuevo, omite este paso. Si actualizas un servicio existente, descarga su configuración de YAML:

    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/minScale: 'MIN_INSTANCE'

    Reemplaza lo siguiente:

    • SERVICE: el nombre de tu servicio de Cloud Run
    • MIN-INSTANCE: Es la cantidad de instancias que se mantendrán en espera, listas para recibir solicitudes.
  3. Crea o actualiza el servicio con el siguiente comando:

    gcloud run services replace service.yaml

    El comando gcloud run services replace usa de forma predeterminada el archivo service.yaml si está presente.

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 la cantidad mínima de instancias 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: 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: Es la cantidad de instancias de contenedor que se mantendrán en espera, listas para recibir solicitudes.
  • SERVICE: El nombre del servicio
  • REGION: Es la región de Google Cloud del servicio.
  • PROJECT-ID: Es 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 la página Servicios de Cloud Run:

    Ir a Cloud Run

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

  3. Haz clic en la pestaña Ajuste de escala.

  4. Busca el parámetro de configuración Cantidad mínima de instancias en la sección Escalamiento del servicio.

gcloud

  1. Usa el siguiente comando:

    gcloud run services describe SERVICE
  2. Busca el valor de Escalamiento: Automático (mín.: MIN_VALUE, máx.: MAX_VALUE) en la configuración que se muestra.

Configura la cantidad mínima de instancias 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.

El escalamiento a nivel de revisión solo está disponible para los servicios que tenían la función configurada con anterioridad.

Console

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

    Ir a Cloud Run

  2. Selecciona Servicios en el menú de navegación de Cloud Run:

    1. Si estás configurando un servicio nuevo, haz clic en Implementar contenedor y completa la página de configuración inicial del servicio. Luego, haz clic en Contenedores, Herramientas de redes, Seguridad para expandir la página de configuración del servicio.

    2. Si quieres configurar un servicio existente, haz clic en el servicio y, luego, en la pestaña Ajuste de escala.

  3. En la sección Escalamiento de revisión, especifica la cantidad mínima de instancias de contenedor en el campo Cantidad mínima de instancias.

  4. Haz clic en Crear para un servicio nuevo. Haz clic en Ver diferencia y volver a implementar y, luego, en Implementar cambios para un servicio existente.

gcloud

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

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

Reemplaza lo siguiente:

  • SERVICE: Es el nombre de tu servicio.
  • MIN-VALUE: Es la cantidad de instancias de contenedor que se mantendrán 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

Reemplaza lo siguiente:

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

YAML

  1. Si creas un servicio nuevo, omite este paso. Si actualizas un servicio existente, descarga su configuración de YAML:

    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

    Reemplaza lo siguiente:

    • SERVICE: el nombre de tu servicio de Cloud Run
    • MIN-INSTANCE: Es la cantidad de instancias que se mantendrán en espera, listas para recibir solicitudes.
    • REVISION: 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. Crea o actualiza el servicio con el siguiente comando:

    gcloud run services replace service.yaml

    El comando gcloud run services replace usa de forma predeterminada el archivo service.yaml si está presente.

Terraform

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

Agrega lo siguiente a un recurso google_cloud_run_v2_service en tu configuración de Terraform:

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

  deletion_protection = false # set to "true" in production

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

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

Visualiza las instancias mínimas a nivel de revisión

El escalamiento a nivel de revisión solo está disponible para los servicios que ya tenían configurada la funció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 la página Servicios de Cloud Run:

    Ir a Cloud Run

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

  3. Haz clic en la pestaña Ajuste de escala.

  4. Busca el parámetro de configuración Cantidad mínima de instancias en la sección Escalamiento de revisión.

gcloud

  1. Usa el siguiente comando:

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

Ejemplos

En las siguientes secciones, se muestra el comportamiento del servicio cuando se configura la cantidad mínima de instancias.

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

Puedes combinar instancias mínimas o máximas a nivel de servicio y de revisión. Cuando configuras ambas, los límites finales de las instancias se determinan según las siguientes reglas:

  • Los límites máximos siempre limitan los límites mínimos: Cualquier límite máximo que configures, ya sea a nivel de servicio o de revisión, impide estrictamente que el sistema escale más allá de ese valor, independientemente de cualquier configuración mínima.
  • En el caso de los límites mínimos, se aplica el más alto: Cuando hay varios límites mínimos activos y no están bloqueados por un límite máximo, el escalador automático aplica el límite mínimo más alto.
Servicio Revisión Regla de resolución Comportamiento resultante
Mín. Mín. Prevalece la oferta mínima más alta Si el mínimo del servicio es 10 y el de la revisión es 5, la revisión ejecuta 10 instancias para satisfacer el mínimo global más alto.
Mín. Máx. La cantidad máxima de instancias de la revisión anula la cantidad mínima del servicio Si el mínimo del servicio es 10, pero el máximo de la revisión es 5, la revisión se limita estrictamente a 5 instancias.
Máx. Mín. El máximo del servicio anula el mínimo de la revisión Si el máximo del servicio es 5, pero el mínimo de la revisión es 10, la revisión se limita estrictamente a 5 instancias.
Máx. Máx. Ganancias máximas más bajas Si el máximo del servicio es 5 y el máximo de la revisión es 10, la revisión se limita a 5 instancias.

Cloud Run resuelve las restricciones de capacidad calculando primero la cantidad máxima de instancias efectivas (el menor de los máximos a nivel de servicio y a nivel de revisión). Luego, determina las instancias mínimas efectivas (el valor más alto entre el mínimo a nivel de revisión y el mínimo asignado a nivel de servicio) y limita el resultado al máximo efectivo.

Si no configuras un valor, el escalador automático usa los valores predeterminados, como 0 para las instancias mínimas a nivel de servicio y de revisión, y 100 para las instancias máximas a nivel de revisión.

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 Minutos de servicio Revisión A Revisión B División del tráfico Comportamiento resultante
No hay configuración de nivel de revisión 10 Mín.: 0 Mín.: 0 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 10 Mín.: 6 Mín.: 0 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.
Recibe menos instancias que las instancias mínimas en el nivel de servicio debido a las instancias máximas en el nivel de revisión 10 Mín.: 0
Máx.: 3
Mín.: 0 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 3 Mín.: 0 Mín.: 0 50/50 Las asignaciones fraccionarias (1.5 instancias cada una) se redondean. La primera revisión que aparece en la sección de tráfico recibe el valor redondeado hacia arriba: la revisión B (que aparece primero) recibe 2 instancias y la revisión A recibe 1. El recuento total de instancias es 3.

Determina la cantidad mínima de instancias necesarias

Si la cantidad mínima de instancias se establece en un valor superior al que se requiere para tu tráfico habitual, es posible que muchas instancias se activen un poco y cada una procese algunas solicitudes. Por ejemplo, si tu servicio suele requerir 200 instancias para la carga máxima, pero la cantidad mínima de instancias está configurada en 600, las solicitudes entrantes se distribuirán entre las 600 instancias. Esto hace que muchas de estas 600 instancias se activen un poco y cada una controle una pequeña parte del tráfico, en lugar de que unas 200 instancias estén muy activas y las 400 restantes permanezcan completamente inactivas.

Para minimizar los costos (con un uso más alto en menos instancias), establece las instancias mínimas en un valor que se alinee estrechamente con la cantidad real de instancias necesarias para entregar tu tráfico típico.

Además, cuando el ajuste de escala automático aprovisiona instancias adicionales por encima de la cantidad mínima de instancias configurada, Cloud Run prefiere enrutar las solicitudes entrantes a la cantidad mínima de instancias configurada antes de enviar solicitudes a las instancias con ajuste de escala automático. Con la facturación basada en solicitudes, este enrutamiento preferencial a las instancias mínimas configuradas reduce el costo, ya que se completan las instancias mínimas configuradas antes de usar las instancias con ajuste de escala automático. Ten en cuenta que este enrutamiento preferencial también puede hacer que las instancias mínimas configuradas tengan un uso mayor que las instancias con escalado automático, según la cantidad de tráfico.