Impostare il numero massimo di istanze per i servizi

Questa pagina descrive come impostare il numero massimo di istanze che possono essere utilizzate per il tuo servizio Cloud Run utilizzando il comportamento di scalabilità automatica di Cloud Run predefinito. Per scalare manualmente il servizio, consulta Scalabilità manuale.

La specifica del numero massimo di istanze in Cloud Run consente di limitare la scalabilità del servizio in risposta alle richieste in entrata, anche se questo valore massimo può essere superato per un breve periodo a causa di circostanze come i picchi di traffico.

Puoi utilizzare questa impostazione per controllare i costi o per limitare il numero di connessioni a un servizio di supporto, ad esempio un database.

Per informazioni sui limiti massimi di istanze che potrebbero essere applicati al tuo servizio, consulta Limiti massimi di istanze.

Per saperne di più sul modo in cui Cloud Run scala automaticamente le istanze di container, consulta Scalabilità automatica delle istanze.

Applica il numero massimo di istanze a livello di servizio rispetto al livello di revisione

Puoi configurare il numero massimo di istanze a livello di servizio o di revisione. Google consiglia di utilizzare il numero massimo di istanze a livello di servizio per limitare il numero di istanze di un servizio, a meno che tu non abbia un'esigenza specifica di limitare le istanze a livello di revisione. Per impostazione predefinita, Cloud Run imposta 100 istanze per ogni revisione. Per consentire al servizio di fare lo scale up di più istanze, modifica questo valore.

Quando applichi il numero massimo di istanze, le impostazioni vengono applicate come segue:

  • Livello di servizio: immediato
  • A livello di revisione: al momento del deployment della revisione

Revisioni con tag e numero massimo di istanze a livello di servizio

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

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per configurare ed eseguire il deployment di servizi Cloud Run, chiedi all'amministratore di concederti i seguenti ruoli IAM:

Se esegui il deployment di un servizio o di una funzione dal codice sorgente, devi anche disporre 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 di Cloud Run e Autorizzazioni IAM di 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 saperne di più sulla concessione dei ruoli, consulta Autorizzazioni di deployment e Gestisci l'accesso.

Considerazioni sui costi

L'impostazione del numero massimo di istanze consente di stabilire un limite di sicurezza per gestire i costi. L'impostazione di un numero massimo più elevato dà la priorità alla disponibilità, ma introduce potenziali rischi di fatturazione dovuti a picchi di traffico imprevisti o errori di configurazione. Come misura di salvaguardia dei costi, configura questa impostazione a livello di servizio quando esegui il deployment iniziale del servizio. Ti consigliamo di iniziare con un valore massimo di istanze pari a 3 per proteggere il tuo budget da picchi imprevisti.

Per saperne di più, consulta i prezzi di Cloud Run o stima i costi con il Calcolatore prezzi. Per ulteriori strumenti di controllo dei costi, consulta Quote di allocazione delle risorse o Budget e avvisi di fatturazione.

Configura il numero massimo di istanze a livello di servizio

Puoi modificare l'impostazione del numero massimo di istanze utilizzando la console Google Cloud , Google Cloud CLI, YAML o Terraform 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. Seleziona Servizi dal menu di navigazione di Cloud Run:

    1. Se stai configurando un nuovo servizio, fai clic su Esegui il deployment del container e compila la pagina delle impostazioni iniziali del servizio.

    2. Se stai configurando un servizio esistente, fai clic sul servizio, quindi sulla scheda Scalabilità.

  3. In Scalabilità del servizio, individua il campo Numero massimo di istanze e specifica il numero massimo di istanze di container richiesto, utilizzando un valore intero compreso tra 1 e il limite massimo possibile per il tuo servizio. Per rimuovere il limite a livello di servizio, elimina il valore impostato. In questo modo, l'impostazione viene ripristinata al valore predefinito.

  4. Fai clic su Crea per un nuovo servizio. Fai clic su Visualizza differenze e fai di nuovo il deployment, quindi su Esegui il deployment delle modifiche per un servizio esistente.

gcloud

Puoi aggiornare il numero massimo di istanze di un determinato servizio utilizzando il seguente comando:

gcloud run services update SERVICE --max MAX-VALUE

