In Knative Serving, ogni revisione viene scalata automaticamente al numero di istanze container necessario per gestire tutte le richieste in entrata. Quando una revisione non riceve traffico, per impostazione predefinita viene scalata a zero istanze container. Tuttavia, se lo preferisci, puoi modificare questa impostazione predefinita per specificare un'istanza da mantenere inattiva o "in uso" utilizzando l'impostazione delle istanze minime.
Il numero di istanze pianificate è influenzato da:
- La quantità di CPU necessaria per elaborare una richiesta
- L'impostazione della contemporaneità
- L'impostazione del numero massimo di istanze container
- L'impostazione del numero minimo di istanze container
In alcuni casi, potresti voler limitare il numero totale di istanze 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 che può gestire solo un determinato numero di connessioni aperte simultanee.
Informazioni sulle istanze container massime
Puoi utilizzare l'impostazione delle istanze container massime per limitare il numero totale di istanze che possono essere avviate in parallelo, come descritto in Impostare un numero massimo di istanze container.
Superamento del numero massimo di istanze
In circostanze normali, la tua revisione viene scalata orizzontalmente creando nuove istanze per gestire il carico di traffico in entrata. Tuttavia, se imposti un limite massimo di istanze, in alcuni scenari non saranno presenti 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 questa finestra 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 con 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 tua revisione eseguirà lo scale out fino al numero di istanze container specificato. Significa solo che il numero di istanze container in un determinato momento non deve superare il limite.
Picchi di traffico
In alcuni casi, ad esempio picchi di traffico rapidi, Knative Serving potrebbe, per un breve periodo di tempo, creare un numero leggermente superiore di istanze container rispetto al valore massimo di istanze specificato. Se il tuo servizio non può tollerare questo comportamento temporaneo, ti consigliamo di considerare un margine di sicurezza e impostare un valore massimo di istanze inferiore.
Deployment
Quando esegui il deployment di una nuova revisione, Knative Serving esegue gradualmente la migrazione del traffico dalla revisione precedente a quella nuova. Poiché i limiti massimi di istanze sono impostati per ogni revisione, potresti superare temporaneamente il limite specificato durante il 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 questo 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 un improvviso picco 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 sia necessario gestire un'altra richiesta. Un'istanza container inattiva può mantenere le risorse, ad esempio le connessioni aperte al database. Tuttavia, per Cloud Run, la CPU non sarà disponibile.
Per mantenere le istanze inattive sempre disponibili, utilizza l'
min-instance impostazione.
Passaggi successivi
- Per gestire il numero massimo di istanze dei servizi Knative Serving, consulta Impostare un numero massimo di istanze container.
- Per gestire il numero massimo di richieste simultanee gestite da ogni istanza container, consulta Impostare la contemporaneità.
- Per ottimizzare l'impostazione della contemporaneità, consulta i suggerimenti di sviluppo per l'ottimizzazione della contemporaneità.
- Per specificare un'istanza inattiva da mantenere in esecuzione per ridurre al minimo la latenza o gli avvii a freddo
sulle prime richieste, consulta
Utilizzare
min-instanceper abilitare le istanze inattive.