Cloud Run fornisce un volume di 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 allocherà quindi questa quantità di spazio su disco alla tua risorsa.
I dischi vengono sottoposti automaticamente al provisioning, preformattati in ext4 e criptati con chiavi specifiche dell'istanza all'avvio. Il disco temporaneo crea il volume in modo che qualsiasi utente possa leggerlo o scriverlo. 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
- Migrazione del traffico a una nuova revisione
I dischi sono dedicati a un'istanza specifica e non sono condivisi tra 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 in un'istanza, indicando l'inizio di un periodo di 10 secondi prima dell'arresto effettivo, dopodiché Cloud Run invia un segnale SIGKILL. Puoi utilizzare questa finestra di 10 secondi per eseguire operazioni di pulizia, ad esempio un ultimo round di copia dei contenuti del disco nello spazio di archiviazione permanente.
Casi d'uso
Puoi utilizzare il disco temporaneo per:
- Carichi di lavoro di elaborazione dei dati: quando elabori file di dati di grandi dimensioni in Cloud Run, in genere memorizzi l'intero file in memoria o orchestri la suddivisione in parti più piccole. Con lo spazio di archiviazione temporaneo, non dovrai pagare grandi quantità di memoria per creare una copia locale temporanea dei tuoi dati. Potrai anche elaborare set di dati più grandi.
- Memorizzazione nella cache: nei casi d'uso di pubblicazione web, la memorizzazione dei dati nella cache su disco anziché il recupero dallo spazio di archiviazione remoto può ottimizzare la latenza dell'applicazione.
Limiti di spazio di archiviazione e istanza
I limiti sono i seguenti:
- Limite di spazio di archiviazione dell'istanza: per impostazione predefinita, ogni istanza è limitata a 10 GB di spazio totale. Se necessario, richiedi un aumento della quota.
- Limite di volume dell'istanza: ogni istanza è limitata a un massimo di 10 volumi.
- Limite del progetto: per impostazione predefinita, ogni progetto è limitato a 100 GB per regione. Se necessario, richiedi un aumento della quota.
Richiedi un aumento della quota
Ai progetti che utilizzano un disco temporaneo di Cloud Run in una regione per la prima volta vengono concessi automaticamente 10 GB per istanza, limite per regione e 100 GB per progetto, limite per regione.
Se hai bisogno di capacità aggiuntiva, devi richiedere un aumento della quota per il pool di worker di Cloud Run. Utilizza i link forniti nei seguenti pulsanti per richiedere la quota di cui hai bisogno.
| Quota attuale | Link alla quota |
|---|---|
| 10 GB per istanza | Richiedi una quota maggiore per istanza |
| 100 GB per progetto | Richiedi una quota maggiore per progetto |
Per ulteriori informazioni sulla richiesta di aumenti di quota, consulta la pagina Come aumentare la quota.
Limitazioni
Il disco temporaneo è disponibile solo nell'ambiente di esecuzione di seconda generazione. Per impostazione predefinita, i pool di worker di Cloud Run utilizzano l'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 regioni di livello 1. Se utilizzi le GPU, il disco temporaneo è disponibile in tutte le regioni che supportano le GPU.
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:
- Sviluppatore Cloud Run (
roles/run.developer) sul pool di worker di Cloud Run - Utente 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 pool di worker di Cloud Run interagisce con Google Cloud API, 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 Google Cloud console, Google Cloud CLI, YAML o Terraform:
Console
Nella Google Cloud console, vai a Cloud Run:
Seleziona Pool di worker dal menu e fai clic su Esegui il deployment del container per configurare un nuovo pool di worker. Se stai configurando un pool di worker esistente, fai clic sul pool di worker, quindi su Modifica ed esegui il deployment di una nuova revisione.
Se stai configurando un nuovo pool di worker, compila la pagina iniziale del pool di worker, quindi fai clic su Container, Networking, sicurezza per espandere la pagina di configurazione dei pool di worker.
Fai clic sulla scheda Container.
- In Risorse:
- Fai clic su Monta volume.
- Seleziona Disco temporaneo.
- Inserisci il percorso di montaggio.
- Specifica le dimensioni del disco temporaneo dal menu.
- In Risorse:
Fai clic su Crea o Esegui il deployment.
gcloud
Per aggiungere un volume e montarlo:
gcloud beta run worker-pools update WORKERPOOL \
--add-volume=name=VOLUME_NAME,type=ephemeral-disk,size=SIZE \
--add-volume-mount=volume=VOLUME_NAME,mount-path=MOUNT_PATH
Sostituisci quanto segue:
- WORKERPOOL: il nome del tuo pool di worker.
- VOLUME_NAME: il nome che vuoi assegnare al volume.
- SIZE: le dimensioni del disco, ad esempio
100Gi. La dimensione deve essere almeno10Giper 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 pool di worker, salta questo passaggio. Se stai aggiornando un pool di worker esistente, scarica la relativa configurazione YAML:
gcloud run worker-pools describe WORKER_POOL --format export > worker-pool.yaml
Configura il file YAML:
apiVersion: run.googleapis.com/v1 kind: WorkerPool metadata: name: WORKER_POOL labels: cloud.googleapis.com/location: REGION annotations: run.googleapis.com/launch-stage: BETA 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:
- WORKER_POOL: il nome del tuo pool di worker.
- REGION: la Google Cloud regione.
- CONTAINER_NAME: il nome che vuoi assegnare al container.
- IMAGE_URL: un riferimento all'immagine container che
contiene il pool di worker, ad esempio
us-docker.pkg.dev/cloudrun/container/worker-pool:latest. - 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: le dimensioni del disco, ad esempio
100Gi. La dimensione deve essere almeno10Giper i volumiephemeral-disk.
Crea o aggiorna il pool di worker utilizzando il seguente comando:
gcloud run worker-pools replace worker-pool.yaml
Per impostazione predefinita, il comando
gcloud run worker-pools replaceutilizza il fileworker-pool.yaml, se presente.
Terraform
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.
resource "google_cloud_run_v2_worker_pool" "default" {
name = "WORKER_POOL"
location = "REGION"
deletion_protection = "true"
launch_stage = "BETA"
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:
- WORKER_POOL: il nome del tuo pool di worker.
- REGION: la Google Cloud regione.
- IMAGE_URL: un riferimento all'immagine container che
contiene il pool di worker, ad esempio
us-docker.pkg.dev/cloudrun/container/worker-pool:latest. - 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: le dimensioni del disco, ad esempio
100Gi. La dimensione deve essere almeno10Giper i volumiephemeral-disk.
Lettura e scrittura in un volume
Se utilizzi la funzionalità di montaggio dei volumi di Cloud Run, puoi accedere a un volume montato utilizzando le stesse librerie del linguaggio di programmazione che utilizzi per leggere e scrivere file nel file system locale.
Questa funzionalità è particolarmente utile se utilizzi un container esistente che prevede che i dati vengano archiviati nel file system locale e utilizza le normali operazioni del file system per accedervi.
I seguenti snippet 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 aggiungere contenuti 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 montaggi dei volumi
Puoi cancellare tutti i volumi e i montaggi oppure rimuovere singoli volumi e montaggi dei volumi.
Cancella tutti i volumi e i montaggi dei volumi
Per cancellare tutti i volumi e i montaggi dei volumi dal pool di worker a container singolo, esegui questo comando:
gcloud run worker-pools update WORKER_POOL \ --clear-volumes --clear-volume-mounts
Se hai più container, segui le convenzioni CLI dei sidecar per cancellare volumi e montaggi dei volumi:
gcloud run worker-pools update WORKER_POOL \ --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 rimuovere anche tutti i montaggi dei volumi che lo utilizzano.
Per rimuovere singoli volumi o montaggi dei volumi, utilizza i remove-volume e remove-volume-mount flag:
gcloud run worker-pools update WORKER_POOL \ --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 nello spazio di archiviazione permanente, ad esempio in un bucket Cloud Storage, ti consigliamo di eseguire la copia in modo incrementale, anziché affidarti al periodo di tolleranza di 10 secondi da SIGTERM a SIGKILL.
Per ulteriori informazioni sugli arresti delle istanze, consulta Contratto di runtime del 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 la risorsa Cloud Run non deve accedere a internet. Se hai bisogno dell'accesso a internet, configura Cloud NAT o consulta Traffico interno verso un'API Google.
Per configurare il traffico in uscita VPC diretto con un job, completa i seguenti passaggi:
Nella Google Cloud console, vai alla pagina Cloud Run:
Seleziona Pool di worker dal menu e fai clic su Esegui il deployment del container per configurare un nuovo pool di worker. Se stai configurando un pool di worker esistente, fai clic sul pool di worker, quindi su Modifica ed esegui il deployment di una nuova revisione.
Se stai configurando un nuovo pool di worker, compila la pagina iniziale del pool di worker, quindi fai clic su Container, Networking, sicurezza per espandere la pagina di configurazione dei pool di worker.
Fai clic sulla scheda Rete.
Seleziona Connettiti a un VPC.
Per Routing del traffico, seleziona Instrada al VPC tutto il traffico per inviare tutto il traffico in uscita tramite la rete VPC.
Fai clic su Crea o Esegui il deployment.
Ora puoi inviare richieste dal pool di worker di Cloud Run a qualsiasi risorsa sulla rete VPC, come consentito dalle regole firewall.
Abilita l'accesso privato Google sulla subnet a cui ti sei connesso.