Sostituisci quanto segue:

  • SERVICE: il nome del servizio.
  • MAX-VALUE: il numero massimo richiesto di istanze di container, utilizzando un valore intero compreso tra 1 e il limite massimo possibile per il tuo servizio. Per rimuovere il limite a livello di servizio, elimina il valore impostato. In questo modo, l'impostazione viene ripristinata al valore predefinito.

Puoi anche impostare il numero massimo di istanze durante il deployment utilizzando il seguente comando:

gcloud run deploy --image IMAGE_URL --max MAX-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 formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • MAX-VALUE: il numero massimo richiesto di istanze di container, utilizzando un valore intero compreso tra 1 e il limite massimo.

YAML

Qualsiasi modifica alla configurazione porta alla creazione di una nuova revisione. Anche le revisioni successive riceveranno automaticamente questa impostazione di configurazione, a meno che non apporti aggiornamenti espliciti per modificarla.

  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/maxScale::

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
      annotations:
        run.googleapis.com/maxScale: 'MAX-INSTANCE'

    Sostituisci quanto segue:

    • SERVICE: il nome del tuo servizio Cloud Run
    • MAX-INSTANCE: il numero massimo richiesto di istanze di container, utilizzando un valore intero compreso tra 1 e il limite massimo possibile per il tuo servizio. Per rimuovere il limite a livello di servizio, elimina il valore impostato. In questo modo, l'impostazione viene ripristinata al valore predefinito.
  3. Crea o aggiorna il servizio utilizzando il seguente comando:

    gcloud run services replace service.yaml

    Il comando gcloud run services replace utilizza per impostazione predefinita il file service.yaml, se presente.

Terraform

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

Aggiungi quanto segue a una risorsa google_cloud_run_v2_service nella configurazione Terraform:
resource "google_cloud_run_v2_service" "default" {
name     = "SERVICE"
location = "REGION"

scaling {
  max_instance_count = MAX_INSTANCE
}

template {
  containers {
    image = "IMAGE_URL"
  }
}
}

Sostituisci quanto segue:

  • SERVICE: il nome del servizio Cloud Run.
  • REGION: la regione Google Cloud , ad esempio europe-west1.
  • MAX_INSTANCE: il numero massimo richiesto di istanze di container, utilizzando un valore intero compreso tra 1 e il limite massimo.
  • 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 formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG

Visualizza il numero massimo di istanze a livello di servizio

Per visualizzare le impostazioni attuali del numero massimo di istanze a livello di servizio per il tuo servizio Cloud Run:

Console

  1. Nella console Google Cloud , vai alla pagina Servizi di Cloud Run:

    Vai a Cloud Run

  2. Fai clic sul servizio per aprire il riquadro Dettagli servizio.

  3. Fai clic sulla scheda Scalabilità per visualizzare l'impostazione corrente.

gcloud

  1. Utilizza il seguente comando:

    gcloud run services describe SERVICE
  2. Individua il valore di Scalabilità: automatica (min: MIN_VALUE, max: MAX_VALUE) nella configurazione restituita.

Configura il numero massimo di istanze a livello di revisione

Qualsiasi modifica alla configurazione porta alla creazione di una nuova revisione. Anche le revisioni successive riceveranno automaticamente questa impostazione di configurazione, a meno che non apporti aggiornamenti espliciti per modificarla.

Per impostazione predefinita, le revisioni di Cloud Run sono configurate per fare lo scale up fino a un massimo di 100 istanze.

La scalabilità a livello di revisione è disponibile solo per i servizi per cui la funzionalità era stata configurata in precedenza.

Console

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

    Vai a Cloud Run

  2. Seleziona Servizi dal menu di navigazione di Cloud Run:

    1. Se stai configurando un nuovo servizio, fai clic su Esegui il deployment del container e compila la pagina delle impostazioni iniziali del servizio. Quindi fai clic su Container, networking, sicurezza per espandere la pagina di configurazione del servizio.

    2. Se stai configurando un servizio esistente, fai clic sul servizio, quindi sulla scheda Scalabilità.

  3. Nella sezione Scalabilità delle revisioni, specifica il numero massimo di istanze di container nel campo Numero massimo di istanze.

  4. Fai clic su Crea per un nuovo servizio. Fai clic su Visualizza differenze e fai di nuovo il deployment, quindi su Esegui il deployment delle modifiche per un servizio esistente.

