Configura i controlli di scalabilità personalizzati per i servizi

Per impostazione predefinita, Cloud Run è ottimizzato per prestazioni elevate con un target di utilizzo del 60% sia per la CPU sia per la concorrenza e scala automaticamente il numero di istanze per gestire tutte le richieste in entrata. Tuttavia, per alcuni casi d'uso, potresti voler configurare i fattori di scalabilità da utilizzare, ad esempio solo la CPU, e impostare target di utilizzo personalizzati.

Cloud Run fornisce controlli di scalabilità per darti maggiore controllo sui comportamenti di scalabilità del tuo servizio, consentendoti di prendere decisioni informate sulla scalabilità del carico di lavoro in base ai tuoi requisiti. Puoi attivare il comportamento di scalabilità avanzato mantenendo i target di utilizzo predefiniti oppure configurare i seguenti target di utilizzo personalizzati:

  • Target di utilizzo per la scalabilità basata sulla CPU
  • Target di utilizzo per la scalabilità basata sulla concorrenza

Con i controlli di scalabilità, puoi ottimizzare i costi e migliorare la prevedibilità dei tuoi servizi. Per ulteriori informazioni sul comportamento di scalabilità automatica predefinito dei servizi Cloud Run, consulta Informazioni sulla scalabilità automatica delle istanze nei servizi Cloud Run.

Limiti di configurazione

Ai target di scalabilità personalizzati si applicano i seguenti limiti:

Fattore di scalabilità % predefinito % minimo configurabile % massimo configurabile
CPU target utilization 60% 10% 95%
Concurrency target utilization 60% 10% 95%

Attivare il comportamento di scalabilità avanzato

Il gestore della scalabilità automatica di Cloud Run risponde attentamente ai target configurati, anche per i servizi con un numero ridotto di istanze. Ti consigliamo di attivare questa funzionalità per migliorare la prevedibilità della scalabilità, anche se intendi mantenere i target di utilizzo predefiniti del 60% sia per la CPU sia per la concorrenza.

Per attivare questa funzionalità, puoi utilizzare gcloud CLI o YAML quando esegui il deployment di una nuova 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.

gcloud

Imposta i valori di utilizzo CPU target e utilizzo concorrenza target di una determinata revisione eseguendo il seguente comando gcloud beta run services update:

gcloud beta run services update SERVICE --scaling-cpu-target=0.6 \
--scaling-concurrency-target=0.6

Sostituisci SERVICE con il nome del tuo servizio.

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. Aggiungi gli attributi run.googleapis.com/scaling-cpu-target e run.googleapis.com/scaling-concurrency-target.

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      annotations:
        run.googleapis.com/launch-stage: BETA
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/scaling-cpu-target: '0.6'
            run.googleapis.com/scaling-concurrency-target: '0.6'

    Sostituisci SERVICE con il nome del tuo servizio.

  3. Crea o aggiorna il servizio utilizzando il seguente comando:

    gcloud run services replace service.yaml

Configurare target personalizzati

Definisci target di utilizzo personalizzati per ottimizzare i costi o migliorare le prestazioni per i carichi di lavoro configurando target di utilizzo specifici per CPU e concorrenza entro i limiti di configurazione.

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.

Puoi configurare i controlli di scalabilità utilizzando gcloud CLI o YAML quando esegui il deployment di una nuova revisione.

gcloud

