Puoi evitare tempi di avvio dei container lenti per il tuo servizio e ridurre la latenza del servizio impostando un numero minimo di istanze. Questa pagina descrive come attivare le istanze inattive per il servizio utilizzando le impostazioni delle istanze minime.
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, in particolare quando esegui il ridimensionamento 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 stanno servendo richieste (inattive).
Con le istanze minime impostate, Cloud Run mantiene in esecuzione almeno il numero di istanze minime, anche se non stanno servendo 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 a 6
, il numero di istanze inattive diminuisce a 4
.
Tieni presente che se un servizio non ha generato 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.
Applicazione di istanze minime a livello di servizio o 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 le istanze minime 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 viene applicata senza dover eseguire il deployment di una nuova revisione.
Revisioni con tag e istanze minime a livello di servizio
Le revisioni con tag vengono avviate, ma vengono conteggiate ai fini del raggiungimento del numero minimo di istanze a livello di servizio solo se fanno parte di una suddivisione del traffico.
Fatturazione
Le istanze mantenute in esecuzione utilizzando la funzionalità di istanze minime comportano costi di fatturazione. Poiché questi addebiti sono molto prevedibili, Google consiglia di acquistare un sconto per impegno di utilizzo.
Istanze minime e CPU sempre allocata
Puoi configurare la CPU in modo che sia sempre allocata se hai bisogno di CPU al di fuori delle richieste.
Riavvii minimi delle istanze
Le istanze minime possono essere riavviate in qualsiasi momento.
Revisioni e istanze minime
Quando le istanze minime sono impostate a livello di servizio, vengono distribuite a tutte le revisioni che generano traffico in proporzione alla suddivisione del traffico.
Quando le istanze minime sono impostate a livello di revisione, vengono avviate ogni volta che la revisione viene rimessa in un'assegnazione del traffico (anche al 0%) o è associato un tag di traffico.
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
) nel servizio Cloud Run -
Utente account di servizio (
roles/iam.serviceAccountUser
) nell'identità di servizio
Per un elenco dei ruoli e delle autorizzazioni IAM associati a Cloud Run, consulta Ruoli IAM di Cloud Run e Autorizzazioni IAM di Cloud Run. Se il servizio Cloud Run interagisce con le API Google Cloud, come le librerie client di Cloud, consulta la guida alla configurazione dell'identità del servizio. Per ulteriori informazioni sulla concessione dei ruoli, consulta le autorizzazioni di deployment e gestisci l'accesso.
Impostazione e aggiornamento del numero minimo di istanze a livello di servizio
Per impostazione predefinita, le istanze di container hanno le istanze minime a livello di servizio disattivate, con un'impostazione di 0
. Puoi modificare questo valore predefinito utilizzando la console Google Cloud, Google Cloud CLI o un file YAML:
Console
Nella console Google Cloud, vai a Cloud Run:
Se stai configurando un nuovo servizio, fai clic su Esegui il deployment del container e selezionate Servizio per visualizzare il modulo Crea servizio. Se stai configurando un servizio esistente, fai clic sul servizio per visualizzarne il riquadro dei dettagli, quindi fai clic sull'icona a forma di penna accanto a Min instances (Istanze minime) in alto a destra nel riquadro dei dettagli.
Individua il modulo Scalabilità automatica del servizio.
- Nel campo Numero minimo di istanze, specifica il numero di istanze di container da mantenere in uso e pronte per ricevere richieste.
Fai clic su Crea per un nuovo servizio o su Esegui il deployment per un servizio esistente.
gcloud
Aggiorna service-min-instances
per un determinato servizio utilizzando il seguente comando:
gcloud run services update SERVICE --service-min-instances MIN-VALUE
Sostituisci:
- SERVICE con il nome del servizio.
- MIN-VALUE con il numero di istanze container da mantenere in stato attivo, pronte a ricevere richieste. Specifica
default
per cancellare eventuali impostazioni di istanza minima.
In alternativa, puoi impostare service-min-instances
durante il
deployment utilizzando il comando:
gcloud run deploy --image IMAGE_URL --service-min-instances MIN-VALUE
Sostituisci
- IMAGE_URL con un riferimento all'immagine del 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 ha la formaLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- MIN-VALUE con il numero di istanze di container da mantenere attive, pronte a ricevere richieste. Specifica
default
per cancellare qualsiasi impostazione di istanze minime.
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
run.googleapis.com/minScale
:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE annotations: run.googleapis.com/minScale: 'MIN_INSTANCE'
Sostituisci:
- SERVICE con il nome del servizio Cloud Run
- MIN-INSTANCE con 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 servizio dal codice:
API REST
Per aggiornare le istanze minime a livello di servizio per un determinato servizio, invia una PATCH
richiesta HTTP 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:
- ACCESS_TOKEN con un token di accesso valido per un account che possiede le 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
. All'interno di un'istanza container Cloud Run, puoi recuperare un token di accesso utilizzando il server di metadati dell'istanza container. - MIN-VALUE con il numero di istanze di container da mantenere attive, pronte a ricevere richieste.
- SERVICE con il nome del servizio.
- REGION con la regione Google Cloud del servizio.
- PROJECT-ID con l'ID progetto Google Cloud.
Visualizzare le istanze minime a livello di servizio
Per visualizzare le impostazioni correnti delle istanze minime a livello di servizio per il 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 mostrata in alto a destra nel riquadro dei dettagli del servizio, accanto a Istanze minime.
gcloud
Utilizza il seguente comando:
gcloud run services describe SERVICE
Individua il valore per Istanze minime a livello di servizio nella configurazione restituita.
Impostazione e aggiornamento del numero minimo di istanze a livello di revisione
Qualsiasi modifica alla configurazione comporta la creazione di una nuova revisione. Anche le revisioni successive acquisiranno automaticamente questa impostazione di configurazione, a meno che non apporti aggiornamenti espliciti per modificarla.
Per impostazione predefinita, le istanze container hanno min-instances
disattivato, con un'impostazione
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:
Fai clic su Esegui il deployment del contenitore e seleziona Servizio per configurare un nuovo servizio. Se stai configurando un servizio esistente, fai clic sul servizio, poi su Modifica ed esegui il deployment di una 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 Numero minimo di istanze, specifica il numero di istanze di container da mantenere in uso e pronte per 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:
- SERVICE con il nome del servizio.
- MIN-VALUE con il numero di istanze container da mantenere in stato attivo, pronte a ricevere richieste. Specifica
default
per cancellare eventuali impostazioni di istanza minima.
Puoi anche impostare min-instance
durante il
deployment utilizzando il comando:
gcloud run deploy --image IMAGE_URL --min-instances MIN-VALUE
Sostituisci:
- IMAGE_URL con un riferimento all'immagine del 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 ha la formaLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- MIN-VALUE con il numero di istanze container da mantenere in stato attivo, pronte a ricevere richieste. Specifica
default
per cancellare eventuali impostazioni di istanza minima.
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:
- SERVICE con il nome del servizio Cloud Run
- MIN-INSTANCE con il numero di istanze da mantenere attive, pronte a ricevere richieste.
- REVISION con un nuovo nome della revisione o eliminarla (se presente). Se fornisci un nuovo nome di revisione, questo deve soddisfare i seguenti criteri:
- Inizia con
SERVICE-
- Deve contenere solo lettere minuscole, numeri e
-
- Non termina con
-
- Non deve superare 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.
La seguente risorsa google_cloud_run_v2_service
specifica un numero minimo di istanze di 1
in template.scaling
.
Sostituisci 1
con il tuo numero minimo di istanze.
Visualizzare le impostazioni relative al numero minimo di istanze a livello di revisione
Per visualizzare le impostazioni correnti delle istanze minime a livello di revisione per il servizio Cloud Run:
Console
Nella console Google Cloud, vai a Cloud Run:
Fai clic sul servizio che ti interessa per aprire la pagina Dettagli servizio.
Fai clic sulla scheda Revisioni.
Nel riquadro dei dettagli a destra, l'impostazione delle istanze minime a livello di revisione è elencata nella scheda Contenitore.
gcloud
Utilizza il seguente comando:
gcloud run services describe SERVICE
Individua l'impostazione del numero minimo di istanze a livello di revisione nella configurazione restituita.
Utilizzo di istanze minime o massime sia a livello di servizio che di revisione
La tabella seguente mostra il comportamento se combini istanze minime a livello di servizio e istanze minime o massime a livello di revisione:
Impostazione di configurazione | Comportamento |
---|---|
Sono impostate sia le istanze minime a livello di servizio sia le istanze minime 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 impostate sia le istanze minime a livello di servizio sia le istanze massime a livello di revisione. | Il valore effettivo per la revisione è il più piccolo tra le istanze massime a livello di revisione e le istanze minime a livello di servizio. Questo vale anche se le istanze massime a livello di revisione impediscono al servizio di raggiungere il numero di istanze configurate per le istanze minime a livello di servizio. |
Utilizzo del numero minimo di istanze a livello di servizio con la suddivisione del traffico
Se utilizzi la suddivisione del traffico, le istanze minime a livello di servizio vengono suddivise tra le revisioni in base alla proporzione della suddivisione del traffico. Ad esempio, se il numero minimo di istanze a livello di servizio è pari a 10, una suddivisione del traffico 50/50 assegna 5 istanze minime a livello di servizio a ogni revisione.
La tabella seguente mostra scenari di configurazione di esempio:
Caso d'uso di esempio | Esempio di configurazione | Comportamento risultante |
---|---|---|
Nessuna impostazione a livello di revisione | Istanze minime a livello di servizio: 10
|
La revisione A riceve 6 istanze dalle istanze minime a livello di servizio proporzionali alla suddivisione del traffico. La revisione B riceve 4 istanze dalle istanze minime a livello di servizio proporzionali alla suddivisione del traffico. |
Ricezione di più istanze minime a livello di servizio a causa di istanze minime a livello di revisione | Istanze minime a livello di servizio: 10
|
La revisione A riceve 6 istanze dalle istanze minime a livello di revisione. La revisione B riceve 5 istanze dalle istanze minime a livello di servizio proporzionali alla suddivisione del traffico. Questo numero supera le istanze minime a livello di servizio ed è intenzionale. |
Ricezione di meno istanze minime a livello di servizio a causa di istanze massime a livello di revisione. | Istanze minime a livello di servizio: 10
|
La revisione A riceve 3 istanze dalle istanze minime a livello di servizio in base alla suddivisione del traffico, ma è limitata alle istanze massime a livello di revisione. La revisione B riceve 5 istanze dalle istanze minime a livello di servizio proporzionali alla suddivisione del traffico. Il risultato è 8 istanze a livello di servizio, poiché 2 vengono perse a causa delle istanze massime a livello di revisione della revisione A. |
Il numero minimo di istanze a livello di servizio è superiore al numero di revisioni nella suddivisione del traffico ed esiste un numero frazionario di istanze proporzionale alla suddivisione del traffico | Istanze minime a livello di servizio: 3
|
La revisione A riceve 1 istanza minima e la revisione B riceve 2 istanze minime. Il numero di istanze per il servizio è 3. |