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 i 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 di 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 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 budget da picchi imprevisti.

Per ulteriori informazioni, consulta i prezzi di Cloud Run o stima i costi con il calcolatore dei prezzi. Per altri strumenti di controllo dei costi, consulta le quote di allocazione delle risorse o i budget e gli 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 sulla scheda Scalabilità.

  4. In Scalabilità del servizio, trova il campo Numero massimo di istanze e specifica il numero massimo di istanze di container richiesto, utilizzando qualsiasi valore intero da 1 al limite massimo possibile per il tuo servizio. Per rimuovere il limite a livello di servizio, elimina il valore impostato. L'impostazione viene ripristinata al valore predefinito.

  5. Fai clic su Crea per un nuovo servizio. Fai clic su Visualizza diff ed esegui 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 di istanze di container richiesto, utilizzando qualsiasi valore intero da 1 al limite massimo possibile per il tuo servizio. Per rimuovere il limite a livello di servizio, elimina il valore impostato. 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 di LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .
  • MAX-VALUE: il numero massimo di istanze di 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 servizio Cloud Run
    • MAX-INSTANCE: il numero massimo di istanze di container richiesto, utilizzando qualsiasi valore intero da 1 al limite massimo possibile per il tuo servizio. Per rimuovere il limite a livello di servizio, elimina il valore impostato. L'impostazione viene ripristinata al valore predefinito.
  3. Crea o aggiorna il servizio utilizzando il seguente comando:

    gcloud run services replace service.yaml

    Per impostazione predefinita, il comando gcloud run services replace utilizza 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 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 servizio Cloud Run.
  • REGION: la Google Cloud regione, ad esempio, europe-west1.
  • MAX_INSTANCE: il numero massimo di istanze di 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 del numero massimo di istanze a livello di servizio correnti per il 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 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.

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.

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

Console

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

    Vai a Cloud Run

  2. Seleziona Servizi dal menu di navigazione di Cloud Run e fai clic su Esegui il deployment del container per configurare un nuovo servizio. Se stai configurando un servizio esistente, fai clic sul servizio.

  3. Se stai configurando un nuovo servizio, compila la pagina delle impostazioni iniziali del servizio, quindi fai clic su Container, Networking, sicurezza per espandere la pagina di configurazione del servizio.

  4. Se stai configurando un servizio esistente, fai clic sulla scheda Scalabilità.

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

  6. Fai clic su Crea per un nuovo servizio. Fai clic su Visualizza diff ed esegui 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 di istanze di 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 servizio Cloud Run
    • MAX-INSTANCE: il numero massimo di istanze di container richiesto, utilizzando qualsiasi valore intero da 1 al limite massimo.
    • REVISION: 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

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

Visualizzare 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à è stata configurata in precedenza.

Per visualizzare le impostazioni del numero massimo di istanze a livello di revisione correnti per il 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 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 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.