Numero minimo di istanze (servizi)

Questa pagina descrive come abilitare le istanze inattive per il tuo servizio utilizzando le impostazioni relative al numero minimo di istanze.

Per i servizi Cloud Run, per impostazione predefinita Cloud Run scala il numero di istanze in base al numero di richieste in entrata. Tuttavia, se il tuo servizio richiede una latenza ridotta, soprattutto durante la scalabilità 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 la pagina Suggerimenti per lo sviluppo generali.

Cloud Run rimuove le istanze che non gestiscono le richieste (inattive). Se è impostato un numero minimo di istanze, Cloud Run mantiene almeno il numero minimo di istanze in esecuzione, anche se non gestiscono richieste. Le istanze attive superiori a 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.

Applicazione di istanze minime a livello di servizio e a livello di revisione

Puoi configurare il numero minimo di istanze a livello di servizio o di revisione. Google consiglia di applicare il numero minimo di istanze a livello di servizio ed evitare di combinare istanze minime a livello di servizio e a livello di revisione.

Se applichi il numero minimo di istanze a livello di revisione, le impostazioni vengono applicate 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 numero minimo di istanze a livello di servizio

Le revisioni con tag vengono avviate, ma non vengono conteggiate ai fini del numero minimo di istanze a livello di servizio se non fanno parte di una suddivisione del traffico.

Fatturazione

Le istanze mantenute in esecuzione utilizzando la funzionalità relativa al numero minimo di istanze sono soggette a costi di fatturazione. Poiché questi addebiti sono molto prevedibili, Google consiglia di acquistare uno sconto per impegno di utilizzo.

Numero minimo di istanze e CPU sempre allocata

Puoi configurare la CPU in modo che sia sempre allocata se hai bisogno di una CPU esterna alle richieste.

Numero minimo di riavvii di istanze

Puoi riavviare il numero minimo di istanze in qualsiasi momento.

Revisioni e numero minimo di istanze

Quando il numero minimo di istanze è impostato a livello di servizio, vengono distribuite in tutte le revisioni che gestiscono il traffico in modo proporzionale alla suddivisione del traffico.

Se il numero minimo di istanze è impostato a livello di revisione, il numero minimo di istanze viene avviato ogni volta che alla revisione viene riferito in una suddivisione del traffico (anche allo 0%) o è assegnato un tag di traffico.

Impostazione e aggiornamento del numero minimo di istanze a livello di servizio

Per impostazione predefinita, per le istanze di container sono disattivate le istanze minime a livello di servizio, con impostazione 0. Puoi modificare questa impostazione predefinita utilizzando la console Google Cloud, Google Cloud CLI o un file YAML:

Console

  1. Nella console Google Cloud, vai a Cloud Run:

    Vai a Cloud Run

  2. Se stai configurando un nuovo servizio, fai clic su Crea servizio . Se stai configurando un servizio esistente, fai clic sul servizio per visualizzare il relativo riquadro dei dettagli, poi fai clic sull'icona della penna accanto a Numero minimo di istanze in alto a destra nel riquadro dei dettagli.

  3. Individua il modulo Scalabilità automatica del servizio:

    immagine

  4. Nel campo con etichetta Numero minimo di istanze, specifica il numero di istanze di container da mantenere in uso e pronte a ricevere richieste.

  5. Fai clic su Crea per un nuovo servizio o su Esegui il deployment per un servizio esistente.

Riga di comando

Aggiorna service-min-instances per un determinato servizio utilizzando il seguente comando:

gcloud beta run services update SERVICE --service-min-instances MIN-VALUE

Sostituisci

  • SERVICE con il nome del servizio e
  • MIN-VALUE con il numero di istanze di container da mantenere in uso, pronte a ricevere richieste. Specifica default per cancellare qualsiasi impostazione minima dell'istanza.

In alternativa, puoi impostare service-min-instances durante il deployment utilizzando il comando:

gcloud beta run deploy --image IMAGE_URL --service-min-instances MIN-VALUE

Sostituisci

  • IMAGE_URL con un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, è necessario già creare il repository REPO_NAME. L'URL ha la forma LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
  • MIN-VALUE con il numero di istanze di container da mantenere in uso, pronte a ricevere richieste. Specifica default per cancellare qualsiasi impostazione minima dell'istanza.

