Establece instancias mínimas para los servicios

En esta página, se describe cómo habilitar instancias inactivas para un servicio configurando un número mínimo de instancias con el comportamiento predeterminado del ajuste de escala automático de Cloud Run. Para ajustar manualmente la escala de tu servicio, consulta ajuste de escala manual.

Si necesitas más control sobre el comportamiento del ajuste de escala automático de tu servicio, puedes establecer una cantidad mínima de instancias para evitar tiempos de inicio lentos del contenedor 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 se escala 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 la cantidad de 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 las instancias mínimas.

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:

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 permisos de implementación y administra el acceso.

Configura 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 laGoogle Cloud consola, 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, selecciona Servicios en el menú y haz clic en Implementar contenedor para mostrar el formulario Crear servicio. Ubica el formulario Ajuste de escala del servicio.

  3. Si quieres configurar un servicio existente, haz clic en el servicio para mostrar su panel de detalles y, luego, haz clic en Editar la configuración de escalamiento a nivel del servicio en la parte superior derecha del panel de detalles.

  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.

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 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 la cantidad mínima de instancias durante la implementación con el siguiente comando:

gcloud run deploy --image IMAGE_URL --min 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 LOCATION-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

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 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. Crea o actualiza el servicio con el siguiente comando:

    gcloud run services replace service.yaml

Bibliotecas cliente

Para actualizar las instancias mínimas a nivel de servicio de 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 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 Google Cloud región del servicio.
  • PROJECT-ID por el ID del proyecto 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. El parámetro de configuración actual se muestra en la parte superior derecha del panel de detalles del servicio, junto a Ajuste de escala.

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.

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 solo se consideran en las instancias mínimas del nivel de servicio si 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.

Instancias mínimas y facturación basada en instancias

Puedes configurar la facturación basada en instancias 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 la cantidad mínima de instancias se establece en el nivel de servicio, se distribuyen a todas 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 (incluso en 0%) o tiene un etiqueta de tráfico asignado.

Enrutamiento de solicitudes con instancias mínimas

Cuando configuras instancias mínimas, Cloud Run distribuye las solicitudes entrantes de manera uniforme entre todas estas instancias aprovisionadas. Comprender este comportamiento es importante para administrar los costos, en especial con la facturación basada en solicitudes o si planeas mantener instancias de reserva activa inactivas.

Si las instancias mínimas se configuran en un valor más alto del que se requiere para tu tráfico típico, es posible que muchas instancias se activen ligeramente y cada una procese algunas solicitudes. Por ejemplo, si tu servicio generalmente requiere 200 instancias para la carga máxima, pero las instancias mínimas están configuradas en 600, las solicitudes entrantes se distribuirán en las 600 instancias. Esto hace que muchas de estas 600 instancias se vuelvan algo activas, y cada una maneja una pequeña porción del tráfico, en lugar de que alrededor de 200 instancias estén muy activas y las 400 restantes permanezcan completamente inactivas.

Para optimizar los costos (con una mayor utilización en menos instancias), establece las instancias mínimas en un valor que se alinee estrechamente con la cantidad real de instancias necesarias para atender tu tráfico típico.

Además, cuando el ajuste de escala automático aprovisiona instancias adicionales por encima de las instancias mínimas configuradas, Cloud Run prefiere enrutar primero las solicitudes entrantes a las instancias mínimas configuradas 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 completa 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 ajuste de escala automático, según la cantidad de tráfico.

Configura 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 con la Google Cloud consola, 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. Selecciona Servicios en el menú y haz clic en Implementar contenedor para configurar un servicio nuevo. 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 Contenedores, volúmenes, Herramientas de redes y 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 se mantendrán en espera, listas para recibir solicitudes.
  5. Haz clic en Crear o Implementar.

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

Reemplaza lo siguiente:

  • 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 LOCATION-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

  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 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.
    • 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. Crea o actualiza el servicio con 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.

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

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 el panel Detalles del servicio.

  3. Haz clic en la pestaña Revisiones.

  4. En el panel de detalles a la derecha, el parámetro de configuración Instancias mín. de la revisión se muestra en la pestaña Contenedor.

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.

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.