Ajuste de escala automático de instancias de contenedores

En Knative serving, cada revisión se escala automáticamente a la cantidad de instancias de contenedor necesarias para manejar todas las solicitudes entrantes. Cuando una revisión no recibe tráfico, la cantidad de instancias de contenedor se escala a cero de forma predeterminada. Sin embargo, si lo deseas, puedes cambiar este valor predeterminado para especificar que una instancia se mantenga inactiva o “en espera” con la configuración de instancias mínimas.

La cantidad de instancias programadas se ve afectada por los siguientes factores:

En algunos casos, se recomienda limitar la cantidad total de instancias de contenedor que se pueden iniciar, por motivos de control de costos o para obtener una mejor compatibilidad con otros recursos que usa el servicio. Por ejemplo, tu servicio de Knative serving podría interactuar con una base de datos que solo pueda manejar una cierta cantidad de conexiones abiertas simultáneas.

Información acerca de la cantidad máxima de instancias de contenedor

Puedes usar la configuración de un máximo de instancias de contenedor para limitar la cantidad total de instancias que se pueden iniciar en paralelo, como se indica en Configura una cantidad máxima de instancias de contenedor.

Consumo superior a la cantidad máxima de instancias

En circunstancias normales, la revisión se escala horizontalmente mediante la creación de instancias nuevas para controlar la carga de tráfico entrante. Sin embargo, cuando estableces un límite máximo de instancias, en algunas situaciones, no habrá suficientes instancias para poder controlar esa carga de tráfico. En ese caso, las solicitudes entrantes se ponen en cola durante un máximo de 60 segundos. Si una instancia termina de procesar solicitudes durante este período de 60 segundos, estará disponible para procesar las solicitudes en cola. Si no hay instancias disponibles durante los 60 segundos, la solicitud falla con un código de error 429 en Cloud Run (completamente administrado).

Garantías de escalamiento

El límite máximo de instancias es un límite superior. Establecer un límite alto no significa que la revisión se escalará horizontalmente hasta la cantidad especificada de instancias de contenedor. Solo significa que la cantidad de instancias de contenedor no debe superar el límite en ningún momento.

Picos de tráfico

En algunos casos, como aumentos rápidos de tráfico, Knative serving puede, durante un corto período, crear un poco más instancias de contenedor que el valor máximo especificado de instancias. Si tu servicio no puede tolerar este comportamiento temporal, se recomienda incluir un margen de seguridad y reducir la cantidad de instancias máximas permitidas.

Implementaciones

Cuando implementas una revisión nueva, Knative serving migra gradualmente el tráfico de la revisión anterior a la nueva. Debido a que se establecen límites máximos de instancias para cada revisión, es posible que excedas de manera temporal el límite especificado durante el período posterior a la implementación.

Instancias inactivas y minimización de inicios en frío

Los recursos de Kubernetes solo se consumen cuando una instancia maneja una solicitud, pero esto no significa que Knative serving cierra inmediatamente las instancias una vez que han manejado todas las solicitudes. Para minimizar el impacto de los inicios en frío, Knative serving puede mantener algunas instancias inactivas. Estas instancias están listas para controlar solicitudes en caso de que se produzca un aumento de tráfico repentino.

Por ejemplo, cuando una instancia de contenedor termina de controlar las solicitudes, puede permanecer inactiva por un tiempo en caso de que se necesite controlar otra solicitud. Una instancia de contenedor inactiva puede conservar recursos, como conexiones de bases de datos abiertas. Sin embargo, para Cloud Run, la CPU no estará disponible.

Para mantener las instancias inactivas de forma permanente, usa la configuración min-instance.

¿Qué sigue?