Cloud Run bietet ein flüchtiges Laufwerk-Volume, das nur für die Dauer Ihrer Instanz verfügbar ist. Mit dieser Funktion können Sie die benötigte Laufwerkskapazität und den Bereitstellungspfad angeben. Cloud Run weist Ihrer Ressource dann die entsprechende Laufwerkskapazität zu.
Laufwerke werden beim Start automatisch bereitgestellt, auf ext4 vorformatiert und mit instanzspezifischen Schlüsseln verschlüsselt. Das flüchtige Laufwerk erstellt Ihr Volume so, dass jeder Nutzer darauf lesen und schreiben kann. Da der Speicher flüchtig ist, werden alle Daten dauerhaft gelöscht, wenn die Instanz heruntergefahren wird. Dazu gehören Herunterfahren aufgrund von:
- Instanzabstürzen
- Traffic-Migration zu einer neuen Überarbeitung
Laufwerke sind einer bestimmten Instanz zugeordnet und werden nicht für andere Instanzen oder Überarbeitungen freigegeben. Sie haben die Kontrolle über die Dateisystemstruktur mit einem konfigurierbaren Bereitstellungspunkt für jedes Volume.
Bevor Sie eine Instanz herunterfahren, sendet Cloud Run ein SIGTERM-Signal an alle Container in einer Instanz, das den Beginn eines Zeitraums von 10 Sekunden vor dem tatsächlichen Herunterfahren angibt. An diesem Punkt sendet Cloud Run ein SIGKILL-Signal. Sie können diesen Zeitraum von 10 Sekunden nutzen, um Bereinigungen durchzuführen, z. B. eine letzte Runde zum Kopieren von Laufwerksinhalten in den nichtflüchtigen Speicher.
Anwendungsfälle
Sie können das flüchtige Laufwerk für Folgendes verwenden:
- Arbeitslasten zur Datenverarbeitung: Wenn Sie große Datendateien in Cloud Run verarbeiten, speichern Sie in der Regel die gesamte Datei im Arbeitsspeicher oder teilen sie in kleinere Teile auf. Mit dem flüchtigen Speicher müssen Sie nicht für große Mengen an Arbeitsspeicher bezahlen, um eine temporäre lokale Kopie Ihrer Daten zu erstellen. Außerdem können Sie größere Datensätze verarbeiten.
- Caching: In Anwendungsfällen für die Webbereitstellung kann das Caching von Daten auf dem Laufwerk anstatt des Abrufs aus dem Remote-Speicher die Latenz Ihrer Anwendung optimieren.
Speicher- und Instanzlimits
Die folgenden Begrenzungen gelten:
- Speicherlimit für Instanzen: Jede Instanz ist standardmäßig auf 10 GB Gesamtspeicherplatz beschränkt. Fordern Sie bei Bedarf eine Kontingenterhöhung an.
- Volumelimit für Instanzen: Jede Instanz ist auf maximal 10 Volumes beschränkt.
- Projektlimit: Jedes Projekt ist standardmäßig auf 100 GB pro Region beschränkt. Fordern Sie bei Bedarf eine Kontingenterhöhung an.
Kontingenterhöhung anfordern
Projekten, die zum ersten Mal ein flüchtiges Laufwerk von Cloud Run in einer Region verwenden, werden automatisch 10 GB pro Instanz und Region sowie 100 GB pro Projekt und Region gewährt.
Wenn Sie zusätzliche Kapazität benötigen, müssen Sie eine Kontingenterhöhung für Ihren Cloud Run-Worker-Pool anfordern. Verwenden Sie die Links in den folgenden Schaltflächen, um das benötigte Kontingent anzufordern.
| Aktuelles Kontingent | Link zum Kontingent |
|---|---|
| 10 GB pro Instanz | Höheres Kontingent pro Instanz anfordern |
| 100 GB pro Projekt | Höheres Kontingent pro Projekt anfordern |
Weitere Informationen zum Anfordern von Kontingenterhöhungen finden Sie unter Kontingent erhöhen.
Beschränkungen
Das flüchtige Laufwerk ist nur in der Ausführungsumgebung der zweiten Generation verfügbar. Standardmäßig verwenden Cloud Run-Worker-Pools die Ausführungsumgebung der zweiten Generation.Unzulässige Pfade
Mit Cloud Run können Sie kein Volume unter /dev, /proc und /sys oder in deren Unterverzeichnissen bereitstellen.
Unterstützte Regionen
Das flüchtige Laufwerk ist in allen Regionen der Stufe 1 verfügbar. Wenn Sie GPUs verwenden, ist das flüchtige Laufwerk in allen Regionen verfügbar, die GPUs unterstützen.
Hinweis
-
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.
- Installieren und initialisieren Sie die gcloud CLI.
-
Aktualisieren Sie die Komponenten:
gcloud components update
- Informationen zu CPU-, Speicher- und Netzwerk-Egress-Kosten finden Sie auf der Seite Preise für Cloud Run pricing. Die Gesamtgröße des bereitgestellten Laufwerks und die Lebensdauer der Instanz, die es verwendet, tragen zu Ihren Kosten bei.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zur Konfiguration eines flüchtigen Laufwerks benötigen:
- Cloud Run-Entwickler (
roles/run.developer) für den Cloud Run-Worker-Pool - Dienstkontonutzer (
roles/iam.serviceAccountUser) für die Dienstidentität
Eine Liste der IAM-Rollen und -Berechtigungen im Zusammenhang mit Cloud Run finden Sie unter IAM-Rollen für Cloud Run und IAM-Berechtigungen für Cloud Run. Wenn Ihr Cloud Run-Worker-Pool mit Google Cloud APIs wie Cloud-Clientbibliotheken verknüpft ist, lesen Sie die Konfigurationsanleitung für Dienstidentitäten. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Bereitstellungsberechtigungen und Zugriff verwalten.
Flüchtiges Laufwerk erstellen und bereitstellen
Sie können ein flüchtiges Laufwerk mit der Google Cloud Console, der Google Cloud CLI, YAML oder Terraform erstellen und bereitstellen:
Console
Rufen Sie in der Google Cloud Console Cloud Run auf:
Wählen Sie im Menü Worker-Pools aus und klicken Sie auf Container bereitstellen, um einen neuen Worker-Pool zu konfigurieren. Wenn Sie einen vorhandenen Worker-Pool konfigurieren möchten, klicken Sie auf den Worker-Pool und dann auf Neue Überarbeitung bearbeiten und bereitstellen.
Wenn Sie einen neuen Worker-Pool konfigurieren, füllen Sie die Seite mit den anfänglichen Einstellungen für den Worker-Pool aus und klicken Sie dann auf Container, Netzwerk, Sicherheit, um die Seite zur Konfiguration des Worker-Pools zu maximieren.
Klicken Sie auf den Tab Container.
- Unter Infomaterialien:
- Klicken Sie auf Volume bereitstellen.
- Wählen Sie Flüchtiges Laufwerk aus.
- Geben Sie den Bereitstellungspfad ein.
- Geben Sie im Menü die Größe des flüchtigen Laufwerks an.
- Unter Infomaterialien:
Klicken Sie auf Erstellen oder Bereitstellen.
gcloud
So fügen Sie ein Volume hinzu und stellen es bereit:
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
Ersetzen Sie Folgendes:
- WORKERPOOL: der Name Ihres Worker-Pools.
- VOLUME_NAME: der Name, den Sie dem Volume geben möchten.
- SIZE: die Laufwerksgröße, z. B.
100Gi. Die Größe muss fürephemeral-disk-Volumes mindestens10Gibetragen. - MOUNT_PATH: der relative Pfad, unter dem Sie das Volume bereitstellen, z. B.
/mnt/my-volume.
YAML
Wenn Sie einen neuen Worker-Pool erstellen, überspringen Sie diesen Schritt. Wenn Sie einen vorhandenen Worker-Pool aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:
gcloud run worker-pools describe WORKER_POOL --format export > worker-pool.yaml
Konfigurieren Sie die YAML-Datei:
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: SIZEErsetzen Sie Folgendes:
- WORKER_POOL: der Name Ihres Worker-Pools.
- REGION: die Google Cloud Region.
- CONTAINER_NAME: der Name, den Sie dem Container geben möchten.
- IMAGE_URL: ein Verweis auf das Container-Image, das
den Worker-Pool enthält, z. B.
us-docker.pkg.dev/cloudrun/container/worker-pool:latest. - VOLUME_NAME: der Name, den Sie dem Volume geben möchten.
- MOUNT_PATH: der relative Pfad, unter dem Sie das Volume bereitstellen, z. B.
/mnt/my-volume. - SIZE: die Laufwerksgröße, z. B.
100Gi. Die Größe muss fürephemeral-disk-Volumes mindestens10Gibetragen.
Erstellen oder aktualisieren Sie den Worker-Pool mit dem folgenden Befehl:
gcloud run worker-pools replace worker-pool.yaml
Der Befehl
gcloud run worker-pools replaceverwendet standardmäßig die Dateiworker-pool.yaml, falls vorhanden.
Terraform
Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.
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,
]
}
}
Ersetzen Sie Folgendes:
- WORKER_POOL: der Name Ihres Worker-Pools.
- REGION: die Google Cloud Region.
- IMAGE_URL: ein Verweis auf das Container-Image, das
den Worker-Pool enthält, z. B.
us-docker.pkg.dev/cloudrun/container/worker-pool:latest. - VOLUME_NAME: der Name, den Sie dem Volume geben möchten.
- MOUNT_PATH: der relative Pfad, unter dem Sie das Volume bereitstellen, z. B.
/mnt/my-volume. - SIZE: die Laufwerksgröße, z. B.
100Gi. Die Größe muss fürephemeral-disk-Volumes mindestens10Gibetragen.
Lesen und Schreiben auf ein Volume
Wenn Sie das Cloud Run-Feature zur Volume-Bereitstellung verwenden, greifen Sie mit denselben Bibliotheken in Ihrer Programmiersprache auf ein bereitgestelltes Volume zu, mit denen Sie Dateien auf Ihrem lokalen Dateisystem lesen und schreiben.
Dies ist besonders nützlich, wenn Sie einen vorhandenen Container verwenden, der erwartet, dass Daten im lokalen Dateisystem gespeichert werden und ein reguläres Dateisystem für den Zugriff darauf verwendet.
In den folgenden Snippets wird davon ausgegangen, dass ein Volume bereitgestellt wird, bei dem mountPath auf /mnt/my-volume festgelegt ist.
Nodejs
Verwenden Sie das Dateisystemmodul, um eine neue Datei zu erstellen oder Anhänge einer vorhandenen Datei im Volume /mnt/my-volume hinzuzufügen:
var fs = require('fs');
fs.appendFileSync('/mnt/my-volume/sample-logfile.txt', 'Hello logs!', { flag: 'a+' });Python
So schreiben Sie in eine Datei, die im Volume /mnt/my-volume gespeichert ist:
f = open("/mnt/my-volume/sample-logfile.txt", "a")Go
Verwenden Sie das Paket os, um eine neue Datei im Volume /mnt/my-volume zu erstellen:
f, err := os.Create("/mnt/my-volume/sample-logfile.txt")Java
Verwenden Sie die Klasse Java.io.File, um eine Logdatei im Volume /mnt/my-volume zu erstellen:
import java.io.File;
File f = new File("/mnt/my-volume/sample-logfile.txt");Volumes und Volume-Bereitstellungen löschen und entfernen
Sie können alle Volumes und Bereitstellungen löschen oder einzelne Volumes und Volume-Bereitstellungen entfernen.
Alle Volumes und Volume-Bereitstellungen löschen
Führen Sie den folgenden Befehl aus, um alle Volumes und Volume-Bereitstellungen aus Ihrem Worker-Pool mit einem einzelnen Container zu löschen:
gcloud run worker-pools update WORKER_POOL \ --clear-volumes --clear-volume-mounts
Wenn Sie mehrere Container haben, folgen Sie den CLI-Konventionen für Sidecars, um Volumes und Volume-Bereitstellungen zu löschen:
gcloud run worker-pools update WORKER_POOL \ --container=container1 \ --clear-volumes -–clear-volume-mounts \ --container=container2 \ --clear-volumes \ -–clear-volume-mounts
Einzelne Volumes und Volume-Bereitstellungen entfernen
Wenn Sie ein Volume entfernen möchten, müssen Sie auch alle Volume-Bereitstellungen entfernen, die dieses Volume verwenden.
Verwenden Sie die Flags remove-volume und remove-volume-mount, um einzelne Volumes oder Volume-Bereitstellungen zu entfernen:
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 Practices
Beachten Sie die folgenden Best Practices, um flüchtige Daten effektiv zu verwalten und die Speicherleistung zu optimieren.
In den nichtflüchtigen Speicher kopieren
Wenn Sie die Inhalte des flüchtigen Laufwerks in den nichtflüchtigen Speicher kopieren möchten, z. B. in einen Cloud Storage-Bucket, empfehlen wir, die Daten inkrementell zu kopieren, anstatt sich auf den Zeitraum von 10 Sekunden zwischen SIGTERM und SIGKILL zu verlassen.
Weitere Informationen zum Herunterfahren von Instanzen finden Sie im Container-Laufzeitvertrag.
Cloud Run kann ohne zusätzliche Netzwerkeinrichtung in Cloud Storage lesen und schreiben. Für eine optimale Leistung empfehlen wir, den Traffic zu und von Cloud Storage über ein VPC-Netzwerk mit Direct VPC weiterzuleiten.
Diese Methode funktioniert, wenn die Cloud Run-Ressource keinen Zugriff auf das Internet benötigt. Wenn Sie Internetzugriff benötigen, richten Sie Cloud NAT ein oder lesen Sie Interner Traffic zu einer Google API.
Führen Sie die folgenden Schritte aus, um ausgehenden Direct VPC-Traffic mit einem Job zu konfigurieren:
Rufen Sie in der Google Cloud Console die Seite Cloud Run auf:
Wählen Sie im Menü Worker-Pools aus und klicken Sie auf Container bereitstellen, um einen neuen Worker-Pool zu konfigurieren. Wenn Sie einen vorhandenen Worker-Pool konfigurieren möchten, klicken Sie auf den Worker-Pool und dann auf Neue Überarbeitung bearbeiten und bereitstellen.
Wenn Sie einen neuen Worker-Pool konfigurieren, füllen Sie die Seite mit den anfänglichen Einstellungen für den Worker-Pool aus und klicken Sie dann auf Container, Netzwerk, Sicherheit, um die Seite zur Konfiguration des Worker-Pools zu maximieren.
Klicken Sie auf den Tab Netzwerk.
Wählen Sie Mit einer VPC verbinden aus.
Wählen Sie unter Traffic-Routing die Option Gesamten Traffic an die VPC weiterleiten aus, um den gesamten ausgehenden Traffic über das VPC-Netzwerk zu senden.
Klicken Sie auf Erstellen oder Bereitstellen.
Sie können nun Anfragen von Ihrem Cloud Run-Worker-Pool an eine beliebige Ressource im VPC-Netzwerk senden, je nach Ihren Firewallregeln.
Aktivieren Sie den privaten Google-Zugriff für das Subnetz, mit dem Sie eine Verbindung hergestellt haben.