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 disco di cui hai bisogno e la posizione per il montaggio. Cloud Run allocherà quella quantità di spazio su disco alla tua risorsa.
I dischi vengono sottoposti al provisioning automatico, 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
scriverci. Poiché lo spazio di archiviazione è temporaneo, tutti i dati vengono eliminati definitivamente
quando l'istanza viene arrestata. Sono inclusi gli arresti anomali causati da:
- Arresti anomali dell'istanza
- Completamento attività del job (con esito positivo o negativo)
I dischi sono dedicati a un'istanza specifica e non vengono condivisi con altre istanze. 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, dopodiché Cloud Run invia
un segnale SIGKILL. Puoi utilizzare questa finestra di 10 secondi per eseguire operazioni di pulizia,
come un ultimo round di copia dell'archiviazione permanente dei contenuti del disco.
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 ne orchestri la suddivisione in parti più piccole. Con l'archiviazione temporanea, 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 del servizio web, la memorizzazione nella cache dei dati su 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 istanza: per impostazione predefinita, ogni istanza è limitata a 10 GiB di spazio totale. La configurazione di più di 10 GiB per istanza richiede la richiesta di un aumento della quota.
- Limite di volumi per istanza: ogni istanza è limitata a un massimo di 10 volumi di dischi temporanei.
- Limite del progetto: ogni progetto inizia con un limite di allocazione regionale totale di 0 GiB per impostazione predefinita. 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 job 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 | Richiedere una quota maggiore per istanza |
| 100 GiB per progetto | Richiedere una quota maggiore per progetto |
Per ulteriori informazioni sulla richiesta di aumenti di quota, vedi Come aumentare la quota.
Limitazioni
Si applicano le seguenti limitazioni:- Il disco temporaneo è disponibile solo nell'ambiente di esecuzione di seconda generazione. Per impostazione predefinita, i job Cloud Run utilizzano l'ambiente di esecuzione di seconda generazione.
- La migrazione live non è supportata. Ciò significa che i job Cloud Run saranno meno affidabili, soprattutto quelli di lunga durata.
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 posizioni di Cloud Run.
Prima di iniziare
- Accedi al tuo account Google Cloud . Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei carichi di lavoro.
-
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.
-
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 Prezzi di Cloud Run per CPU, memoria e traffico di rete in uscita. 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 job Cloud Run - Service Account User (
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 job 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 alla pagina Cloud Run:
Seleziona Job dal menu di navigazione di Cloud Run:
Se stai creando un nuovo job, fai clic su Deploy container per compilare la pagina delle impostazioni iniziali del job.
Se stai configurando un job esistente, selezionalo, quindi fai clic su Visualizza e modifica la configurazione del job.
Fai clic su Container, connessioni, sicurezza per espandere la pagina delle proprietà del job.
Fai clic sulla scheda Contenitori.
In Risorse, seleziona Disco temporaneo.
Specifica le dimensioni del disco temporaneo dal menu.
Inserisci il percorso di montaggio.
Fai clic su Crea o Aggiorna.
gcloud
Per aggiungere un volume e montarlo:
gcloud beta run jobs update JOB \
--add-volume=name=VOLUME_NAME,type=ephemeral-disk,size=SIZE \
--add-volume-mount=volume=VOLUME_NAME,mount-path=MOUNT_PATH
Sostituisci quanto segue:
- JOB: il nome del tuo job.
- VOLUME_NAME: il nome che vuoi assegnare al volume.
- SIZE: le dimensioni 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 job, salta questo passaggio. Se stai aggiornando un job esistente, scarica la relativa configurazione YAML:
gcloud run jobs describe JOB --format export > job.yaml
Configura il file YAML:
apiVersion: run.googleapis.com/v1 kind: Job metadata: name: JOB labels: cloud.googleapis.com/location: REGION annotations: run.googleapis.com/launch-stage: BETA spec: template: spec: template: spec: volumes: - name: VOLUME_NAME emptyDir: medium: Disk sizeLimit: SIZE containers: - image: IMAGE_URL volumeMounts: - name: VOLUME_NAME mountPath: MOUNT_PATHSostituisci quanto segue:
- JOB: il nome del tuo job.
- REGION: la Google Cloud regione.
IMAGE_URL: un riferimento all'immagine container, ad esempious-docker.pkg.dev/cloudrun/container/job:latest.- VOLUME_NAME: il nome che vuoi assegnare al volume.
- SIZE: le dimensioni 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.
Crea o aggiorna il job utilizzando il seguente comando:
gcloud run jobs replace job.yaml
Il comando
gcloud run jobs replaceutilizza per impostazione predefinita il filejob.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_job nella configurazione Terraform: resource "google_cloud_run_v2_job" "default" {
name = "JOB"
location = "REGION"
deletion_protection = "true"
launch_stage = "BETA"
template {
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:
- JOB: il nome del tuo job.
- REGION: la Google Cloud regione.
IMAGE_URL: un riferimento all'immagine container, ad esempious-docker.pkg.dev/cloudrun/container/job: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
10Gi. La dimensione deve essere compresa tra1Gie100Giper i volumiephemeral-disk.
Lettura e scrittura in 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.
Ciò è particolarmente utile se utilizzi un container esistente che prevede che i dati vengano archiviati nel file system locale e utilizza operazioni regolari del file system per accedervi.
I seguenti snippet presuppongono un montaggio del volume con 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 relativi punti di montaggio
Per cancellare tutti i volumi e i relativi montaggi dal job a singolo container, esegui questo comando:
gcloud run jobs update JOB \ --clear-volumes \ --clear-volume-mounts
gcloud run jobs update JOB \ --clear-volumes \ --clear-volume-mounts \ --container=container1 \ --clear-volumes \ --clear-volume-mounts \ --container=container2 \ --clear-volumes \ --clear-volume-mounts
Rimuovere 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 di volumi, utilizza i flag remove-volume e remove-volume-mount:
gcloud run jobs update JOB \ --remove-volume VOLUME_NAME --container=container1 \ --remove-volume-mount MOUNT_PATH \ --container=container2 \ --remove-volume-mount MOUNT_PATH
Best practice
Segui le best practice riportate di seguito per gestire in modo efficace i dati temporanei e ottimizzare le prestazioni di archiviazione.
Copia nello spazio di archiviazione persistente
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 ulteriori informazioni sugli arresti forzati, 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 oppure consulta Traffico interno a un'API di Google.
Per configurare l'uscita VPC diretta con un job, completa i seguenti passaggi:
Nella console Google Cloud , vai alla pagina Cloud Run:
Se stai configurando un nuovo job, fai clic sulla scheda Job e seleziona Esegui il deployment del contenitore. Compila la pagina delle impostazioni del job iniziale in base alle esigenze. Se stai configurando un job esistente, fai clic sul job, quindi su Visualizza e modifica la configurazione del job.
Fai clic su Container, connessioni, sicurezza per espandere la pagina delle proprietà del job.
Fai clic sulla scheda Connessioni.
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 job riceve gli indirizzi IP. Puoi eseguire più job sulla stessa subnet.
Per il 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 o Aggiorna.
Per verificare che il job si trovi nella tua rete VPC, fai clic sul job e poi sulla scheda Configurazione. La rete e la subnet sono elencate nella scheda VPC.
Abilita l'accesso privato Google sulla subnet a cui ti sei connesso.