gcloud

Puoi aggiornare il numero massimo di istanze di un determinato servizio utilizzando il seguente comando:

gcloud run services update SERVICE --max-instances MAX-VALUE

Sostituisci quanto segue:

  • SERVICE: il nome del servizio.
  • MAX-VALUE: il numero massimo richiesto di istanze di container, utilizzando un valore intero compreso tra 1 e il limite massimo.

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/maxScale::

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            autoscaling.knative.dev/maxScale: 'MAX-INSTANCE'
          name: REVISION

    Sostituisci quanto segue:

    • SERVICE: il nome del tuo servizio Cloud Run
    • MAX-INSTANCE: il numero massimo richiesto di istanze di container, utilizzando un valore intero compreso tra 1 e il limite massimo.
    • REVISION: un nuovo nome della revisione o eliminalo (se presente). Se fornisci un nuovo nome della revisione, questo deve soddisfare i seguenti criteri:
      • Inizia con SERVICE-
      • Contiene solo lettere minuscole, numeri e -
      • Non termina con -
      • Non supera i 63 caratteri
  3. Crea o aggiorna il servizio utilizzando il seguente comando:

    gcloud run services replace service.yaml

    Il comando gcloud run services replace utilizza per impostazione predefinita il file service.yaml, se presente.

Visualizza le impostazioni del numero massimo di istanze a livello di revisione

La scalabilità a livello di revisione è disponibile solo per i servizi per cui la funzionalità era stata configurata in precedenza.

Per visualizzare le impostazioni attuali del numero massimo di istanze a livello di revisione per il tuo servizio Cloud Run:

Console

  1. Nella console Google Cloud , vai alla pagina Servizi di Cloud Run:

    Vai a Cloud Run

  2. Fai clic sul servizio per aprire il riquadro Dettagli servizio.

  3. Fai clic sulla scheda Scalabilità.

  4. In Scalabilità delle revisioni, visualizza il Numero massimo di istanze.

gcloud

  1. Utilizza il seguente comando:

    gcloud run services describe SERVICE
  2. Individua il valore di Istanze massime: nella configurazione restituita.

Utilizza il numero minimo o massimo di istanze sia a livello di servizio che di revisione

La tabella seguente mostra il comportamento se combini le istanze massime a livello di servizio con le istanze minime o massime a livello di revisione:

Impostazione a livello di servizio Impostazione a livello di revisione Comportamento
Numero massimo di istanze a livello di servizio impostato Numero massimo di istanze impostato a livello di revisione Il limite massimo di istanze effettivo è il valore più basso tra le istanze massime a livello di revisione e le istanze massime a livello di servizio.
Numero massimo di istanze a livello di servizio impostato Numero minimo di istanze impostato a livello di revisione Se il numero massimo di istanze a livello di servizio è impostato su un valore inferiore al numero minimo di istanze a livello di revisione, la revisione avvia le istanze fino al numero massimo di istanze a livello di servizio e non raggiungerà il numero minimo di istanze a livello di revisione configurato.

Utilizza il numero massimo di istanze a livello di servizio con la suddivisione del traffico

Se utilizzi la suddivisione del traffico, il numero massimo di istanze a livello di servizio viene distribuito tra le revisioni in base alla proporzione della suddivisione del traffico. Ad esempio, se il numero massimo di istanze a livello di servizio è 100, una suddivisione del traffico 50/50 assegna 50 istanze massime a livello di servizio a ogni revisione. La tabella seguente mostra uno scenario di configurazione di esempio:

Esempio di configurazione Comportamento conseguente
Numero massimo di istanze impostato a livello di servizio (scenario in cui non sono presenti impostazioni a livello di revisione): 100
  • Suddivisione del traffico per la Revisione A: 10%
  • Suddivisione del traffico per la revisione B: 10%
  • Suddivisione del traffico per la Revisione C : 80%
A ogni revisione viene assegnata una parte del numero massimo di istanze a livello di servizio. Il numero massimo effettivo di istanze per ogni revisione è fisso in base alla suddivisione del traffico. Il numero massimo di istanze per la Revisione A è 10, per la Revisione B è 10 e per la Revisione C è 80.