YAML

Puoi scaricare e visualizzare le configurazioni di servizio esistenti utilizzando il comando gcloud run services describe --format export, che restituisce risultati puliti in formato YAML. Puoi quindi modificare i campi descritti di seguito e caricare il file YAML modificato utilizzando il comando gcloud run services replace. Assicurati di modificare i campi solo come documentato.

  1. Per visualizzare e scaricare la configurazione:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Aggiorna l'attributo run.googleapis.com/minScale:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
      annotations:
        run.googleapis.com/launch-stage: BETA
        run.googleapis.com/minScale: 'MIN_INSTANCE'

    Sostituisci

    • SERVICE con il nome del tuo servizio Cloud Run
    • MIN-INSTANCE con il numero di istanze da mantenere in uso, pronte a ricevere richieste.
  3. Sostituisci il servizio con la nuova configurazione utilizzando il seguente comando:

    gcloud beta run services replace service.yaml

Librerie client

Per aggiornare il numero minimo di istanze del 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:

  • ACCESS_TOKEN con un token di accesso valido per un account che dispone delle autorizzazioni IAM per l'aggiornamento di un servizio. Ad esempio, se hai eseguito l'accesso a gcloud, puoi recuperare un token di accesso utilizzando gcloud auth print-access-token. Dall'interno di un'istanza di container Cloud Run, puoi recuperare un token di accesso utilizzando il server di metadati dell'istanza di container.
  • MIN-VALUE con il numero di istanze di container da mantenere in uso, 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.

Visualizza il numero minimo di istanze a livello di servizio

Per visualizzare le impostazioni minime delle istanze a livello di servizio attuali per il tuo servizio Cloud Run:

Console

  1. Nella console Google Cloud, vai a Cloud Run:

    Vai a Cloud Run

  2. Fai clic sul servizio che ti interessa per aprire il riquadro Dettagli servizio.

  3. L'impostazione attuale viene mostrata in alto a destra nel riquadro dei dettagli del servizio, accanto a Numero minimo di istanze.

Riga di comando

  1. Utilizza il seguente comando:

    gcloud run services describe SERVICE
  2. 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 per le revisioni successive verrà applicata automaticamente questa impostazione di configurazione, a meno che non apporti aggiornamenti espliciti per modificarla.

Per impostazione predefinita, nelle istanze di container min-instances è disattivato, con un'impostazione 0. Puoi modificare questa impostazione predefinita 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

  1. Nella console Google Cloud, vai a Cloud Run:

    Vai a Cloud Run

  2. Fai clic su Crea servizio se stai configurando un nuovo servizio in cui stai eseguendo il deployment. Se stai configurando un servizio esistente, fai clic sul servizio e poi su Modifica ed esegui il deployment di nuova revisione.

  3. Se stai configurando un nuovo servizio, compila la pagina iniziale delle impostazioni del servizio in base alle tue esigenze, quindi fai clic su Container, volumi, networking, sicurezza per espandere la pagina di configurazione del servizio.

  4. Fai clic sulla scheda Contenitore.

    immagine

    • Nel campo con etichetta Numero minimo di istanze, specifica il numero desiderato di istanze di container da mantenere in uso e pronte a ricevere richieste.
  5. Fai clic su Crea o Esegui il deployment.

Riga di comando

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 e
  • MIN-VALUE con il numero desiderato di istanze di container da mantenere in uso, pronte a ricevere richieste. Specifica default per cancellare qualsiasi impostazione minima dell'istanza.

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 container, ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, è necessario già creare il repository REPO_NAME. L'URL ha la forma LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
  • MIN-VALUE con il numero desiderato di istanze di container da mantenere in uso, pronte a ricevere richieste. Specifica default per cancellare qualsiasi impostazione minima dell'istanza.

YAML

