Scalabilità automatica di istanze di container

In Knative serving, ogni revisione viene scalata automaticamente al numero di istanze container necessarie per gestire tutte le richieste in entrata. Quando una revisione non riceve traffico, per impostazione predefinita viene scalata a zero istanze container. Tuttavia, se vuoi, puoi modificare questa impostazione predefinita per specificare un'istanza da mantenere inattiva o "in uso" utilizzando l'impostazione istanze minime.

Il numero di istanze pianificate è influenzato da:

In alcuni casi, potresti voler limitare il numero totale di istanze di container che possono essere avviate, per motivi di controllo dei costi o per una migliore compatibilità con altre risorse utilizzate dal tuo servizio. Ad esempio, il tuo servizio Knative Serving potrebbe interagire con un database in grado di gestire solo un determinato numero di connessioni aperte simultanee.

Informazioni sul numero massimo di istanze di container

Puoi utilizzare l'impostazione del numero massimo di istanze di container per limitare il numero totale di istanze che possono essere avviate in parallelo, come documentato in Impostare un numero massimo di istanze di container.

Superamento del numero massimo di istanze

In circostanze normali, la revisione viene scalata orizzontalmente creando nuove istanze per gestire il carico di traffico in entrata. Tuttavia, quando imposti un limite massimo di istanze, in alcuni scenari non ci saranno istanze sufficienti per soddisfare il carico di traffico. In questo caso, le richieste in entrata vengono messe in coda per un massimo di 60 secondi. Durante questo periodo di 60 secondi, se un'istanza termina l'elaborazione delle richieste, diventa disponibile per elaborare le richieste in coda. Se non diventano disponibili istanze durante la finestra di 60 secondi, la richiesta non va a buon fine e viene visualizzato un codice di errore 429 su Cloud Run.

Garanzie di scalabilità

Il limite massimo di istanze è un limite superiore. L'impostazione di un limite elevato non significa che la revisione verrà scalata al numero specificato di istanze container. Significa solo che il numero di istanze di container in un determinato momento non deve superare il limite.

Picchi di traffico

In alcuni casi, ad esempio in caso di picchi di traffico rapidi, Knative Serving potrebbe, per un breve periodo di tempo, creare un numero di istanze container leggermente superiore al valore massimo di istanze specificato. Se il tuo servizio non può tollerare questo comportamento temporaneo, ti consigliamo di tenere conto di un margine di sicurezza e impostare un valore massimo di istanze inferiore.

Deployment

Quando esegui il deployment di una nuova revisione, Knative Serving esegue la migrazione graduale del traffico dalla revisione precedente a quella nuova. Poiché i limiti massimi delle istanze sono impostati per ogni revisione, potresti superare temporaneamente il limite specificato nel periodo successivo al deployment.

Istanze inattive e riduzione al minimo degli avvii a freddo

Le risorse Kubernetes vengono utilizzate solo quando un'istanza gestisce una richiesta, ma ciò non significa che Knative Serving arresti immediatamente le istanze una volta gestite tutte le richieste. Per ridurre al minimo l'impatto degli avvii a freddo, Knative Serving potrebbe mantenere alcune istanze inattive. Queste istanze sono pronte a gestire le richieste in caso di picco improvviso di traffico.

Ad esempio, quando un'istanza container ha terminato di gestire le richieste, potrebbe rimanere inattiva per un periodo di tempo nel caso in cui debba essere gestita un'altra richiesta. Un'istanza di container inattiva può conservare risorse, ad esempio connessioni di database aperte. Tuttavia, per Cloud Run, la CPU non sarà disponibile

Per mantenere le istanze inattive disponibili in modo permanente, utilizza l'impostazione min-instance.

Passaggi successivi