Puedes evitar los tiempos de inicio lentos del contenedor para tu servicio y reducir la latencia del servicio si configuras una cantidad mínima de instancias. 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 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 publicó 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.
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.
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 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.
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:
-
Desarrollador de Cloud Run (
roles/run.developer
) en el servicio de Cloud Run -
Usuario de la cuenta de servicio (
roles/iam.serviceAccountUser
) en la identidad del servicio
Para obtener una lista de los roles y los permisos de IAM asociados con Cloud Run, consulta Roles de IAM de Cloud Run y Permisos de IAM de Cloud Run. Si tu servicio de Cloud Run interactúa con las APIs de Google Cloud, como las bibliotecas cliente de Cloud, consulta la guía de configuración de identidades del servicio. Para obtener más información acerca de cómo otorgar roles, consulta Permisos de implementación y Administra el acceso.
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
En la consola de Google Cloud ve a Cloud Run:
Si quieres configurar un servicio nuevo, haz clic en Implementar contenedor y selecciona Servicio para mostrar el formulario 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.
Ubica el formulario Ajuste de escala automático del servicio:
- 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.
Haz clic en Crear para un servicio nuevo o en Implementar en un servicio existente.
gcloud
Actualiza service-min-instances
para un servicio determinado mediante el siguiente comando:
gcloud run services update SERVICE --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
Como alternativa, puedes configurar el valor de service-min-instances
durante la implementación mediante el siguiente comando:
gcloud 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 formatoLOCATION-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
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
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.
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 del servicio desde el código, sigue estos pasos:
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 congcloud 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
En la consola de Google Cloud ve a Cloud Run:
Haz clic en el servicio que te interesa para abrir el panel Detalles del servicio.
La configuración actual se muestra en la parte superior derecha del panel de detalles del servicio, junto a Cantidad mínima de instancias.
gcloud
Usa el siguiente comando:
gcloud run services describe SERVICE
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
En la consola de Google Cloud ve a Cloud Run:
Haz clic en Implementar contenedor y selecciona Servicio 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.
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.
Haz clic en la pestaña Contenedor.
- 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.
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 formatoLOCATION-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
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
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
- Comienza con
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.
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.
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
En la consola de Google Cloud ve a Cloud Run:
Haz clic en el servicio que te interesa para abrir la página Detalles del servicio.
Haz clic en la pestaña Revisiones.
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.
gcloud
Usa el siguiente comando:
gcloud run services describe SERVICE
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
|
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
|
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
|
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. |