Puoi scaricare e visualizzare le configurazioni di servizio esistenti utilizzando il comando gcloud run services describe --format export, che restituisce risultati puliti in formato YAML. Puoi quindi modificare i campi descritti di seguito e caricare il file YAML modificato utilizzando il comando gcloud run services replace. Assicurati di modificare i campi solo come documentato.

  1. Per visualizzare e scaricare la configurazione:

    gcloud run services describe SERVICE --format export > service.yaml
  2. 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 tuo servizio Cloud Run
    • MIN-INSTANCE con il numero desiderato di istanze da mantenere in uso, pronte a ricevere richieste.
    • REVISION con un nuovo nome di revisione oppure eliminala (se presente). Se specifichi un nuovo nome, la revisione deve soddisfare i seguenti criteri:
      • Inizia con SERVICE-
      • Contiene solo lettere minuscole, numeri e -
      • Non termina con -
      • Non supera i 63 caratteri
  3. Sostituisci il servizio con la nuova configurazione 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.

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-min-instances"
  location = "us-central1"

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
    }
    scaling {
      # Min instances
      min_instance_count = 1
    }
  }
}

Visualizza le impostazioni minime delle istanze a livello di revisione

Per visualizzare le impostazioni minime delle istanze a livello di revisione attuali per il tuo servizio Cloud Run:

Console

  1. Nella console Google Cloud, vai a Cloud Run:

    Vai a Cloud Run

  2. Fai clic sul servizio che ti interessa per aprire la pagina Dettagli servizio.

  3. Fai clic sulla scheda Revisioni.

  4. Nel riquadro dei dettagli sulla destra, l'impostazione minima delle istanze a livello di revisione è elencata nella scheda Contenitore.

Riga di comando

  1. Utilizza il seguente comando:

    gcloud run services describe SERVICE
  2. Individua l'impostazione del numero minimo di istanze a livello di revisione nella configurazione restituita.

Utilizzo di istanze minime o massime a livello di servizio e di revisione

La tabella seguente mostra il comportamento se si combinano istanze minime a livello di servizio con 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 della 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 della revisione è il numero minimo di istanze massime a livello di revisione e di istanze minime 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 configurate per il numero minimo di istanze a livello di servizio.

Utilizzo di istanze minime del 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 percentuale di suddivisione del traffico. Ad esempio, se il numero minimo di istanze a livello di servizio è pari a 10, una suddivisione del traffico 50/50 alloca un minimo di istanze 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 conseguente
Nessuna impostazione a livello di revisione Numero minimo di istanze a livello di servizio: 10
  • Numero minimo di istanze della revisione A: 0
  • Istanza minima revisione B: 0
  • Suddivisione del traffico: 60/40
La revisione A riceve 6 istanze da un minimo di istanze del livello di servizio in proporzione alla suddivisione del traffico. La revisione B riceve 4 istanze da un numero minimo di istanze del livello di servizio proporzionali alla suddivisione del traffico.
Ricezione di un numero maggiore di istanze minime a livello di servizio a causa di un numero minimo di istanze a livello di revisione Numero minimo di istanze a livello di servizio: 10
  • Numero minimo di istanze della revisione A: 6
  • Istanza minima revisione B: 0
  • Suddivisione del traffico: 50/50
La revisione A riceve 6 istanze da un minimo di istanze a livello di revisione. La revisione B riceve 5 istanze da un minimo di istanze del livello di servizio in proporzione alla suddivisione del traffico. Questo valore supera il numero minimo di istanze del livello di servizio ed è previsto.
Ricezione di un numero di istanze inferiore al numero minimo a livello di servizio a causa del numero massimo di istanze a livello di revisione. Numero minimo di istanze a livello di servizio: 10
  • Numero minimo di istanze della revisione A: 0
  • Numero massimo di istanze della revisione A: 3
  • Istanza minima revisione B: 0
  • Suddivisione del traffico: 50/50
La revisione A riceve 3 istanze dal numero minimo di istanze del livello di servizio gestite dalla suddivisione del traffico, ma è limitata al numero massimo di istanze a livello di revisione.
La revisione B riceve 5 istanze da istanze minime del livello di servizio in proporzione alla suddivisione del traffico. Ciò comporta 8 istanze a livello di servizio, poiché due vengono perse a causa del numero massimo di istanze di revisione A a livello di revisione.
Il numero minimo di istanze a livello di servizio è maggiore del numero di revisioni nella suddivisione del traffico ed è presente una quantità frazionata di istanze proporzionale alla suddivisione del traffico Numero minimo di istanze a livello di servizio: 3 La revisione A riceve un'istanza minima, mentre la revisione B ottiene 2 istanze minime. Il numero di istanze per il servizio è 3.