Scalabilità automatica di istanze di container

Nella pubblicazione con Knative, ogni revisione viene scalata automaticamente in base al numero di istanze di container necessarie per gestire tutte le richieste in entrata. Quando una revisione non riceve traffico, per impostazione predefinita viene scalata fino a zero istanze di container. Tuttavia, se vuoi, puoi modificare questa impostazione predefinita per specificare un'istanza da mantenere inattiva o "tiepida" utilizzando l'impostazione Numero minimo di istanze.

Il numero di istanze pianificate è interessato da:

In alcuni casi è consigliabile 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 servizio. Ad esempio, il tuo servizio di pubblicazione Knative 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 relativa al 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 fa lo scale out creando nuove istanze per gestire il carico del traffico in entrata. Tuttavia, quando imposti un limite massimo di istanze, in alcuni scenari le istanze non saranno sufficienti per soddisfare questo 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 completa l'elaborazione delle richieste, diventa disponibile per elaborare le richieste in coda. Se nessuna istanza diventa disponibile durante la finestra di 60 secondi, la richiesta non riesce e viene visualizzato un codice di errore 429 in Cloud Run.

Garanzie di scalabilità

Il limite massimo di istanze è un limite massimo. L'impostazione di un limite alto non significa che la revisione eseguirà lo scale out al numero specificato di istanze di container. Significa solo che il numero di istanze di container in qualsiasi momento non deve superare il limite.

Picchi di traffico

In alcuni casi, ad esempio per picchi di traffico rapidi, la pubblicazione Knative potrebbe, per un breve periodo di tempo, creare più istanze di container rispetto al valore di istanze massime specificato. Se il tuo servizio non può tollerare questo comportamento temporaneo, ti consigliamo di tenere conto di un margine di sicurezza e di impostare un valore massimo di istanze inferiore.

Deployment

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

Istanze inattive e riduzione degli avvii a freddo

Le risorse Kubernetes vengono consumate solo quando un'istanza gestisce una richiesta, ma questo non significa che Knative Serving arresta immediatamente le istanze dopo che hanno gestito tutte le richieste. Per ridurre al minimo l'impatto degli avvii a freddo, la gestione di Knative potrebbe mantenere inattive alcune istanze. Queste istanze sono pronte per gestire le richieste in caso di un picco di traffico improvviso.

Ad esempio, quando un'istanza di container ha completato la gestione delle richieste, può rimanere inattiva per un determinato periodo di tempo nel caso in cui sia necessario gestire un'altra richiesta. Un'istanza di container inattiva potrebbe rendere persistenti risorse, ad esempio connessioni di database aperte. Tuttavia, per Cloud Run, la CPU non sarà disponibile

Per mantenere sempre disponibili le istanze inattive, utilizza l'impostazione min-instance.

Passaggi successivi