Cloud Run fornisce un volume del disco temporaneo che persiste solo per la durata dell'istanza. Questa funzionalità ti consente di specificare la quantità di spazio su disco di cui hai bisogno e la posizione in cui montarlo. Cloud Run assegnerà quindi quella quantità di disco alla tua risorsa.
I dischi vengono sottoposti automaticamente a provisioning, preformattati in ext4 e criptati con chiavi specifiche per l'istanza all'avvio. Il disco temporaneo crea il volume in modo che qualsiasi utente possa leggerlo o scriverci. Poiché lo spazio di archiviazione è temporaneo, tutti i dati vengono eliminati definitivamente
quando l'istanza viene arrestata. Sono inclusi gli arresti causati da:
- Arresti anomali dell'istanza
- Scalabilità del servizio
- Migrazione del traffico a una nuova revisione
I dischi sono dedicati a un'istanza specifica e non sono condivisi con altre istanze o revisioni. Hai il controllo sulla struttura del file system con un punto di montaggio configurabile per ogni volume.
Prima di arrestare un'istanza, Cloud Run invia un segnale SIGTERM a tutti i container di un'istanza, indicando l'inizio di un periodo di 10 secondi prima dell'arresto effettivo, momento in cui Cloud Run invia un segnale SIGKILL. Puoi utilizzare questa finestra di 10 secondi per eseguire operazioni di pulizia, ad esempio una copia finale dei contenuti del disco nell'archiviazione permanente.
Casi d'uso
Puoi utilizzare il disco temporaneo per:
- Workload di trattamento dati: quando elabori file di dati di grandi dimensioni in Cloud Run, in genere memorizzi l'intero file in memoria o ne organizzi la suddivisione in parti più piccole. Con l'archiviazione temporanea, non dovrai pagare per grandi quantità di memoria per creare una copia locale temporanea dei tuoi dati. Inoltre, potrai elaborare set di dati più grandi.
- Memorizzazione nella cache: nei casi d'uso di pubblicazione web, la memorizzazione dei dati nella cache sul disco anziché il recupero dallo spazio di archiviazione remoto può ottimizzare la latenza dell'applicazione.
Limiti di spazio di archiviazione e istanze
I limiti sono i seguenti:
- Limite di dimensioni del volume: ogni volume deve essere compreso tra
1Gie100Gi. - Limite di spazio di archiviazione dell'istanza: per impostazione predefinita, ogni istanza è limitata a 10 GiB di spazio totale. Per configurare più di 10 GiB per istanza, è necessario richiedere un aumento della quota.
- Limite di volumi per istanza: ogni istanza è limitata a un massimo di 10 volumi di dischi temporanei.
- Limite per progetto: per impostazione predefinita, ogni progetto inizia con un limite di allocazione regionale totale di 0 GiB. Ai progetti vengono concessi automaticamente 100 GiB per regione la prima volta che viene eseguito il deployment di una risorsa con un disco temporaneo in quella regione. In fase di runtime, questa quota regionale è condivisa tra tutte le istanze in esecuzione attiva nella regione. Quando esegui il deployment di una risorsa, la dimensione combinata del disco temporaneo per istanza moltiplicata per il numero massimo di istanze non può superare il limite di allocazione regionale. Ad esempio, con un limite regionale di 100 GiB, una risorsa con un disco da 10 GiB può essere configurata con un massimo di 10 istanze. Se necessario, richiedi un aumento della quota.
Richiedi un aumento della quota
Se hai bisogno di capacità aggiuntiva, devi richiedere un aumento della quota per il tuo servizio Cloud Run. Utilizza i link forniti nei seguenti pulsanti per richiedere la quota di cui hai bisogno.
| Quota attuale | Link alla quota |
|---|---|
| 10 GiB per istanza | Richiedi una quota maggiore per istanza |
| 100 GiB per progetto | Richiedi una quota maggiore per progetto |
Per saperne di più su come richiedere un aumento della quota, consulta Come aumentare la quota.
Limitazioni
Il disco temporaneo è disponibile solo nell'ambiente di esecuzione di seconda generazione.Percorsi non consentiti
Cloud Run non consente di montare un volume in /dev, /proc o /sys o nelle relative sottodirectory.
Aree geografiche supportate
Il disco temporaneo è disponibile in tutte le località di Cloud Run.
Prima di iniziare
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- Installa e inizializza gcloud CLI.
-
Aggiorna i componenti:
gcloud components update
- Consulta la pagina dei prezzi di Cloud Run per CPU, memoria e traffico in uscita dalla rete. Le dimensioni totali del disco di cui è stato eseguito il provisioning e la durata dell'istanza che lo utilizza contribuiscono al costo.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per configurare un disco temporaneo, chiedi all'amministratore di concederti i seguenti ruoli IAM:
- Cloud Run Developer (
roles/run.developer) sul servizio Cloud Run - Utente dell'account di servizio (
roles/iam.serviceAccountUser) sull'identità di servizio
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.
Crea e monta un disco temporaneo
Puoi creare e montare un disco temporaneo utilizzando la console Google Cloud , Google Cloud CLI, YAML o Terraform:
Console
Nella console Google Cloud , vai a Cloud Run:
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, quindi sulla scheda Container.
Se stai configurando un nuovo servizio, compila la pagina delle impostazioni iniziali del servizio, quindi fai clic su Container, networking, sicurezza.
Seleziona Disco temporaneo.
Seleziona la dimensione dal menu e inserisci il percorso di montaggio nel campo Percorso di montaggio.
Fai clic su Crea per un nuovo servizio. Fai clic su Visualizza differenze e rifai il deployment, quindi su Esegui il deployment delle modifiche per un servizio esistente.
gcloud
Per aggiungere un volume e montarlo:
gcloud run services update SERVICE \
--execution-environment=gen2 \
--add-volume=name=VOLUME_NAME,type=ephemeral-disk,size=SIZE \
--add-volume-mount=volume=VOLUME_NAME,mount-path=MOUNT_PATH
Sostituisci quanto segue:
- SERVICE: il nome del servizio.
- VOLUME_NAME: il nome che vuoi assegnare al volume.
- SIZE: la dimensione del disco, ad esempio
10Gi. La dimensione deve essere compresa tra1Gie100Giper i volumiephemeral-disk. - MOUNT_PATH: il percorso relativo in cui stai montando il volume, ad esempio
/mnt/my-volume.
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
Configura il file YAML:
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE labels: cloud.googleapis.com/location: REGION spec: template: spec: containers: - name: CONTAINER_NAME image: IMAGE_URL volumeMounts: - name: VOLUME_NAME mountPath: MOUNT_PATH volumes: - name: VOLUME_NAME emptyDir: medium: Disk sizeLimit: SIZESostituisci quanto segue:
- SERVICE: il nome del servizio.
- REGION: la regione Google Cloud .
- CONTAINER_NAME: il nome che vuoi assegnare al container.
IMAGE_URL: un riferimento all'immagine container, ad esempious-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già stato creato. L'URL segue il formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.- VOLUME_NAME: il nome che vuoi assegnare al volume.
- MOUNT_PATH: il percorso relativo in cui stai montando il volume, ad esempio
/mnt/my-volume. - SIZE: la dimensione del disco, ad esempio
10Gi. La dimensione deve essere compresa tra1Gie100Giper i volumiephemeral-disk.
Crea o aggiorna il servizio utilizzando il seguente comando:
gcloud run services replace service.yaml
Il comando
gcloud run services replaceutilizza per impostazione predefinita il fileservice.yaml, se presente.
Terraform
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.
Aggiungi quanto segue a una risorsagoogle_cloud_run_v2_service nella configurazione Terraform: resource "google_cloud_run_v2_service" "default" {
name = "SERVICE"
location = "REGION"
deletion_protection = "true"
ingress = "INGRESS_TRAFFIC_ALL"
template {
containers {
image = "IMAGE_URL"
volume_mounts {
name = "VOLUME_NAME"
mount_path = "MOUNT_PATH"
}
}
volumes {
name = "VOLUME_NAME"
empty_dir {
medium = "DISK"
size_limit = "SIZE"
}
}
}
lifecycle {
ignore_changes = [
launch_stage,
]
}
}
Sostituisci quanto segue:
- SERVICE: il nome del servizio.
- REGION: la regione Google Cloud .
IMAGE_URL: un riferimento all'immagine container, ad esempious-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già stato creato. L'URL segue il formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.- VOLUME_NAME: il nome che vuoi assegnare al volume.
- MOUNT_PATH: il percorso relativo in cui stai montando il volume, ad esempio
/mnt/my-volume. - SIZE: la dimensione del disco, ad esempio
10Gi. La dimensione deve essere compresa tra1Gie100Giper i volumiephemeral-disk.
Lettura e scrittura su un volume
Se utilizzi la funzionalità di montaggio del volume di Cloud Run, accedi a un volume montato utilizzando le stesse librerie nel tuo linguaggio di programmazione che utilizzi per leggere e scrivere file nel file system locale.
Questo è particolarmente utile se utilizzi un container esistente che prevede che i dati vengano archiviati nel file system locale e utilizza operazioni di file system regolari per accedervi.
Gli snippet seguenti presuppongono un montaggio del volume con un mountPath impostato su /mnt/my-volume.
Nodejs
Utilizza il modulo File System per creare un nuovo file o aggiungerlo a un file esistente nel volume /mnt/my-volume:
var fs = require('fs');
fs.appendFileSync('/mnt/my-volume/sample-logfile.txt', 'Hello logs!', { flag: 'a+' });Python
Scrivi in un file conservato nel volume, /mnt/my-volume:
f = open("/mnt/my-volume/sample-logfile.txt", "a")Vai
Utilizza il pacchetto os per creare un nuovo file conservato nel volume /mnt/my-volume:
f, err := os.Create("/mnt/my-volume/sample-logfile.txt")Java
Utilizza la classe Java.io.File per creare un file di log nel volume /mnt/my-volume:
import java.io.File;
File f = new File("/mnt/my-volume/sample-logfile.txt");Cancella e rimuovi volumi e punti di montaggio dei volumi
Puoi cancellare tutti i volumi e i punti di montaggio oppure rimuovere singoli volumi e punti di montaggio.
Cancella tutti i volumi e i punti di montaggio dei volumi
Per cancellare tutti i volumi e i montaggi dei volumi dal servizio single-container, esegui questo comando:
gcloud run services update SERVICE \ --clear-volumes \ --clear-volume-mounts
gcloud run services update SERVICE \ --container=container1 \ --clear-volumes \ --clear-volume-mounts \ --container=container2 \ --clear-volumes \ --clear-volume-mounts
Rimuovi singoli volumi e montaggi dei volumi
Per rimuovere un volume, devi anche rimuovere tutti i montaggi dei volumi che lo utilizzano.
Per rimuovere singoli volumi o montaggi di volumi, utilizza i flag remove-volume e remove-volume-mount:
gcloud run services update SERVICE \ --remove-volume VOLUME_NAME \ --container=container1 \ --remove-volume-mount MOUNT_PATH \ --container=container2 \ --remove-volume-mount MOUNT_PATH
Best practice
Segui queste best practice per gestire in modo efficace i dati temporanei e ottimizzare le prestazioni dello spazio di archiviazione.
Copia nello spazio di archiviazione permanente
Se intendi copiare i contenuti del disco temporaneo in uno spazio di archiviazione permanente, ad esempio un bucket Cloud Storage, ti consigliamo di eseguire la copia in modo incrementale, anziché fare affidamento sul periodo di tolleranza di 10 secondi da SIGTERM a SIGKILL.
Per saperne di più sugli arresti delle istanze, consulta Contratto runtime container.
Cloud Run può leggere e scrivere da Cloud Storage senza alcuna configurazione di rete aggiuntiva. Per ottenere prestazioni ottimali, ti consigliamo di instradare il traffico da e verso Cloud Storage tramite una rete VPC utilizzando il VPC diretto.
Questo metodo funziona se non hai bisogno che la risorsa Cloud Run acceda a internet. Se hai bisogno di accedere a internet, configura Cloud NAT o consulta Traffico interno verso un'API di Google.
Per configurare il traffico VPC diretto con un servizio, completa i seguenti passaggi:
Nella console Google Cloud , vai alla pagina Cloud Run:
Fai clic su Crea servizio se stai configurando un nuovo servizio di cui eseguire il deployment. Se stai configurando ed eseguendo il deployment di un servizio esistente, fai clic sul servizio.
Se stai configurando un nuovo servizio, compila la pagina delle impostazioni iniziali del servizio in base alle tue esigenze, quindi fai clic su Container, networking, sicurezza per espandere la pagina di configurazione del servizio.
Fai clic sulla scheda Networking.
Fai clic su Connettiti a un VPC per il traffico in uscita.
Fai clic su Invia il traffico direttamente a un VPC.
Nel campo Rete, seleziona la rete VPC a cui vuoi inviare il traffico.
Nel campo Subnet, seleziona la subnet da cui il servizio riceve gli indirizzi IP. Puoi eseguire il deployment di più servizi nella stessa subnet.
In Routing del traffico, seleziona Instrada al VPC tutto il traffico per inviare tutto il traffico in uscita attraverso la rete VPC.
Fai clic su Crea per un nuovo servizio. Fai clic su Visualizza differenze e rifai il deployment, quindi su Esegui il deployment delle modifiche per un servizio esistente.
Per verificare che il servizio si trovi sulla tua rete VPC, fai clic sul servizio, quindi sulla scheda Networking. La rete e la subnet sono elencate nella scheda VPC.
Ora puoi inviare richieste dal tuo servizio Cloud Run a qualsiasi risorsa della rete VPC, come consentito dalle regole del firewall.
Abilita l'accesso privato Google nella subnet a cui hai eseguito la connessione.
Risoluzione dei problemi
Se riscontri problemi, controlla quanto segue:- Se il container sta esaurendo la memoria e hai utilizzato la console Google Cloud per
eseguire il deployment di una nuova revisione di un servizio con disco temporaneo collegato, la console Google Cloud
ha probabilmente convertito il volume del disco in un volume in memoria. In questo modo, le scritture su disco vengono scritte in memoria, il che comporta l'esaurimento della memoria del container.
Per risolvere il problema, esegui nuovamente il deployment del servizio utilizzando gcloud CLI e assicurati che il file YAML specifichi
medium: Diskinvolumes. - Se riscontri velocità di rete ridotte durante il download di una grande quantità di dati sul disco temporaneo, segui i passaggi per attivare Direct VPC. Se il VPC diretto non è abilitato, le velocità di trasferimento di rete saranno più lente.