Aggiorna i valori di utilizzo CPU target e utilizzo concorrenza target di una determinata revisione eseguendo il comando gcloud beta run services update.

  • Per aggiornare l'utilizzo CPU target, esegui il seguente comando:

    gcloud beta run services update SERVICE --scaling-cpu-target=CPU_TARGET

    Sostituisci quanto segue:

    • SERVICE: il nome del tuo servizio.

    • CPU_TARGET: il target per l'utilizzo della CPU. Specifica un valore compreso tra 0,1 e 0,95. Puoi configurare solo fino a due cifre dopo la virgola.

  • Per aggiornare l'utilizzo concorrenza target, esegui il seguente comando:

    gcloud beta run services update SERVICE --scaling-concurrency-target=CONCURRENCY_TARGET

    Sostituisci quanto segue:

    • SERVICE: il nome del tuo servizio.

    • CONCURRENCY_TARGET: il target per l'utilizzo della concorrenza. Specifica un valore compreso tra 0,1 e 0,95. Puoi configurare solo fino a due cifre dopo la virgola.

  • Per aggiornare sia l'utilizzo CPU target sia l'utilizzo concorrenza target, esegui il seguente comando:

    gcloud beta run services update SERVICE --scaling-cpu-target=CPU_TARGET \
    --scaling-concurrency-target=CONCURRENCY_TARGET

    Sostituisci quanto segue:

    • SERVICE: il nome del tuo servizio.
    • CPU_TARGET: il target per l'utilizzo della CPU. Specifica un valore compreso tra 0,1 e 0,95. Puoi configurare solo fino a due cifre dopo la virgola.
    • CONCURRENCY_TARGET: il target per l'utilizzo della concorrenza. Specifica un valore compreso tra 0,1 e 0,95. Puoi configurare solo fino a due cifre dopo la virgola.

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. Per aggiornare l'utilizzo CPU target e l'utilizzo concorrenza target, aggiungi gli attributi run.googleapis.com/scaling-cpu-target e run.googleapis.com/scaling-concurrency-target:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      annotations:
        run.googleapis.com/launch-stage: BETA
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/scaling-cpu-target: 'CPU_TARGET'
            run.googleapis.com/scaling-concurrency-target: 'CONCURRENCY_TARGET'

    Sostituisci quanto segue:

    • SERVICE: il nome del tuo servizio.
    • CPU_TARGET: il target per l'utilizzo della CPU. Specifica un valore compreso tra 0,1 e 0,95. Puoi configurare solo fino a due cifre dopo la virgola.
    • CONCURRENCY_TARGET: il target per l'utilizzo della concorrenza. Specifica un valore compreso tra 0,1 e 0,95. Puoi configurare solo fino a due cifre dopo la virgola.
  3. Crea o aggiorna il servizio utilizzando il seguente comando:

    gcloud run services replace service.yaml

Disattivare i controlli di scalabilità

Puoi disattivare i target di utilizzo della CPU o della concorrenza, ma non entrambi. Un fattore di scalabilità deve essere sempre attivo. Per disattivare i controlli di scalabilità, ripristina i valori di utilizzo predefiniti anziché disattivarli. Quando disattivi un fattore di scalabilità, Cloud Run ignora questa metrica durante le decisioni di scalabilità.

Puoi disattivare i controlli di scalabilità utilizzando gcloud CLI o YAML quando esegui il deployment di una nuova revisione.

gcloud

Puoi disattivare l'utilizzo CPU target o l'utilizzo concorrenza target eseguendo il comando gcloud beta run services update.

  • Per scalare solo in base alla CPU, disattiva il target di concorrenza eseguendo il seguente comando:

    gcloud beta run services update SERVICE --scaling-concurrency-target=disabled

    Sostituisci SERVICE con il nome del tuo servizio.

  • Per scalare solo in base alla concorrenza, disattiva il target della CPU eseguendo il seguente comando:

    gcloud beta run services update SERVICE --scaling-cpu-target=disabled

    Sostituisci SERVICE con il nome del tuo servizio.

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. Per scalare solo in base alla CPU, disattiva il target di concorrenza impostando l'attributo run.googleapis.com/scaling-concurrency-target su disabled:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      annotations:
        run.googleapis.com/launch-stage: BETA
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/scaling-concurrency-target: disabled

    Sostituisci SERVICE con il nome del tuo servizio.

  3. Per scalare solo in base alla concorrenza, disattiva il target della CPU impostando l'attributo run.googleapis.com/scaling-cpu-target su disabled:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      annotations:
        run.googleapis.com/launch-stage: BETA
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/scaling-cpu-target: disabled

    Sostituisci SERVICE con il nome del tuo servizio.

  4. Crea o aggiorna il servizio utilizzando il seguente comando:

    gcloud run services replace service.yaml

Ripristinare i valori predefiniti

Quando ripristini i valori di utilizzo CPU target o utilizzo concorrenza target sui valori predefiniti, disattivi la funzionalità dei controlli di scalabilità. Puoi ripristinare i controlli di scalabilità sui valori predefiniti utilizzando gcloud CLI o YAML quando esegui il deployment di una nuova revisione.

gcloud

