Auf dieser Seite wird gezeigt, wie Sie mithilfe von Cloud Run Volume-Bereitstellungen einen Cloud Storage-Bucket als Speicher-Volume bereitstellen.
Wenn Sie den Bucket als Volume in Cloud Run bereitstellen, wird der Inhalt des Buckets als Dateien im Dateisystem des Containers angezeigt. Nachdem Sie den Bucket als Volume bereitgestellt haben, greifen Sie so auf den Bucket zu, als wäre er ein Verzeichnis in Ihrem lokalen Dateisystem. Dabei verwenden Sie die Dateisystemvorgänge und Bibliotheken Ihrer Programmiersprache anstelle der Google API-Clientbibliotheken.
Sie können das Volume schreibgeschützt bereitstellen und auch Bereitstellungsoptionen für das Volume angeben.
Speicheranforderungen
Cloud Storage-Volume-Bereitstellungen verwenden den Cloud Run-Containerarbeitsspeicher für die folgenden Aktivitäten:Für das gesamte Cloud Storage FUSE-Caching verwendet Cloud Run standardmäßig die Statistik-Cache-Einstellung mit einer Lebensdauer (Time-to-Live, TTL) von 60 Sekunden. Die Standardmaximalgröße des Statistik-Caches beträgt 32 MB, die Standardmaximalgröße des Typ-Caches 4 MiB.
Beim Lesen aus Cloud Storage führt Cloud Storage FUSE API-Aufrufe aus, um ein Objekt direkt zu lesen, ohne die gesamte Datei in ein lokales Verzeichnis herunterzuladen. Cloud Storage FUSE stellt eine TCP-Verbindung her und liest das gesamte Cloud Storage-Objekt oder nur Teile der Datei, die Sie in Ihrer Anwendung oder im Betriebssystem über einen Offset angeben. Beim Lesen verbraucht Cloud Storage FUSE auch anderen Arbeitsspeicher als Statistik- und Typ-Caches, z. B. ein 1-MiB-Array für jede gelesene Datei und für
goroutines.Beim Schreiben in Cloud Storage unterstützt Cloud Storage FUSE standardmäßig
streaming-writes, einen Schreibpfad. Cloud Storage FUSE lädt Daten direkt in Cloud Storage hoch, ohne die Datei vollständig bereitzustellen. Jede Datei, die Sie für Streaming-Schreibvorgänge öffnen, verbraucht während des Uploadvorgangs etwa 64 MiB Arbeitsspeicher. Dadurch werden sowohl die Latenz als auch die Speicherplatznutzung reduziert, was besonders bei großen, sequenziellen Schreibvorgängen von Vorteil ist.
Beschränkungen
Da Cloud Run für diese Bereitstellung Cloud Storage FUSE verwendet, müssen Sie beim Bereitstellen eines Cloud Storage-Buckets als Volume einige Dinge beachten:
- Cloud Storage FUSE bietet keine Nebenläufigkeitserkennung für mehrere Schreibvorgänge (Dateisperre) in derselben Datei. Wenn mehrere Schreibvorgänge versuchen, eine Datei zu ersetzen, wird der letzte Schreibvorgang ausgeführt und alle vorherigen gehen verloren.
- Cloud Storage FUSE ist kein vollständig POSIX-konformes Dateisystem. Weitere Informationen finden Sie in der Dokumentation zu Cloud Storage FUSE.
Unzulässige Pfade
Mit Cloud Run können Sie kein Volume unter /dev, /proc oder /sys oder in deren Unterverzeichnissen bereitstellen.
Hinweis
Sie benötigen einen Cloud Storage-Bucket, der als Volume bereitgestellt wird.
Informationen zur optimalen Lese-/Schreibleistung für Cloud Storage finden Sie unter Netzwerkbandbreitenleistung von Cloud Storage FUSE optimieren.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Konfigurieren von Cloud Storage-Volume-Bereitstellungen benötigen:
- Cloud Run-Entwickler (
roles/run.developer) für den Cloud Run-Dienst - Dienstkontonutzer (
roles/iam.serviceAccountUser) für die Dienstidentität
Bitten Sie Ihren Administrator, der Dienstidentität die Rolle Storage-Objekt-Betrachter (roles/storage.objectViewer) zuzuweisen, um die Berechtigungen zu erhalten, die Ihre Dienstidentität benötigt, um auf die Datei und den Cloud Storage-Bucket zuzugreifen. Wenn die Dienstidentität auch Schreibvorgänge in einem Bucket ausführen muss, weisen Sie stattdessen die Rolle Storage-Objekt-Nutzer (roles/storage.objectUser) zu.
Weitere Informationen zu Cloud Storage-Rollen und -Berechtigungen finden Sie unter IAM für Cloud Storage.
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-Dienst mitGoogle 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.
Cloud Storage-Volume bereitstellen
Sie können mehrere Buckets in verschiedenen Bereitstellungspfaden bereitstellen. Sie können ein Volume auch für mehrere Container bereitstellen, wobei Sie denselben oder unterschiedliche Bereitstellungspfade für die verschiedenen Containern nutzen können.Wenn Sie mehrere Container verwenden, geben Sie zuerst die Volumes und dann die Volume-Bereitstellungen pro Container an.
Volume-Bereitstellungen erfordern die Ausführungsumgebung der zweiten Generation. Cloud Run wählt automatisch die Ausführungsumgebung der zweiten Generation für Ihren Dienst aus, wenn keine Ausführungsumgebung explizit konfiguriert wurde.
Console
Rufen Sie in der Google Cloud Console Cloud Run auf:
Wählen Sie im Cloud Run-Navigationsmenü die Option Dienste aus:
Wenn Sie einen neuen Dienst konfigurieren, klicken Sie auf Container bereitstellen und füllen Sie die Seite mit den anfänglichen Diensteinstellungen aus. Klicken Sie dann auf Container, Netzwerk, Sicherheit, um die Seite zur Dienstkonfiguration zu maximieren, und klicken Sie auf Volumes.
Wenn Sie einen vorhandenen Dienst konfigurieren, klicken Sie auf den Dienst und dann auf den Tab Container.
Klicken Sie auf Volume bereitstellen.
Wählen Sie Cloud Storage-Bucket als Volume-Typ aus.
Geben Sie im Feld Bereitstellungspfad den Pfad ein, unter dem Sie das Volume bereitstellen möchten.
Wählen Sie den Cloud Storage-Bucket oder ein bestimmtes Verzeichnis aus, das für das Volume verwendet werden soll. Optional können Sie einen neuen Bucket erstellen.
Wenn Sie den Bucket schreibgeschützt machen möchten, klicken Sie das Kästchen Schreibgeschützt an.
Optional können Sie Bereitstellungsoptionen maximieren, um Bereitstellungsoptionen anzugeben.
Klicken Sie auf Speichern.
Klicken Sie auf Erstellen, um einen neuen Dienst zu erstellen. Klicken Sie auf Unterschied ansehen und erneut bereitstellen und dann auf Änderungen bereitstellen, um einen vorhandenen Dienst zu aktualisieren.
gcloud
So fügen Sie ein Volume hinzu und stellen es bereit:
gcloud run deploy SERVICE \ --image IMAGE_URL \ --add-volume mount-path=MOUNT_PATH,type=cloud-storage,bucket=BUCKET_NAME,readonly=READ_ONLY
Ersetzen Sie Folgendes:
- SERVICE: der Name Ihres Dienstes.
IMAGE_URL: ein Verweis auf das Container-Image, z. B.us-docker.pkg.dev/cloudrun/container/hello:latestWenn Sie Artifact Registry verwenden, muss das Repository REPO_NAME bereits erstellt sein. Die URL hat das FormatLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.- MOUNT_PATH: der relative Pfad, unter dem Sie das Volume bereitstellen, z. B.
/mnt/my-volume. - BUCKET_NAME: Der Name Ihres Cloud Storage-Buckets.
- READ_ONLY:
true, um das Volume schreibgeschützt zu machen, oderfalse, um Schreibvorgänge zuzulassen.
Wenn Sie mehrere Container verwenden, geben Sie zuerst die Volumes und dann die Volume-Bereitstellungen pro Container an:
gcloud run services update SERVICE \ --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME \ --container CONTAINER_1 \ --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH \ --container CONTAINER_2 \ --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH2
YAML
Wenn Sie einen neuen Dienst erstellen, überspringen Sie diesen Schritt. Wenn Sie einen vorhandenen Dienst aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:
gcloud run services describe SERVICE --format export > service.yaml
Nehmen Sie die erforderlichen Änderungen vor.
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: run.googleapis.com/execution-environment: gen2 spec: containers: - image: IMAGE_URL volumeMounts: - name: VOLUME_NAME mountPath: MOUNT_PATH volumes: - name: VOLUME_NAME csi: driver: gcsfuse.run.googleapis.com readOnly: IS_READ_ONLY volumeAttributes: bucketName: BUCKET_NAME
Ersetzen Sie Folgendes:
IMAGE_URL: ein Verweis auf das Container-Image, z. B.us-docker.pkg.dev/cloudrun/container/hello:latestWenn Sie Artifact Registry verwenden, muss das Repository REPO_NAME bereits erstellt sein. Die URL hat das FormatLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.- MOUNT_PATH: der relative Pfad, unter dem Sie das Volume bereitstellen, z. B.
/mnt/my-volume. - VOLUME_NAME: ein beliebiger Name für Ihr Volume. Der Wert VOLUME_NAME wird verwendet, um das Volume der Volume-Bereitstellung zuzuordnen.
- IS_READ_ONLY:
True, um das Volume schreibgeschützt zu machen, oderFalse, um Schreibvorgänge zuzulassen. - BUCKET_NAME durch den Namen des Cloud Storage-Buckets.
Erstellen oder aktualisieren Sie den Dienst mit dem folgenden Befehl:
gcloud run services replace service.yaml
Der Befehl
gcloud run services replaceverwendet standardmäßig die Dateiservice.yaml, falls vorhanden.
Terraform
Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.
Fügen Sie einergoogle_cloud_run_v2_service-Ressource in Ihrer Terraform-Konfiguration Folgendes hinzu: resource "google_cloud_run_v2_service" "default" {
name = "SERVICE"
location = "REGION"
template {
containers {
image = "IMAGE_URL"
volume_mounts {
name = "VOLUME_NAME"
mount_path = "MOUNT_PATH"
}
}
volumes {
name = "VOLUME_NAME"
gcs {
bucket = google_storage_bucket.default.name
read_only = IS_READ_ONLY
}
}
}
}
resource "google_storage_bucket" "default" {
name = "BUCKET_NAME"
location = "REGION"
}
Ersetzen Sie Folgendes:
- SERVICE: Der Name Ihres Cloud Run-Dienstes.
- REGION: die Google Cloud -Region.
IMAGE_URL: ein Verweis auf das Container-Image, z. B.us-docker.pkg.dev/cloudrun/container/hello:latestWenn Sie Artifact Registry verwenden, muss das Repository REPO_NAME bereits erstellt sein. Die URL hat das FormatLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.- VOLUME_NAME: ein beliebiger Name für Ihr Volume. Der Wert VOLUME_NAME wird verwendet, um das Volume der Volume-Bereitstellung zuzuordnen.
- MOUNT_PATH: der relative Pfad, unter dem Sie das Volume bereitstellen, z. B.
/mnt/my-volume. - IS_READ_ONLY:
True, um das Volume schreibgeschützt zu machen, oderFalse, um Schreibvorgänge zuzulassen. - BUCKET_NAME durch den Namen des Cloud Storage-Buckets.
Schreiben
Wenn Sie Volume-Bereitstellungen in Ihrer compose.yaml-Datei angeben möchten, fügen Sie Ihrer Dienstdefinition das Attribut volumes hinzu. volumes oder configs auf oberster Ebene werden Cloud Storage-Buckets zugeordnet.
services: web: image: IMAGE volumes: - VOLUME_NAME:MOUNT_PATH volumes: VOLUME_NAME:
Ersetzen Sie Folgendes:
- IMAGE: die URL Ihres Container-Images
- VOLUME_NAME ist der Name des Volumes.
- MOUNT_PATH: der Pfad, unter dem Sie das Volume bereitstellen möchten.
Dienste bereitstellen
Führen Sie den Befehl
gcloud run compose upaus, um die Dienste bereitzustellen:gcloud run compose up compose.yamlAntworten Sie auf alle Aufforderungen, erforderliche Komponenten zu installieren oder APIs zu aktivieren, mit
y.Optional: Veröffentlichen Sie Ihren Dienst, wenn Sie den nicht authentifizierten Zugriff auf den Dienst zulassen möchten.
Nach der Bereitstellung wird die Cloud Run-Dienst-URL angezeigt. Kopieren Sie diese URL und fügen Sie sie in Ihren Browser ein, um den ausgeführten Container aufzurufen. Sie können die Standardauthentifizierung in der Google Cloud Console deaktivieren.
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.
Node.js
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");Volume-Konfiguration mit Bereitstellungsoptionen
Sie können optional Bereitstellungsoptionen verwenden, um verschiedene Attribute Ihrer Volume-Bereitstellung zu konfigurieren. Mit den verfügbaren Bereitstellungsoptionen können Sie Cache-Einstellungen konfigurieren, ein bestimmtes Verzeichnis bereitstellen, Debugging-Logs aktivieren und andere Verhaltensweisen festlegen.
Bereitstellungsoptionen angeben
Sie können Bereitstellungsoptionen über die Google Cloud Console, die Google Cloud CLI, YAML oder Terraform angeben. Die Bereitstellungsoptionen werden in der Google Cloud CLI durch Semikolons (;) und in YAML durch Kommas getrennt, wie auf den folgenden Tabs gezeigt:
Console
So geben Sie Bereitstellungsoptionen für ein vorhandenes Volume an:
Wechseln Sie in der Google Cloud Console zur Seite Cloud Run-Dienste:
Klicken Sie auf den Dienst, um die Seite mit den Dienstdetails zu öffnen.
Klicken Sie auf den Tab Container.
- Klicken Sie neben dem Volume, das Sie bearbeiten möchten, auf das Bearbeitungssymbol.
- Maximieren Sie Bereitstellungsoptionen.
- Konfigurieren Sie die Bereitstellungsoptionen, indem Sie die entsprechenden Felder aktualisieren oder Bereitstellungsoptionen manuell hinzufügen.
- Klicken Sie auf Speichern.
Klicken Sie auf Unterschied ansehen und erneut bereitstellen und dann auf Änderungen bereitstellen.
gcloud
So fügen Sie ein Volume hinzu und stellen es mit Bereitstellungsoptionen bereit:
gcloud run deploy SERVICE \ --image IMAGE_URL \ --add-volume mount-path=MOUNT_PATH,type=cloud-storage,bucket=BUCKET_NAME,readonly=READ_ONLY,mount-options="OPTION_1=VALUE_1;OPTION_N=VALUE_N"
Ersetzen Sie Folgendes:
- SERVICE: der Name Ihres Dienstes.
IMAGE_URL: ein Verweis auf das Container-Image, z. B.us-docker.pkg.dev/cloudrun/container/hello:latestWenn Sie Artifact Registry verwenden, muss das Repository REPO_NAME bereits erstellt sein. Die URL hat das FormatLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.- MOUNT_PATH: der relative Pfad, unter dem Sie das Volume bereitstellen, z. B.
/cache. - BUCKET_NAME: Der Name Ihres Cloud Storage-Buckets.
- READ_ONLY:
true, um das Volume schreibgeschützt zu machen, oderfalse, um Schreibvorgänge zuzulassen. - OPTION_1: die erste Bereitstellungsoption. Sie können beliebig viele Bereitstellungsoptionen angeben. Jedes Paar aus Bereitstellungsoption und Wert muss durch ein Semikolon getrennt werden.
- VALUE_1: die gewünschte Einstellung für die erste Bereitstellungsoption.
- OPTION_N: die nächste Bereitstellungsoption.
- VALUE_N: die Einstellung für die nächste Bereitstellungsoption.
YAML
Wenn Sie einen neuen Dienst erstellen, überspringen Sie diesen Schritt. Wenn Sie einen vorhandenen Dienst aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:
gcloud run services describe SERVICE --format export > service.yaml
Nehmen Sie die erforderlichen Änderungen vor.
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: run.googleapis.com/execution-environment: gen2 spec: containers: - image: IMAGE_URL volumeMounts: - name: VOLUME_NAME mountPath: MOUNT_PATH volumes: - name: VOLUME_NAME csi: driver: gcsfuse.run.googleapis.com readOnly: IS_READ_ONLY volumeAttributes: bucketName: BUCKET_NAME mountOptions: OPTION_1=VALUE_1,OPTION_N=VALUE_N
Ersetzen Sie Folgendes:
IMAGE_URL: ein Verweis auf das Container-Image, z. B.us-docker.pkg.dev/cloudrun/container/hello:latestWenn Sie Artifact Registry verwenden, muss das Repository REPO_NAME bereits erstellt sein. Die URL hat das FormatLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.- MOUNT_PATH: der relative Pfad, unter dem Sie das Volume bereitstellen, z. B.
/cache. - VOLUME_NAME: ein beliebiger Name für Ihr Volume. Der Wert VOLUME_NAME wird verwendet, um das Volume der Volume-Bereitstellung zuzuordnen.
- IS_READ_ONLY:
True, um das Volume schreibgeschützt zu machen, oderFalse, um Schreibvorgänge zuzulassen. - BUCKET_NAME durch den Namen des Cloud Storage-Buckets.
- OPTION_1: die erste Bereitstellungsoption. Sie können beliebig viele Bereitstellungsoptionen angeben. Jedes Paar aus Bereitstellungsoption und Wert muss durch ein Komma getrennt werden.
- VALUE_1: die gewünschte Einstellung für die erste Bereitstellungsoption.
- OPTION_N: die nächste Bereitstellungsoption.
- VALUE_N: die Einstellung für die nächste Bereitstellungsoption.
Erstellen oder aktualisieren Sie den Dienst mit dem folgenden Befehl:
gcloud run services replace service.yaml
Der Befehl
gcloud run services replaceverwendet standardmäßig die Dateiservice.yaml, falls vorhanden.
Terraform
Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.
Fügen Sie einergoogle_cloud_run_v2_service-Ressource in Ihrer Terraform-Konfiguration Folgendes hinzu: resource "google_cloud_run_v2_service" "default" {
name = "SERVICE"
location = "REGION"
template {
containers {
image = "IMAGE_URL"
volume_mounts {
name = "VOLUME_NAME"
mount_path = "MOUNT_PATH"
}
}
volumes {
name = "VOLUME_NAME"
gcs {
bucket = google_storage_bucket.default.name
read_only = IS_READ_ONLY
mount_options = ["OPTION_1=VALUE_1", "OPTION_N=VALUE_N", "OPTION_O"]
}
}
}
}
Ersetzen Sie Folgendes:
- SERVICE: Der Name Ihres Cloud Run-Dienstes.
- 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: ein beliebiger Name für Ihr Volume. Der Wert VOLUME_NAME wird verwendet, um das Volume der Volume-Bereitstellung zuzuordnen.
- MOUNT_PATH: der relative Pfad, unter dem Sie das Volume bereitstellen, z. B.
/mnt/my-volume. - IS_READ_ONLY:
True, um das Volume schreibgeschützt zu machen, oderFalse, um Schreibvorgänge zuzulassen. - BUCKET_NAME durch den Namen des Cloud Storage-Buckets.
- OPTION_1: die erste Bereitstellungsoption. Sie können beliebig viele Bereitstellungsoptionen angeben. Jedes Paar aus Bereitstellungsoption und Wert muss durch ein Komma getrennt werden.
- VALUE_1: die gewünschte Einstellung für die erste Bereitstellungsoption.
- OPTION_N: die zweite Bereitstellungsoption, falls zutreffend.
- VALUE_N: die Einstellung für die zweite Bereitstellungsoption.
- OPTION_O: die dritte Bereitstellungsoption, falls zutreffend. Einige Bereitstellungsoptionen haben keinen Wert.
Häufig verwendete Bereitstellungsoptionen
Bereitstellungsoptionen werden häufig für Folgendes verwendet:
- Cache-Einstellungen konfigurieren
- Nur ein bestimmtes Verzeichnis aus dem Cloud Storage-Bucket bereitstellen
- Konfigurieren Sie die Eigentümerschaft des Volumes (
uid,gid). - Implizite Verzeichnisse deaktivieren
- Geben Sie die Debugging-Logebenen an.
Caching-Einstellungen konfigurieren
Sie können die Caching-Einstellungen für Ihr Volume ändern, indem Sie die Caching-bezogenen Bereitstellungsoptionen festlegen. In der folgenden Tabelle sind die Einstellungen und die Cloud Run-Standardwerte aufgeführt:
| Cache-Einstellung | Beschreibung | Standard |
|---|---|---|
cache-dir |
Der Name des In-Memory-Volumes, das als zugrunde liegendes Verzeichnis zum persistenten Speichern von Dateien aus Ihrem Cloud Storage-Bucket im Format cr-volume:{volume name} verwendet werden soll. Wenn Sie beispielsweise ein In-Memory-Volume mit dem Namen in-memory-1 haben, das Sie als Cache-Verzeichnis verwenden möchten, geben Sie cr-volume:in-memory-1 an. Eine Anleitung zum Einrichten von In-Memory-Volumes finden Sie unter In-Memory-Volume-Bereitstellungen für Dienste konfigurieren. Wenn Sie diese Funktionen aktivieren, ändert Cloud Run die Ressourcenabrechnung des Cloud Storage FUSE-Prozesses und rechnet diese auf die Container-Arbeitsspeicherlimits an. Informationen zum Erhöhen des Container-Speicherlimits finden Sie unter Speicherlimits für Dienste konfigurieren. |
|
file-cache-download-chunk-size-mb |
Gibt die Größe jeder Leseanfrage in MiB an, die jede Goroutine an Cloud Storage senden kann, wenn das Objekt in den Datei-Cache heruntergeladen wird. | 200 |
file-cache-enable-parallel-downloads |
Beschleunigt das Lesen großer Dateien, indem das Datei-Cache-Verzeichnis als Prefetch-Puffer verwendet wird. Dabei werden mehrere Worker eingesetzt, um mehrere Teile einer Datei parallel herunterzuladen. | wahr |
file-cache-max-parallel-downloads |
Die maximale Anzahl an Goroutines, die jederzeit für alle Downloadjobs für Dateien erstellt werden können. | Die doppelte Anzahl der CPU-Kerne auf Ihrer Maschine oder 16, je nachdem, welcher Wert höher ist. |
file-cache-parallel-downloads-per-file |
Die Anzahl der gleichzeitigen Downloadanfragen pro Datei. | 16 |
file-cache-cache-file-for-range-read |
Gibt an, ob das vollständige Objekt asynchron heruntergeladen und im Cloud Storage FUSE-Cache-Verzeichnis gespeichert werden soll, wenn der erste Lesevorgang von einem Offset ungleich null abgeschlossen wird. | falsch |
stat-cache-max-size-mb |
Maximale Größe in Mebibyte (MiB), die der Statistik-Cache verwenden kann. Der Statistik-Cache wird immer vollständig im Arbeitsspeicher gespeichert, was sich auf den Arbeitsspeicherverbrauch auswirkt. Geben Sie den Wert 32 an,wenn Ihre Arbeitslast bis zu 20.000 Dateien umfasst. Wenn Ihre Arbeitslast mehr als 20.000 Dateien verwendet, erhöhen Sie den Wert pro weitere 6.000 Dateien in 10-Schritten. Der Statistik-Cache belegt durchschnittlich 1.500 Byte pro Datei.Wenn der Statistik-Cache so viel Arbeitsspeicher wie nötig verwenden soll, geben Sie den Wert -1 an. Wenn Sie den Statistik-Cache deaktivieren möchten, geben Sie den Wert 0 an. |
32 |
type-cache-max-size-mb |
Die maximale Größe in MiB pro Verzeichnis, die der Typ-Cache verwenden kann. Der Typ-Cache wird immer vollständig im Arbeitsspeicher gespeichert, was sich auf den Arbeitsspeicherverbrauch auswirkt. Geben Sie den Wert 4 an,wenn die maximale Anzahl von Dateien in einem einzelnen Verzeichnis des bereitgestellten Buckets 20.000 Dateien oder weniger beträgt. Wenn ein einzelnes Verzeichnis mehr als 20.000 Dateien enthält, erhöhen Sie den Wert pro 5.000 Dateien um 1, also durchschnittlich ca. 200 Byte pro Datei.Wenn der Typ-Cache so viel Arbeitsspeicher wie nötig verwenden soll, geben Sie den Wert -1 an.Wenn Sie den Typ-Cache deaktivieren möchten, geben Sie den Wert 0 an. |
4 |
Mit dem folgenden Google Cloud CLI-Befehl wird die metadata-cache-ttl-secs auf 120 Sekunden festgelegt und die Kapazität des Statistik- und Typ-Cache auf 52 bzw. 7 MiB erhöht:
gcloud run services update SERVICE \ --add-volume mount-path=MOUNT_PATH,type=cloud-storage,bucket=BUCKET_NAME,mount-options="metadata-cache-ttl-secs=120;stat-cache-max-size-mb=52;type-cache-max-size-mb=7"
Ersetzen Sie Folgendes:
- SERVICE: der Name Ihres Dienstes.
- BUCKET_NAME: Der Name Ihres Cloud Storage-Buckets.
- MOUNT_PATH: der relative Pfad, unter dem Sie das Volume bereitstellen, z. B.
/cache.
Debugging-Log aktivieren
Standardmäßig protokolliert Cloud Storage FUSE Ereignisse mit dem Schweregrad Info oder höher. Sie können die Logging-Einstellungen mit einem der folgenden Log-Schweregrade ändern, die in der Reihenfolge vom niedrigsten zum höchsten aufgeführt sind:
tracedebuginfowarningerror- Wenn Sie das gesamte Logging deaktivieren möchten, geben Sie den Wert
offan.
Wenn Sie einen Schweregrad angeben, generiert Cloud Storage FUSE Logs für Ereignisse, die einen Schweregrad haben, der dem angegebenen Schweregrad entspricht oder höher ist. Wenn Sie beispielsweise die Stufe warning angeben, generiert Cloud Storage FUSE Logs für Warnungen und Fehler.
Wenn Sie den Schweregrad des Logs auf einen höheren Wert als info festlegen, kann dies die Leistung beeinträchtigen und eine große Menge an Logging-Daten generieren. Wir empfehlen daher, dies nur bei Bedarf zu tun. Aus Gründen der Kompatibilität mit Cloud Logging wird das text-Format verwendet. Das json-Format wird nicht unterstützt.
Mit der folgenden Befehlszeile wird das Debugging-Logging aktiviert:
gcloud run services update SERVICE \ --add-volume mount-path=MOUNT_PATH,type=cloud-storage,bucket=BUCKET_NAME,mount-options="log-severity=debug"
Ersetzen Sie Folgendes:
- SERVICE: der Name Ihres Dienstes.
- BUCKET_NAME: Der Name Ihres Cloud Storage-Buckets.
- MOUNT_PATH: der relative Pfad, unter dem Sie das Volume bereitstellen, z. B.
/cache.
Implizite Verzeichnisse deaktivieren
Damit Cloud Storage eher wie ein Standarddateisystem aussieht, aktiviert Cloud Run beim Bereitstellen eines Cloud Storage-Bucket standardmäßig implizite Verzeichnisse. Sie können implizite Verzeichnisse mit der Bereitstellungsoption implicit-dirs deaktivieren. Das Deaktivieren impliziter Verzeichnisse kann die Leistung verbessern und die Kosten minimieren, führt aber zu Kompatibilitätseinbußen.
Mit der Funktion für implizite Verzeichnisse kann Cloud Run vorhandene Cloud Storage-Dateien erkennen, deren Dateinamen eine Verzeichnisstruktur nachahmen, z. B. /mydir/myfile.txt. Wenn Sie implizite Verzeichnisse deaktivieren, kann Cloud Run solche Dateien nicht auflisten oder lesen.
Wenn Sie implizite Verzeichnisse deaktivieren, wird die Anzahl der Anfragen an Cloud Storage reduziert. Dadurch können sich die Leistung und die Kosten Ihrer Anwendung verbessern. Weitere Informationen finden Sie in der Cloud Storage FUSE-Dokumentation zu Dateien und Verzeichnissen.
Mit der folgenden Befehlszeile werden implizite Verzeichnisse deaktiviert:
gcloud run services update SERVICE \ --add-volume mount-path=MOUNT_PATH,type=cloud-storage,bucket=BUCKET_NAME,mount-options="implicit-dirs=false"
Ersetzen Sie Folgendes:
- SERVICE: der Name Ihres Dienstes.
- BUCKET_NAME: Der Name Ihres Cloud Storage-Buckets.
- MOUNT_PATH: der relative Pfad, unter dem Sie das Volume bereitstellen, z. B.
/cache.
Bestimmtes Verzeichnis in Ihrem Cloud Storage-Bucket bereitstellen
Standardmäßig stellt Cloud Run den gesamten Cloud Storage-Bucket bereit, sodass Cloud Run-Dienste Zugriff auf alle Inhalte haben. In einigen Fällen möchten Sie möglicherweise nur ein bestimmtes Verzeichnis bereitstellen. Wenn der Bucket beispielsweise eine große Anzahl von Dateien enthält, kann das Bereitstellen eines bestimmten Verzeichnisses die Leistung verbessern.
Sie können dies auch zu Isolationszwecken implementieren, wenn verschiedene Dienste Zugriff auf unterschiedliche Verzeichnisse im Storage-Bucket benötigen.
In der folgenden Befehlszeile wird das bereitzustellende Verzeichnis angegeben:
gcloud run services update SERVICE \ --add-volume mount-path=MOUNT_PATH,type=cloud-storage,bucket=BUCKET_NAME,mount-options="only-dir=images"
Ersetzen Sie Folgendes:
- SERVICE: der Name Ihres Dienstes.
- BUCKET_NAME: Der Name Ihres Cloud Storage-Buckets.
- MOUNT_PATH: der relative Pfad, unter dem Sie das Volume bereitstellen, z. B.
/cache.
Lautstärke UID und GID einstellen
Verwenden Sie die Bereitstellungsoptionen uid und gid, um die Nutzer-ID und die Gruppen-ID für das Volume zu ändern. Das ist nützlich, wenn Sie die Inhaberschaft der Datei einem bestimmten Nutzer oder einer bestimmten Gruppe zuweisen möchten, die der Identität eines oder mehrerer ausgeführter Container entspricht. Standardmäßig gehören Volumes dem Root.
In der folgenden Befehlszeile werden uid und gid festgelegt:
gcloud run services update SERVICE \ --add-volume mount-path=MOUNT_PATH,type=cloud-storage,bucket=BUCKET_NAME,mount-options="uid=UID;gid=GID"
Ersetzen Sie Folgendes:
- SERVICE: der Name Ihres Dienstes.
- MOUNT_PATH: der relative Pfad, unter dem Sie das Volume bereitstellen, z. B.
/cache. - BUCKET_NAME: Der Name Ihres Cloud Storage-Buckets.
- UID: Nutzer-ID, mit der das Volume bereitgestellt werden soll.
- GID: Gruppen-ID, mit der das Volume bereitgestellt werden soll.
Andere Bereitstellungsoptionen festlegen
Im Folgenden finden Sie eine vollständige Liste aller von Cloud Run unterstützten Bereitstellungsoptionen.
Verzeichnis
implicit-dirsonly-dirrename-dir-limit
Debuggen
debug_fuse_errorsdebug_fusedebug_gcsdebug-invariantsdebug_mutex
Cache
stat-cache-capacitystat-cache-ttltype-cache-ttlenable-nonexistent-type-cache
Berechtigungen
uidgidfile-modedir-mode
Sonstiges
billing-projectclient-protocolexperimental-enable-json-readexperimental-opentelemetry-collector-addresshttp-client-timeoutlimit-bytes-per-seclimit-ops-per-secmax-conns-per-hostmax-idle-conns-per-hostmax-retry-sleep-oretry-multipliersequential-read-size-mbstackdriver-export-interval
Ausführliche Beschreibungen dieser Optionen finden Sie unter Cloud Storage FUSE-Befehlszeilenoptionen für die Bereitstellung. Auf der Seite zu Cloud Storage FUSE sind alle verfügbaren FUSE-Optionen aufgeführt. Einige davon werden von Cloud Run nicht unterstützt.
Einstellungen für Volume-Bereitstellungen ansehen
Console
Wechseln Sie in der Google Cloud Console zur Seite Cloud Run-Dienste:
Klicken Sie in der Liste der Dienste auf den gewünschten Dienst, um die Seite mit den Dienstdetails zu öffnen.
Klicken Sie auf den Tab Container, um die Volume-Details aufzurufen.
gcloud
Führen Sie den folgenden Befehl aus, um die Einstellungen für die Volume-Bereitstellung aufzurufen:
gcloud run services describe SERVICE_NAME
Suchen Sie in der zurückgegebenen Ausgabe nach der Einstellung für die Volume-Bereitstellungen.
Netzwerkbandbreitenleistung von Cloud Storage FUSE optimieren
Für eine bessere Lese- und Schreibleistung verbinden Sie Ihren Cloud Run-Dienst mithilfe von Direct VPC mit einem VPC-Netzwerk und leiten Sie den gesamten ausgehenden Traffic durch Ihr VPC-Netzwerk. Sie haben dazu folgende Möglichkeiten:
- Aktivieren Sie den privaten Google-Zugriff und achten Sie darauf, den Parameter
vpc-egressaufall-trafficfestzulegen. - Verwenden Sie eine der Optionen, die auf der Seite mit Best Practices für Netzwerke im Abschnitt Interner Traffic zu einer Google API beschrieben sind.
Containerstartzeit und Cloud Storage FUSE-Bereitstellungen
Wenn Sie Cloud Storage FUSE verwenden, kann sich der Startzeitpunkt Ihres Cloud Run-Containers leicht verlängern, da Cloud Run die Volume-Bereitstellung vor dem Start der Container startet. Der Container wird nur gestartet, wenn Cloud Storage FUSE erfolgreich bereitgestellt wurde.
Cloud Storage FUSE stellt ein Volume erst dann bereit, wenn eine Verbindung zu Cloud Storage hergestellt wurde. Netzwerkverzögerungen können sich auf die Containerstartzeit auswirken. Wenn der Verbindungsversuch fehlschlägt, kann Cloud Storage FUSE nicht bereitgestellt und der Cloud Run-Dienst nicht gestartet werden. Wenn die Bereitstellung mit Cloud Storage FUSE länger als 30 Sekunden dauert, startet der Cloud Run-Dienst nicht, da für Cloud Run insgesamt 30 Sekunden Zeit für die Durchführung aller Bereitstellungen zur Verfügung stehen.
Leistungsmerkmale von Cloud Storage FUSE
Wenn Sie zwei Volumes definieren, die jeweils auf einen anderen Bucket verweisen, werden zwei Cloud Storage FUSE-Prozesse gestartet. Die Bereitstellungen und Prozesse erfolgen parallel.
Vorgänge mit Cloud Storage FUSE sind von der Netzwerkbandbreite betroffen, da Cloud Storage FUSE über die Cloud Storage API mit Cloud Storage kommuniziert. Einige Vorgänge wie das Auflisten der Inhalte eines Buckets können langsam sein, wenn die Netzwerkbandbreite niedrig ist. Ähnlich kann das Lesen einer großen Datei einige Zeit in Anspruch nehmen, da dies auch von der Netzwerkbandbreite abhängt.
Wenn Sie in einen Bucket schreiben, stellt Cloud Storage FUSE das Objekt vollständig im Arbeitsspeicher bereit. Das Schreiben großer Dateien ist also durch die Menge an Arbeitsspeicher begrenzt, die der Containerinstanz zur Verfügung steht. Das maximale Containerarbeitsspeicherlimit beträgt 32 GiB.
Die Schreibvorgänge werden nur dann in den Bucket übertragen, wenn Sie einen close oder fsync ausführen. Das vollständige Objekt wird dann in den Bucket hochgeladen. Die einzige Ausnahme, bei der ein Objekt vollständig noch einmal in den Bucket hochgeladen wird, ist der Fall einer Datei mit angehängtem Inhalt, die mindestens 2 MiB groß ist.
Weitere Informationen finden Sie in den folgenden Ressourcen:
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 Dienst mit einem einzelnen Container zu löschen:
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
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.
Wenn Sie einzelne Volumes oder Volume-Bereitstellungen entfernen möchten, verwenden Sie die Flags remove-volume und 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