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 servizio Cloud Run utilizzando il comportamento di scalabilità automatica predefinito di Cloud Run. 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 questa impostazione massima può essere superata per un breve periodo a causa di circostanze come picchi di traffico.

Puoi utilizzare questa impostazione per controllare i costi o limitare il numero di connessioni a un servizio di backend, ad esempio a 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 esegue la scalabilità automatica delle istanze container, consulta Scalabilità automatica delle istanze.

Applicare il numero massimo di istanze a livello di servizio anziché a livello di revisione

Puoi configurare il numero massimo di istanze a livello di servizio o a livello 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 una necessità 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 scalare a un numero maggiore di istanze, modifica questo valore.

Quando applichi il numero massimo di istanze, le impostazioni diventano effettive come segue:

  • A livello di servizio: immediatamente
  • 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 nel 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 disporre anche di altri ruoli concessi nel progetto e nel 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 dei costi 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 configurazioni errate. Come misura di protezione 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 budget da picchi imprevisti.

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

Configurare il numero massimo di istanze a livello di servizio

Puoi modificare l'impostazione del numero massimo di istanze utilizzando la Google Cloud console, Google Cloud CLI, YAML o Terraform quando crei un nuovo servizio o esegui il deployment di una nuova revisione.

Console

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

    Vai a Cloud Run

  2. Se stai configurando un nuovo servizio, fai clic su Esegui il deployment del container per visualizzare il modulo Crea servizio. Individua il modulo Scalabilità del servizio.

  3. Se stai configurando un servizio esistente, fai clic sul servizio per visualizzare il relativo riquadro dei dettagli, quindi fai clic su Modifica le impostazioni di scalabilità a livello di servizio in alto a destra nel riquadro dei dettagli.

  4. Nel campo Numero massimo di istanze, specifica il numero massimo di istanze container richiesto, utilizzando qualsiasi valore intero da 1 al limite massimo possibile per il tuo servizio. Per disattivare il numero massimo di istanze a livello di servizio, cancella tutti i valori impostati nel campo Numero massimo di istanze.

  5. Fai clic su Crea per un nuovo servizio o su Esegui il deployment 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 tuo servizio.
  • MAX-VALUE: il numero massimo di istanze container richiesto, utilizzando qualsiasi valore intero da 1 al limite massimo possibile per il tuo servizio. Per disattivare il numero massimo di istanze a livello di servizio, imposta questo valore su 0.

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 di LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .
  • MAX-VALUE: il numero massimo di istanze container richiesto, utilizzando qualsiasi valore intero da 1 al limite massimo.

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.

  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 di istanze container richiesti, utilizzando qualsiasi valore intero da 1 al limite massimo possibile per il tuo servizio. Per disattivare il numero massimo di istanze a livello di servizio, imposta questo valore su 0.
  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.

Aggiungi quanto segue a una google_cloud_run_v2_service risorsa 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 tuo servizio Cloud Run.
  • REGION: la Google Cloud regione, ad esempio, europe-west1.
  • MAX_INSTANCE: il numero massimo di istanze container richiesto, utilizzando qualsiasi valore intero da 1 al 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 di LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG

Visualizzare il numero massimo di istanze a livello di servizio

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

Console

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

    Vai a Cloud Run

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

  3. Visualizza l'impostazione corrente in alto a destra nel riquadro dei dettagli del servizio, accanto a Scalabilità.

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.

Configurare il numero massimo 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 revisioni di Cloud Run sono configurate per fare lo scale up fino a un massimo di 100 istanze.

Puoi modificare l'impostazione del numero massimo di istanze utilizzando la Google Cloud console, Google Cloud CLI o un file YAML quando crei un nuovo servizio o esegui il deployment di una nuova revisione.

Console

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

    Vai a Cloud Run

  2. Trova e fai clic sul servizio che vuoi aggiornare nell'elenco dei servizi per aprirne i dettagli.

  3. Fai clic su Modifica ed esegui il deployment di una nuova revisione per visualizzare il modulo di deployment della revisione.

  4. Fai clic sulla scheda Container.

  5. Individua la sezione Scalabilità della revisione. Nel campo Numero massimo di istanze, specifica il numero massimo di istanze container.

  6. Fai clic su Esegui il deployment.

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 tuo servizio.
  • MAX-VALUE: il numero massimo di istanze container richiesto, utilizzando qualsiasi valore intero da 1 al 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 di istanze container richiesto, utilizzando qualsiasi valore intero da 1 al limite massimo.
    • REVISION con un nuovo nome di revisione o eliminalo (se presente). Se fornisci un nuovo nome di revisione, deve soddisfare i seguenti criteri:
      • Inizia con SERVICE-
      • Contiene solo lettere minuscole, numeri e -
      • Non termina con un -
      • Non supera i 63 caratteri
  3. Crea o aggiorna il servizio utilizzando il seguente comando:

    gcloud run services replace service.yaml

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

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

Console

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

    Vai a Cloud Run

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

  3. Fai clic sulla scheda Revisioni.

  4. Nel riquadro dei dettagli a destra, visualizza l'impostazione Numero massimo di istanze di revisione elencata nella scheda Container.

gcloud

  1. Utilizza il seguente comando:

    gcloud run services describe SERVICE
  2. Individua il valore di Numero massimo di istanze: nella configurazione restituita.

Utilizzare il numero minimo o massimo di istanze a livello di servizio e di revisione

La tabella seguente mostra il comportamento se combini il numero massimo di istanze a livello di servizio con il numero minimo o massimo di istanze 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 a livello di revisione impostato Il limite massimo effettivo di istanze è il valore inferiore tra il numero massimo di istanze a livello di revisione e il numero massimo di istanze a livello di servizio.
Numero massimo di istanze a livello di servizio impostato Numero minimo di istanze a livello di revisione impostato 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 raggiunge il numero minimo di istanze a livello di revisione configurato.

Utilizzare 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 alloca 50 istanze massime a livello di servizio a ogni revisione. La tabella seguente mostra uno scenario di configurazione di esempio:

Esempio di configurazione Comportamento risultante
Numero massimo di istanze a livello di servizio impostato (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%
Una parte del numero massimo di istanze a livello di servizio viene allocata a ogni revisione. 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.