Ripristina i valori predefiniti di utilizzo CPU target e utilizzo concorrenza target eseguendo il comando gcloud beta run services update.

  • Per ripristinare il valore predefinito di utilizzo CPU target, esegui il seguente comando:

    gcloud beta run services update SERVICE --scaling-cpu-target=default

    Sostituisci SERVICE con il nome del tuo servizio.

  • Per ripristinare il valore predefinito di utilizzo concorrenza target, esegui il seguente comando:

    gcloud beta run services update SERVICE --scaling-concurrency-target=default

    Sostituisci SERVICE con il nome del tuo servizio.

  • Per ripristinare i valori predefiniti di utilizzo CPU target e utilizzo concorrenza target, esegui il seguente comando:

    gcloud beta run services update SERVICE --scaling-cpu-target=default \
    --scaling-concurrency-target=default

    Sostituisci SERVICE con il nome del tuo servizio.

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. Per ripristinare i target predefiniti di utilizzo della CPU e della concorrenza, rimuovi gli attributi run.googleapis.com/scaling-cpu-target e run.googleapis.com/scaling-concurrency-target dal file YAML:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      annotations:
        run.googleapis.com/launch-stage: BETA
      name: SERVICE
    spec:
      template:
        metadata:
          # Remove the scaling target annotations to restore defaults
        ...

    Sostituisci SERVICE con il nome del tuo servizio.

  3. Crea o aggiorna il servizio utilizzando il seguente comando:

    gcloud run services replace service.yaml

Visualizzare la configurazione della scalabilità

Puoi visualizzare la configurazione della scalabilità utilizzando gcloud CLI o YAML.

Console

  1. Nella Google Cloud console, 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 Revisioni.

  4. Nel riquadro dei dettagli a destra, visualizza l'impostazione Metriche di scalabilità automatica elencata nella scheda Container.

gcloud

  1. Utilizza il seguente comando:

    gcloud run services describe SERVICE

    Sostituisci SERVICE con il nome del tuo servizio.

  2. Individua il valore delle impostazioni Utilizzo CPU target: e Utilizzo concorrenza target: nella configurazione restituita.

Best practice

Puoi ottimizzare i costi ed evitare la scalabilità eccessiva riducendo il numero di istanze oppure puoi migliorare le prestazioni eseguendo la scalabilità in modo più aggressivo in risposta a fattori specifici. Per determinare i target di utilizzo ottimali per il carico di lavoro, utilizza le seguenti strategie:

  • Prima di modificare i target, identifica la metrica che attiva la scalabilità del servizio. Segui questi passaggi per identificare la metrica di scalabilità:

    1. Vai a Esplora metriche nella Google Cloud console per esaminare il grafico di monitoraggio dell'utilizzo della CPU e della concorrenza.

    2. Cerca e seleziona la metrica run.googleapis.com/scaling/recommended_instances e imposta Aggregazione su Nessuna aggregazione per visualizzare la metrica raggruppata per fattore di scalabilità.

    Il fattore con il valore più alto è quello che controlla il conteggio delle istanze del servizio. Se vuoi che un altro fattore abbia la priorità o se vuoi eseguire la scalabilità in modo più o meno aggressivo, modifica il target di utilizzo per quel fattore specifico.

  • Modifica i target in modo incrementale e attendi qualche minuto tra una modifica e l'altra per osservare l'effetto sulle prestazioni.

  • Utilizza la suddivisione del traffico per testare i nuovi target di scalabilità indirizzando una piccola percentuale del traffico a una revisione separata prima di implementarla per l'intero servizio.

Informazioni sui target di utilizzo ridotto

La riduzione del target di utilizzo al minimo di 0,1 (10%) modifica in modo significativo la scalabilità del servizio.

I vantaggi dell'impostazione di un target di utilizzo ridotto includono:

  • Elevata disponibilità del servizio: il servizio esegue lo scale up molto prima, mantenendo un ampio buffer di capacità inattiva per gestire picchi di traffico improvvisi senza colpire la latenza.

  • Scalabilità più rapida con un numero ridotto di istanze: i servizi vengono scalati in modo più affidabile prima di raggiungere i colli di bottiglia di utilizzo elevato.

Gli svantaggi dell'impostazione di target di utilizzo ridotto includono:

  • Potenziale aumento dei costi: esegui più istanze di quelle strettamente necessarie per il carico attuale, con conseguente aumento della fatturazione.
  • Decisioni di scalabilità più frequenti: con un utilizzo inferiore, Cloud Run ha una tolleranza inferiore e non attende a lungo prima di eseguire la scalabilità.

Passaggi successivi