Imposta il numero minimo di istanze (servizi)

Questa pagina descrive come abilitare le istanze inattive per il tuo servizio utilizzando le impostazioni minime delle istanze.

Per i servizi Cloud Run, Cloud Run per impostazione predefinita scala rispetto al numero di istanze in base al numero di richieste in entrata. Tuttavia, Se il servizio richiede una latenza ridotta, soprattutto quando si esegue la scalabilità da zero istanze attive, puoi modificare questo comportamento predefinito specificando un numero minimo di istanze di container in uso e pronte a gestire le richieste. Per ulteriori dettagli su questa ottimizzazione, consulta i suggerimenti generali per lo sviluppo.

Cloud Run rimuove le istanze che non gestiscono le richieste (inattive). Con il numero minimo di istanze impostato, Cloud Run conserva almeno il numero di istanze il numero minimo di istanze in esecuzione, anche se non gestiscono richieste. Attivo istanze superiori al numero min-instances potrebbero diventare inattivi, 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 del numero minimo di istanze a livello di servizio rispetto a quelle a livello di revisione

Puoi configurare il numero minimo di istanze 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 vengono applicate al momento del deployment della revisione. Se applichi questa funzione a livello di servizio, l'impostazione entra in vigore senza la necessità di eseguire il deployment revisione.

Revisioni con tag e istanze minime a livello di servizio

Le revisioni con tag sono ma vengono conteggiate ai fini del numero minimo di istanze a livello di servizio solo se in una suddivisione del traffico.

Fatturazione

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

Numero minimo di istanze e CPU sempre allocata

Puoi configurare La CPU deve essere sempre allocata se hai bisogno CPU al di fuori delle richieste.

Riavvii di istanze minime

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 allo 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 seguenti ruoli IAM:

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 autorizzazioni di deployment e gestire l'accesso.

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

Per impostazione predefinita, le istanze di container hanno il livello minimo di istanze disattivate, con un'impostazione di 0. Puoi modificare questa impostazione predefinita utilizzando 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 Esegui il deployment del contenitore e selezionate Servizio per visualizzare il modulo Crea servizio. Se configurazione di un servizio esistente, fai clic sul servizio per visualizzarne i dettagli fai clic sull'icona a forma di penna accanto a Numero minimo di istanze in alto a destra del riquadro dei dettagli.

  3. Individua il modulo Scalabilità automatica servizio.

    immagine

    • Nel campo Numero minimo di istanze, specifica il numero di istanze di container da mantenere in uso e pronte per ricevere richieste.
  4. 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 di container da conservare pronto a ricevere richieste. Specifica default per cancellare qualsiasi minimo l'impostazione dell'istanza.

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

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

Sostituisci

  • IMAGE_URL con un riferimento all'immagine container, per 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 forma LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
  • MIN-VALUE con il numero di container di mantenere attive le istanze, pronte a ricevere richieste. Specifica default per cancellare eventuali impostazioni minime dell'istanza.

YAML

  1. 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
  2. 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 sono tenute in caldo e pronte a ricevere richieste.
  3. Crea o aggiorna il servizio utilizzando il comando seguente:

    gcloud 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 il numero minimo di istanze a livello di servizio per un determinato servizio, invia un PATCH Richiesta HTTP all'API Cloud Run Admin Endpoint service.

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 utilizzando gcloud auth print-access-token. All'interno di un'istanza del contenitore Cloud Run, puoi recuperare un token di accesso utilizzando il server di metadati dell'istanza del contenitore.
  • 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 attuali delle istanze minime del livello di servizio per 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 corrente viene visualizzata in alto a destra nel riquadro dei dettagli del servizio, accanto a Istanze minime.

gcloud

  1. Utilizza il seguente comando:

    gcloud run services describe SERVICE
  2. Individua il valore per Service-level Min Instances (Istanze minime a livello di servizio): nel configurazione.

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

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

    Vai a Cloud Run

  2. 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, quindi fai clic su Modifica ed esegui il deployment di una nuova revisione.

  3. 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.

  4. Fai clic sulla scheda Contenitore.

    immagine

    • Nel campo Numero minimo di istanze, specifica il numero di istanze di container da mantenere in uso e pronte per ricevere richieste.
  5. 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 minime delle istanze.

Puoi anche impostare min-instance durante deployment utilizzando il comando:

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

Sostituisci:

  • IMAGE_URL con un riferimento all'immagine container, per 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 forma LOCATION-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 minime delle istanze.

YAML

  1. 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
  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 servizio Cloud Run
    • MIN-INSTANCE con il numero di istanze da mantenere attive, pronte a ricevere richieste.
    • REVISION con un nuovo nome di revisione o eliminala (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
  3. 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.

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

  deletion_protection = false # set to "true" in production

  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 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 a destra, l'impostazione del numero minimo di istanze a livello di revisione è elencato nella scheda Contenitore.

gcloud

  1. Utilizza il seguente comando:

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

Utilizzo di istanze minime o massime sia a livello di servizio che di revisione

La tabella seguente mostra il comportamento se combini il livello minimo di servizio e il numero minimo o massimo di istanze a livello di revisione:

Impostazione di configurazione Comportamento
Vengono impostate sia le istanze minime del livello di servizio sia quelle 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 di istanze minime del livello di servizio con 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 valore minimo del livello di servizio istanze = 10, una suddivisione del traffico 50/50 alloca 5 istanze minime del livello di servizio a ciascuna 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 Istanze minime a livello di servizio: 10
  • Numero minimo di istanze della revisione A: 0
  • Istanza minima di revisione B: 0
  • Suddivisione del traffico: 60/40
La revisione A riceve 6 istanze da un numero minimo di istanze a livello di servizio, proporzionale alla suddivisione del traffico. La revisione B riceve 4 istanze da un numero minimo di istanze a livello di servizio, proporzionale alla suddivisione del traffico.
Ricezione di più istanze rispetto al numero minimo di istanze a livello di servizio a causa del numero minimo di istanze a livello di revisione Numero minimo di istanze del livello di servizio: 10
  • Numero minimo di istanze di revisione A: 6
  • Istanza minima revisione B: 0
  • Suddivisione del traffico: 50/50
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 istanze inferiori al livello minimo di servizio a causa del numero massimo di istanze a livello di revisione. Numero minimo di istanze del livello di servizio: 10
  • Numero minimo di istanze della revisione A: 0
  • Numero massimo di istanze di revisione A: 3
  • Istanza minima di revisione B: 0
  • Suddivisione del traffico: 50/50
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. Ne consegue che vengono perse 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 esiste una quantità frazionaria di istanze proporzionale alla suddivisione del traffico Numero minimo di istanze del livello di servizio: 3 La revisione A riceve almeno 1 istanza, mentre la revisione B riceve almeno 2 istanze. Il numero di istanze per il servizio è 3.