Per impostazione predefinita, alle istanze Cloud Run viene allocata la CPU solo durante l'elaborazione delle richieste, l'avvio e l'arresto del container. (fai riferimento al ciclo di vita dell'istanza). Puoi modificare questo comportamento in modo che la CPU sia sempre allocata e disponibile anche quando non ci sono richieste in entrata. L'impostazione della CPU come sempre allocata può essere utile per l'esecuzione di attività in background di breve durata e di altre attività di elaborazione asincrona.
Anche se la CPU è sempre allocata, la scalabilità automatica di Cloud Run è ancora in vigore e potrebbe terminare le istanze se non sono necessarie per gestire il traffico in entrata o l'utilizzo corrente della CPU al di fuori delle richieste. Un'istanza non rimarrà mai inattiva per più di 15 minuti dopo l'elaborazione di una richiesta, a meno che non venga mantenuta attiva utilizzando le istanze minime.
La combinazione di CPU sempre allocate con un numero di istanze minime consente di avere un numero di istanze attive con accesso completo alle risorse della CPU, consentendo casi d'uso di elaborazione in background. Quando utilizzi questo pattern, Cloud Run applica l'autoscaling delle istanze anche se un servizio utilizza la CPU al di fuori di qualsiasi richiesta.
Se utilizzi i controlli di salute, la CPU viene allocata per ogni controllo. Consulta i controlli di integrità dei container per dettagli sulla fatturazione.
Impatto sui prezzi
Se scegli di allocare la CPU solo durante l'elaborazione delle richieste, ti vengono addebitati i costi per richiesta e solo quando l'istanza elabora una richiesta. Se scegli l'impostazione La CPU è sempre allocata, ti verranno addebitati i costi per l'intero ciclo di vita dell'istanza. Per i dettagli, consulta le tabelle dei prezzi di Cloud Run.
Il Recommender di Google esamina automaticamente il traffico ricevuto dal tuo servizio Cloud Run nell'ultimo mese e consiglia di passare dalla CPU allocata durante le richieste alla CPU sempre allocata, se è più economica.
Come scegliere l'allocazione della CPU appropriata
La scelta dell'allocazione della CPU appropriata per il tuo caso d'uso dipende da diversi fattori, come i pattern di traffico, l'esecuzione in background e il costo, ciascuno descritto nelle sezioni seguenti.
Considerazioni sui pattern di traffico
- L'opzione La CPU viene allocata solo durante l'elaborazione delle richieste è consigliata quando il traffico in entrata è sporadico, intermittente o presenta picchi.
- L'opzione La CPU è sempre allocata è consigliata quando il traffico in entrata è costante e varia lentamente.
Considerazioni sull'esecuzione in background
La selezione di CPU sempre allocata ti consente di eseguire attività in background di breve durata e altro lavoro di elaborazione asincrona dopo aver restituito le risposte. Ad esempio:
- Sfruttare agenti di monitoraggio come OpenTelemetry che potrebbero presumere di poter essere eseguiti in background.
- Utilizzo delle coroutine di Go, dell'async di Node.js, dei thread Java e delle coroutine di Kotlin.
- Utilizzo di framework di applicazioni che si basano su funzionalità di pianificazione/background integrate.
Le istanze inattive, incluse quelle mantenute in uso utilizzando le istanze minime, possono essere arrestate in qualsiasi momento. Se devi completare le attività in sospeso prima che il contenitore venga terminato, puoi intercettare SIGTERM per concedere a un'istanza un periodo di tolleranza di 10 secondi prima che venga interrotta.
Valuta la possibilità di utilizzare Cloud Tasks per eseguire attività asincrone. Cloud Tasks riprova automaticamente le attività non riuscite e supporta tempi di esecuzione fino a 30 minuti.
Considerazioni sui costi
Se al momento utilizzi l'opzione CPU allocata solo durante l'elaborazione delle richieste, l'opzione CPU sempre allocata è probabilmente più economica se:
- Il servizio Cloud Run sta elaborando un numero elevato di richieste correnti a un ritmo piuttosto costante.
- Non vedi molte istanze "inutilizzate" quando esamini la metrica Conteggio istanze.
Puoi utilizzare il Calcolatore prezzi per stimare le differenze di costo.
Considerazioni sulla scalabilità automatica
Cloud Run scala automaticamente il numero di istanze container.
Per un servizio impostato su CPU allocata solo durante l'elaborazione delle richieste, Cloud Run scala automaticamente il numero di istanze in base all'utilizzo della CPU solo durante l'elaborazione delle richieste.
Per un servizio impostato su CPU sempre allocata, Cloud Run esegue la scalabilità automatica del numero di istanze in base all'utilizzo della CPU per l'intero ciclo di vita dell'istanza container, tranne quando viene eseguito lo scale up e lo scale down a zero, in cui vengono utilizzate solo le richieste.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per configurare ed eseguire il deployment dei servizi Cloud Run, chiedi all'amministratore di concederti i seguenti ruoli IAM:
-
Cloud Run Developer (
roles/run.developer
) nel servizio Cloud Run -
Utente account di servizio (
roles/iam.serviceAccountUser
) nell'identità di servizio
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 le autorizzazioni di deployment e gestisci l'accesso.
Impostare e aggiornare l'allocazione della CPU
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.
Se scegli l'opzione CPU sempre allocata, devi specificare almeno 512 MiB di memoria.
Per impostazione predefinita, la CPU viene allocata solo durante l'elaborazione delle richieste per ogni istanza di container. Puoi modificarlo utilizzando la console Google Cloud, la riga di comando gcloud o un file YAML quando crei un nuovo servizio o esegui il deployment di una nuova revisione:
Console
Nella console Google Cloud, vai a Cloud Run:
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, poi su Modifica ed esegui il deployment di una nuova revisione.
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.
Fai clic sulla scheda Contenitore.
- Seleziona l'allocazione della CPU che preferisci in Allocazione e prezzi della CPU. Seleziona La CPU viene allocata solo durante l'elaborazione delle richieste per fare in modo che le istanze ricevano CPU solo quando ricevono richieste. Seleziona La CPU è sempre allocata per allocare la CPU per l'intero ciclo di vita delle istanze.
Fai clic su Crea o Esegui il deployment.
gcloud
Puoi aggiornare l'allocazione della CPU. Per impostare le CPU in modo che siano sempre allocate per un determinato servizio:
gcloud run services update SERVICE --no-cpu-throttling
Sostituisci SERVICE con il nome del servizio.
Per impostare l'allocazione della CPU solo durante l'elaborazione delle richieste:
gcloud run services update SERVICE --cpu-throttling
Puoi anche impostare l'allocazione della CPU durante il deployment. Per impostare le CPU in modo che siano sempre allocate:
gcloud run deploy --image IMAGE_URL --no-cpu-throttling
Per impostare l'allocazione della CPU solo durante l'elaborazione delle richieste:
gcloud run deploy --image IMAGE_URL --cpu-throttling
Sostituisci IMAGE_URL con un riferimento all'immagine del 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 ha la forma LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
.
YAML
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
Aggiorna l'attributo
cpu
:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: run.googleapis.com/cpu-throttling: 'BOOLEAN' name: REVISION
Sostituisci
- SERVICE con il nome del servizio Cloud Run
- BOOLEAN con
true
per impostare l'allocazione della CPU solo durante l'elaborazione delle richieste oppurefalse
per impostare la CPU come sempre allocata. - REVISION con un nuovo nome della 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
- Inizia con
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 risorsa google_cloud_run_v2_service
nella configurazione Terraform, in template.containers.resources
.
Visualizzare le impostazioni di allocazione della CPU
Per visualizzare le impostazioni di allocazione della CPU correnti per il servizio Cloud Run:
Console
Nella console Google Cloud, vai a Cloud Run:
Fai clic sul servizio che ti interessa per aprire la pagina Dettagli servizio.
Fai clic sulla scheda Revisioni.
Nel riquadro dei dettagli a destra, l'impostazione di allocazione della CPU è elencata nella scheda Contenitore.
gcloud
Utilizza il seguente comando:
gcloud run services describe SERVICE
Individua l'impostazione di allocazione della CPU nella configurazione restituita.