Questa pagina descrive come attivare le istanze inattive per un servizio configurando le istanze minime utilizzando il comportamento predefinito di scalabilità automatica di Cloud Run. Per scalare manualmente il servizio, consulta la sezione Scalabilità manuale.
Se hai bisogno di un maggiore controllo sul comportamento di scalabilità automatica del servizio, puoi impostare un numero minimo di istanze per evitare tempi di avvio lenti dei container e ridurre la latenza del servizio. Per i servizi Cloud Run, Cloud Run, per impostazione predefinita, scala il numero di istanze in base al numero di richieste in entrata.
Tuttavia, se il servizio richiede una latenza ridotta, soprattutto quando viene eseguito lo scale da zero istanze attive, puoi modificare questo comportamento predefinito specificando un numero minimo di istanze di container da mantenere in uso e pronte per gestire le richieste. Per ulteriori dettagli su questa ottimizzazione, consulta Suggerimenti generali per lo sviluppo.
Cloud Run rimuove le istanze che non elaborano richieste (inattive).
Con le istanze minime impostate, Cloud Run mantiene in esecuzione almeno il numero di istanze minime, anche se non elaborano richieste. Le istanze attive
superiori al numero min-instances
potrebbero diventare inattive se
non ricevono richieste.
Ad esempio, se min-instances
è 10
e il numero di istanze attive è
0
, il numero di istanze inattive è 10
. Quando il numero di istanze attive aumenta fino a 6
, il numero di istanze inattive diminuisce fino a 4
.
Tieni presente che se un servizio non ha pubblicato traffico di recente, la metrica delle istanze attive può indicare che non sono attive istanze, anche se ne hai specificate una o più per le istanze minime.
Le istanze minime possono essere riavviate in qualsiasi momento.
Fatturazione
Le istanze mantenute in esecuzione utilizzando la funzionalità di istanze minime comportano costi di fatturazione.
Il seguente diagramma mostra come funziona la fatturazione durante un ciclo di vita dell'istanza quando configuri le istanze minime per un servizio o una revisione:
A seconda delle impostazioni di fatturazione configurate, il servizio viene fatturato come segue:
- Per la fatturazione basata sulle richieste, ti viene addebitata una tariffa inferiore quando le istanze
sono inattive e in attesa di elaborare le richieste. Se il numero minimo di istanze è impostato su
0
, non ti viene addebitato alcun costo quando le istanze sono inattive. - Per la fatturazione basata sulle istanze, ti viene addebitata la tariffa predefinita per l'intero
ciclo di vita dell'istanza. Il tempo dall'avvio all'arresto include
il periodo in cui un'istanza elabora le richieste o è inattiva. In altre parole, anche se min
instances è impostato su
0
, ti viene comunque addebitata la tariffa predefinita. Questa opzione è ideale se hai bisogno di CPU al di fuori delle richieste. Se min instances è impostato su0
, ti viene addebitata la tariffa predefinita.
Poiché questi addebiti sono prevedibili, Google consiglia di acquistare uno sconto per impegno di utilizzo.
Applica il numero minimo di istanze a livello di servizio anziché a livello di revisione
Puoi configurare le istanze minime a livello di servizio o di revisione. Google consiglia di applicare le istanze minime a livello di servizio ed evitare di combinare istanze minime a livello di servizio e di revisione. Scopri di più sul comportamento quando configuri le impostazioni di scalabilità a livello di servizio e di revisione.
Se applichi il numero minimo di istanze a livello di revisione, le impostazioni entrano in vigore al momento del deployment della revisione. Se applichi questa funzionalità a livello di servizio, l'impostazione entra in vigore senza dover eseguire il deployment di una nuova revisione.
Revisioni e numero minimo di istanze
Quando le istanze minime sono impostate a livello di servizio, le richieste in entrata vengono distribuite a tutte le revisioni che gestiscono il traffico in proporzione alla suddivisione del traffico.
Quando il numero minimo di istanze è impostato a livello di revisione, le istanze minime vengono avviate ogni volta che viene fatto riferimento alla revisione in una suddivisione del traffico o quando viene assegnato un tag di traffico. Ciò significa che l'istanza viene fatturata durante l'elaborazione delle richieste e anche quando è in attesa di richieste in entrata.
Revisioni taggate e istanze minime a livello di servizio
Se viene avviata una revisione con un tag assegnato, l'istanza viene conteggiata ai fini delle istanze minime a livello di servizio se fa parte di una suddivisione del traffico.
Routing delle richieste con un numero minimo di istanze
Quando imposti le istanze minime, Cloud Run distribuisce le richieste in entrata in modo uniforme tra tutte le istanze di cui è stato eseguito il provisioning. Comprendere questo comportamento è importante per gestire i costi, soprattutto con la fatturazione basata sulle richieste o se intendi mantenere attive istanze hot spare inattive. Per ridurre al minimo i costi, imposta il numero minimo di istanze sul numero di istanze necessarie per gestire il tuo traffico tipico.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per configurare ed eseguire il deployment dei servizi Cloud Run, chiedi all'amministratore di concederti i seguenti ruoli IAM:
-
Cloud Run Developer (
roles/run.developer
) sul servizio Cloud Run -
Utente service account (
roles/iam.serviceAccountUser
) sull'identità del servizio
Se esegui il deployment di un servizio o di una funzione dal codice sorgente, devi disporre anche di ruoli aggiuntivi concessi al tuo progetto e al account di servizio Cloud Build.
Per un elenco di ruoli e autorizzazioni IAM associati a Cloud Run, consulta Ruoli IAM Cloud Run e Autorizzazioni IAM Cloud Run. Se il tuo servizio Cloud Run interagisce con le APIGoogle Cloud , come le librerie client Cloud, consulta la guida alla configurazione dell'identità del servizio. Per ulteriori informazioni sulla concessione dei ruoli, consulta Autorizzazioni di deployment e Gestire l'accesso.
Configura il numero minimo di istanze a livello di servizio
Per impostazione predefinita, le istanze di container hanno il numero minimo di istanze a livello di servizio disattivato,
con un'impostazione di 0
. Puoi modificare questo valore predefinito utilizzando la
consoleGoogle Cloud , Google Cloud CLI o un file YAML:
Console
Nella console Google Cloud , vai a Cloud Run:
Se stai configurando un nuovo servizio, seleziona Servizi dal menu e fai clic su Esegui il deployment del contenitore per visualizzare il modulo Crea servizio. Individua il modulo Scalabilità del servizio.
Se stai configurando un servizio esistente, fai clic sul servizio per visualizzare il relativo riquadro dei dettagli, quindi fai clic su
Modifica impostazioni di scalabilità a livello di servizio in alto a destra nel riquadro dei dettagli.Nel campo etichettato Numero minimo di istanze, specifica il numero di istanze di container da mantenere in uso, pronte a ricevere richieste.
Fai clic su Crea per un nuovo servizio o su Esegui il deployment per un servizio esistente.
gcloud
Aggiorna il numero minimo di istanze per un determinato servizio utilizzando il seguente comando:
gcloud run services update SERVICE --min MIN-VALUE
Sostituisci quanto segue:
- SERVICE: il nome del tuo servizio.
- MIN-VALUE: il numero di istanze di container da mantenere
attive e pronte a ricevere richieste. Specifica
default
per cancellare qualsiasi impostazione minima dell'istanza.
In alternativa, puoi impostare il numero minimo di istanze durante l'deployment utilizzando il comando:
gcloud run deploy --image IMAGE_URL --min MIN-VALUE
Sostituisci quanto segue:
- IMAGE_URL: un riferimento all'immagine container, ad
esempio
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già stato creato. L'URL segue il formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. - MIN-VALUE: il numero di istanze
container da mantenere attive, pronte a ricevere richieste. Specifica
default
per cancellare qualsiasi impostazione del numero minimo di istanze.
YAML
Qualsiasi modifica alla configurazione comporta la creazione di una nuova revisione. Anche le revisioni successive riceveranno automaticamente questa impostazione di configurazione, a meno che tu non apporti aggiornamenti espliciti per modificarla.
Se stai creando un nuovo servizio, salta questo passaggio. Se stai aggiornando un servizio esistente, scarica la relativa configurazione YAML:
gcloud run services describe SERVICE --format export > service.yaml
Aggiorna l'attributo
run.googleapis.com/minScale
:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE annotations: run.googleapis.com/minScale: 'MIN_INSTANCE'
Sostituisci quanto segue:
- SERVICE: il nome del tuo servizio Cloud Run
- MIN-INSTANCE: il numero di istanze da mantenere attive, pronte a ricevere richieste.
Crea o aggiorna il servizio utilizzando il seguente comando:
gcloud run services replace service.yaml
Librerie client
Per aggiornare le istanze minime a livello di servizio per il tuo servizio dal codice:
API REST
Per aggiornare le istanze minime a livello di servizio per un determinato servizio, invia una richiesta HTTP PATCH
all'endpoint service
dell'API Cloud Run Admin.
Ad esempio, utilizzando 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
Sostituisci quanto segue:
- ACCESS_TOKEN: un token di accesso valido per un account che
dispone delle autorizzazioni IAM per aggiornare un servizio.
Ad esempio, se hai eseguito l'accesso a
gcloud
, puoi recuperare un token di accesso utilizzandogcloud auth print-access-token
. Da un'istanza container Cloud Run, puoi recuperare un token di accesso utilizzando il server di metadati dell'istanza container. - MIN-VALUE: il numero di istanze di container da mantenere attive, pronte a ricevere richieste.
- SERVICE: il nome del servizio.
- REGION: la Google Cloud regione del servizio.
- PROJECT-ID: l' Google Cloud ID progetto.
Visualizzare le istanze minime a livello di servizio
Per visualizzare le impostazioni correnti del numero minimo di istanze a livello di servizio per il tuo servizio Cloud Run:
Console
Nella console Google Cloud , vai a Cloud Run:
Fai clic sul servizio che ti interessa per aprire il riquadro Dettagli servizio.
L'impostazione corrente viene visualizzata nella parte in alto a destra del riquadro dei dettagli del servizio, accanto a Scalabilità.
gcloud
Utilizza questo comando:
gcloud run services describe SERVICE
Individua il valore di Scalabilità: automatica (min: MIN_VALUE, max: MAX_VALUE) nella configurazione restituita.
Configura il numero minimo di istanze a livello di revisione
Qualsiasi modifica alla configurazione comporta la creazione di una nuova revisione. Anche le revisioni successive riceveranno automaticamente questa impostazione di configurazione, a meno che tu non apporti aggiornamenti espliciti per modificarla.
Per impostazione predefinita, le istanze container hanno min-instances
disattivato, con un'impostazione
di 0
. Puoi modificare questo valore predefinito utilizzando la console Google Cloud , Google Cloud CLI o un file YAML quando crei un nuovo servizio o esegui il deployment di una nuova revisione:
Console
Nella console Google Cloud , vai a Cloud Run:
Seleziona Servizi dal menu e fai clic su Esegui il deployment del contenitore per configurare un nuovo servizio. Se stai configurando un servizio esistente, fai clic sul servizio, quindi su Modifica ed esegui il deployment della nuova revisione.
Se stai configurando un nuovo servizio, compila la pagina iniziale delle impostazioni del servizio, quindi fai clic su Container, volumi, networking, sicurezza per espandere la pagina di configurazione del servizio.
Fai clic sulla scheda Contenitore.
- Nel campo etichettato Numero minimo di istanze, specifica il numero di istanze di container da mantenere in uso, pronte a ricevere richieste.
Fai clic su Crea o Esegui il deployment.
gcloud
Puoi aggiornare min-instance
di un determinato servizio utilizzando il seguente comando:
gcloud run services update SERVICE --min-instances MIN-VALUE
Sostituisci quanto segue:
- SERVICE: il nome del tuo servizio.
- MIN-VALUE: il numero di istanze di container da mantenere
attive e pronte a ricevere richieste. Specifica
default
per cancellare qualsiasi impostazione minima dell'istanza.
Puoi anche impostare min-instance
durante
l'implementazione utilizzando il comando:
gcloud run deploy --image IMAGE_URL --min-instances MIN-VALUE
Sostituisci quanto segue:
- IMAGE_URL: un riferimento all'immagine container, ad
esempio
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già stato creato. L'URL segue il formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. - MIN-VALUE: il numero di istanze di container da mantenere
attive e pronte a ricevere richieste. Specifica
default
per cancellare qualsiasi impostazione minima dell'istanza.
YAML
Se stai creando un nuovo servizio, salta questo passaggio. Se stai aggiornando un servizio esistente, scarica la relativa configurazione YAML:
gcloud run services describe SERVICE --format export > service.yaml
Aggiorna l'attributo
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
Sostituisci quanto segue:
- SERVICE: il nome del tuo servizio Cloud Run
- MIN-INSTANCE: il numero di istanze da mantenere attive, pronte a ricevere richieste.
- REVISION con un nuovo nome di revisione o eliminalo (se presente). Se fornisci un nuovo nome di revisione, questo deve soddisfare i seguenti criteri:
- Inizia con
SERVICE-
- Contiene solo lettere minuscole, numeri e
-
- Non termina con
-
- Non supera i 63 caratteri
- Inizia con
Crea o aggiorna il servizio utilizzando il seguente comando:
gcloud run services replace service.yaml
Terraform
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.
Aggiungi quanto segue a una risorsagoogle_cloud_run_v2_service
nella configurazione Terraform:La risorsa google_cloud_run_v2_service
precedente specifica un numero minimo di istanze di 1
in template.scaling
.
Sostituisci 1
con il tuo numero minimo di istanze.
Visualizza il numero minimo di istanze a livello di revisione
Per visualizzare le impostazioni correnti del numero minimo di istanze a livello di revisione per il tuo servizio Cloud Run:
Console
Nella console Google Cloud , vai a Cloud Run:
Fai clic sul servizio che ti interessa per aprire il riquadro Dettagli servizio.
Fai clic sulla scheda Revisioni.
Nel riquadro dei dettagli a destra, l'impostazione Revision min. instances è elencata nella scheda Container.
gcloud
Utilizza questo comando:
gcloud run services describe SERVICE
Individua il valore di Min instances: nella configurazione restituita.
Esempi
Le sezioni seguenti mostrano il comportamento del servizio durante la configurazione delle istanze minime.
Utilizzare il numero minimo o massimo di istanze a livello di servizio e di revisione
La tabella seguente mostra il comportamento se combini le istanze minime a livello di servizio e le istanze minime o massime a livello di revisione:
Impostazione di configurazione | Comportamento |
---|---|
Sono impostati sia il numero minimo di istanze a livello di servizio sia il numero minimo di istanze a livello di revisione. | Il valore effettivo per la revisione è il maggiore tra il numero minimo di istanze a livello di revisione e il numero minimo di istanze a livello di servizio. |
Sono impostati sia il numero minimo di istanze a livello di servizio sia il numero massimo di istanze a livello di revisione. | Il valore effettivo per la revisione è il minore tra il numero massimo di istanze a livello di revisione e il numero minimo di istanze a livello di servizio. Ciò vale anche se il numero massimo di istanze a livello di revisione impedisce al servizio di raggiungere il numero di istanze configurato per il numero minimo di istanze a livello di servizio. |
Utilizza il numero minimo di istanze a livello di servizio con la suddivisione del traffico
Se utilizzi la suddivisione del traffico, il numero minimo di istanze a livello di servizio viene suddiviso tra le revisioni in base alla proporzione della suddivisione del traffico. Ad esempio, se le istanze minime a livello di servizio = 10, una suddivisione del traffico 50/50 alloca 5 istanze minime a livello di servizio a ogni revisione.
La tabella seguente mostra alcuni scenari di configurazione di esempio:
Caso d'uso di esempio | Esempio di configurazione | Comportamento conseguente |
---|---|---|
Nessuna impostazione a livello di revisione | Numero minimo di istanze a livello di servizio: 10
|
La revisione A riceve 6 istanze dal numero minimo di istanze a livello di servizio proporzionale alla suddivisione del traffico. La revisione B riceve 4 istanze dal numero minimo di istanze a livello di servizio proporzionale alla suddivisione del traffico. |
Ricezione di un numero di istanze superiore al numero minimo di istanze a livello di servizio a causa del numero minimo di istanze a livello di revisione | Numero minimo di istanze a livello di servizio: 10
|
La revisione A riceve 6 istanze dal numero minimo di istanze a livello di revisione. La revisione B riceve 5 istanze dal numero minimo di istanze a livello di servizio proporzionale alla suddivisione del traffico. Questo valore supera il numero minimo di istanze a livello di servizio ed è intenzionale. |
Ricezione di un numero di istanze inferiore al numero minimo di istanze a livello di servizio a causa del numero massimo di istanze a livello di revisione. | Numero minimo di istanze a livello di servizio: 10
|
La revisione A riceve 3 istanze dal numero minimo di istanze a livello di servizio in base alla suddivisione del traffico, ma è limitata al numero massimo di istanze a livello di revisione. La revisione B riceve 5 istanze dal numero minimo di istanze a livello di servizio proporzionale alla suddivisione del traffico. Il risultato è 8 istanze del livello di servizio, poiché 2 vengono perse a causa del numero massimo di istanze a livello di revisione della revisione A. |
Il numero minimo di istanze a livello di servizio è maggiore del numero di revisioni nella suddivisione del traffico ed esiste una quantità frazionaria di istanze proporzionale alla suddivisione del traffico | Numero minimo di istanze a livello di servizio: 3
|
La revisione A ottiene 1 istanza minima e la revisione B ottiene 2 istanze minime. Il numero di istanze per il servizio è 3. |
Determina il numero minimo di istanze necessarie
Se il numero minimo di istanze è impostato su un valore superiore a quello richiesto per il traffico tipico, molte istanze potrebbero diventare leggermente attive, elaborando ciascuna poche richieste. Ad esempio, se il tuo servizio in genere richiede 200 istanze per il carico di picco, ma le istanze minime sono configurate su 600, le richieste in entrata verranno distribuite su tutte le 600 istanze. Di conseguenza, molte di queste 600 istanze diventano in qualche modo attive, ognuna gestisce una piccola parte del traffico, invece di circa 200 istanze molto attive e le restanti 400 completamente inattive.
Per ridurre al minimo i costi (utilizzando un numero inferiore di istanze), imposta il numero minimo di istanze su un valore che corrisponda al numero effettivo di istanze necessarie per gestire il traffico tipico.
Inoltre, quando la scalabilità automatica esegue il provisioning di istanze aggiuntive al di sopra delle istanze minime configurate, Cloud Run preferisce instradare le richieste in entrata prima alle istanze minime configurate e poi alle istanze scalate automaticamente. Con la fatturazione basata sulle richieste, questo routing preferenziale alle istanze minime configurate riduce i costi riempiendo le istanze minime configurate prima di utilizzare le istanze con scalabilità automatica. Tieni presente che questo routing preferenziale può anche comportare un utilizzo maggiore delle istanze minime configurate rispetto alle istanze con scalabilità automatica, a seconda della quantità di traffico.