Flüchtiges Laufwerk für Cloud Run-Worker-Pools konfigurieren

Cloud Run bietet ein flüchtiges Laufwerk-Volume, das nur für die Dauer Ihrer Instanz beibehalten wird. Mit dieser Funktion können Sie die benötigte Festplattengröße und den Speicherort für die Bereitstellung angeben. Cloud Run weist Ihrer Ressource dann diese Menge an Speicherplatz zu.

Laufwerke werden automatisch bereitgestellt, auf ext4 vorformatiert und beim Start mit instanzspezifischen Schlüsseln verschlüsselt. Mit einem flüchtigen Laufwerk wird Ihr Volume so erstellt, dass jeder Nutzer darauf lesen oder schreiben kann. Da der Speicher sitzungsspezifisch ist, werden alle Daten dauerhaft gelöscht, wenn die Instanz heruntergefahren wird. Dazu gehören Herunterfahrvorgänge, die durch Folgendes verursacht werden:

  • Instanzabstürze
  • Traffic-Migration zu einer neuen Version

Laufwerke sind einer bestimmten Instanz zugeordnet und werden nicht für andere Instanzen oder Versionen 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. In diesem 10-Sekunden-Fenster können Sie Bereinigungsvorgänge ausführen, z. B. eine letzte Kopie des Laufwerksinhalts in den nichtflüchtigen Speicher.

Anwendungsfälle

Sie können ein flüchtiges Laufwerk für Folgendes verwenden:

  • Arbeitslasten für die Datenverarbeitung: Wenn Sie große Datendateien in Cloud Run verarbeiten, speichern Sie die gesamte Datei normalerweise im Arbeitsspeicher oder orchestrieren die Aufteilung in kleinere Teile. Mit flüchtigem Speicher müssen Sie nicht für große Speichermengen bezahlen, um eine temporäre lokale Kopie Ihrer Daten zu erstellen. Außerdem können Sie größere Datasets verarbeiten.
  • Caching: In Anwendungsfällen für die Webbereitstellung kann das Zwischenspeichern von Daten auf dem Laufwerk anstelle des Abrufens aus dem Remotespeicher die Latenz Ihrer Anwendung optimieren.

Speicher- und Instanzlimits

Die folgenden Begrenzungen gelten:

  • Größenbeschränkung für Volumes: Jedes Volume muss zwischen 1Gi und 100Gi groß sein.
  • Instanzspeicherlimit: Jede Instanz ist standardmäßig auf insgesamt 10 GiB Speicherplatz beschränkt. Wenn Sie mehr als 10 GiB pro Instanz konfigurieren möchten, müssen Sie eine Kontingenterhöhung anfordern.
  • Volume-Limit pro Instanz: Jede Instanz ist auf maximal 10 flüchtige Laufwerk-Volumes beschränkt.
  • Projektlimit: Jedes Projekt beginnt standardmäßig mit einem regionalen Gesamtzuteilungslimit von 0 GiB. Projekten werden automatisch 100 GiB pro Region gewährt, wenn zum ersten Mal eine Ressource mit einem flüchtigen Laufwerk in dieser Region bereitgestellt wird. Zur Laufzeit wird dieses regionale Kontingent auf alle aktiv ausgeführten Instanzen in der Region aufgeteilt. Beim Bereitstellen einer Ressource darf die kombinierte Größe des flüchtigen Laufwerks pro Instanz multipliziert mit der maximalen Anzahl von Instanzen das regionale Zuweisungslimit nicht überschreiten. Bei einem regionalen Limit von 100 GiB kann eine Ressource mit einem 10-GiB-Laufwerk beispielsweise mit bis zu 10 Instanzen konfiguriert werden. Fordern Sie bei Bedarf eine Kontingenterhöhung an.

Kontingenterhöhung anfordern

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 Kontingentlink
10 GiB pro Instanz Höheres Kontingent pro Instanz anfordern
100 GiB 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 oder /sys oder in deren Unterverzeichnissen bereitstellen.

Unterstützte Regionen

Flüchtige Laufwerke sind an allen Cloud Run-Standorten verfügbar.

Hinweis

  1. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that billing is enabled for your Google Cloud project.

  3. Installieren und initialisieren Sie die gcloud CLI.
  4. Aktualisieren Sie die Komponenten:
    gcloud components update
  5. Informationen zu CPU, Arbeitsspeicher und ausgehendem Netzwerktraffic finden Sie auf der Seite mit den Preisen für Cloud Run. 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 zum Konfigurieren eines flüchtigen Laufwerks benötigen:

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 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.

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

  1. Rufen Sie in der Google Cloud Console die Seite „Cloud Run“ auf:

    Zu Cloud Run

  2. Wählen Sie im Cloud Run-Navigationsmenü die Option Worker-Pools aus:

    1. Wenn Sie einen vorhandenen Worker-Pool konfigurieren, klicken Sie auf den Worker-Pool und dann auf Neue Überarbeitung bearbeiten und bereitstellen.

    2. Wenn Sie einen neuen Worker-Pool konfigurieren, klicken Sie auf Container bereitstellen und füllen Sie dann die erste Seite des Worker-Pools aus. Klicken Sie dann auf Container, Netzwerk, Sicherheit, um die Konfigurationsseite für Worker-Pools zu maximieren.

  3. Klicken Sie auf den Tab Container.

  4. Klicken Sie das Kästchen Flüchtiges Laufwerk an.

  5. Geben Sie im Menü die Größe des flüchtigen Laufwerks an.

  6. Geben Sie den Bereitstellungspfad ein.

  7. Klicken Sie auf Erstellen oder Aktualisieren.

gcloud

So fügen Sie ein Volume hinzu und stellen es bereit:

gcloud 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 des Worker-Pools.
  • VOLUME_NAME: der Name, den Sie dem Volume geben möchten.
  • SIZE: die Laufwerksgröße, z. B. 10Gi. Die Größe muss für ephemeral-disk-Volumes zwischen 1Gi und 100Gi liegen.
  • MOUNT_PATH: der relative Pfad, unter dem Sie das Volume bereitstellen, z. B. /mnt/my-volume.

YAML

  1. 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
  2. Konfigurieren Sie die YAML-Datei:

    apiVersion: run.googleapis.com/v1
    kind: WorkerPool
    metadata:
      name: WORKER_POOL
      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: SIZE
    

    Ersetzen Sie Folgendes:

    • WORKER_POOL: der Name des Worker-Pools.
    • REGION: die Region Google Cloud .
    • CONTAINER_NAME: der Name, den Sie Ihrem 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. 10Gi. Die Größe muss für ephemeral-disk-Volumes zwischen 1Gi und 100Gi liegen.
  3. 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 replace verwendet standardmäßig die Datei worker-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"
    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 des Worker-Pools.
  • REGION: die Region Google Cloud .
  • 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. 10Gi. Die Größe muss für ephemeral-disk-Volumes zwischen 1Gi und 100Gi liegen.

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");

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 Sidecar-CLI-Konventionen, 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.

Wenn Sie einzelne Volumes oder Volume-Bereitstellungen entfernen möchten, verwenden Sie die Flags remove-volume und remove-volume-mount:

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 sitzungsspezifische Daten effektiv zu verwalten und die Speicherleistung zu optimieren.

In nichtflüchtigen Speicher kopieren

Wenn Sie den Inhalt des flüchtigen Laufwerks in einen nichtflüchtigen Speicher wie einen Cloud Storage-Bucket kopieren möchten, empfehlen wir, den Inhalt schrittweise zu kopieren, anstatt sich auf den Kulanzzeitraum von 10 Sekunden zwischen SIGTERM und SIGKILL zu verlassen. Weitere Informationen zum Herunterfahren von Instanzen finden Sie im Containerlaufzeitvertrag.

Cloud Run kann ohne zusätzliche Netzwerkeinrichtung aus Cloud Storage lesen und in Cloud Storage schreiben. Für eine optimale Leistung empfehlen wir, den Traffic zu und von Cloud Storage über ein VPC-Netzwerk mit Direct VPC zu leiten.

Diese Methode funktioniert, wenn die Cloud Run-Ressource nicht auf das Internet zugreifen muss. Wenn Sie Internetzugriff benötigen, richten Sie entweder Cloud NAT ein oder lesen Sie den Abschnitt Interner Traffic zu einer Google API.

So konfigurieren Sie ausgehenden Direct VPC-Traffic mit einem Worker-Pool:

  1. Rufen Sie in der Google Cloud Console die Seite „Cloud Run“ auf:

    Zu Cloud Run

  2. 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.

  3. Wenn Sie einen neuen Worker-Pool konfigurieren, füllen Sie die Seite mit den anfänglichen Worker-Pool-Einstellungen aus und klicken Sie dann auf Container, Netzwerk, Sicherheit, um die Seite zur Worker-Pool-Konfiguration zu maximieren.

  4. Klicken Sie auf den Tab Netzwerk.

  5. Wählen Sie Mit einer VPC verbinden aus.

  6. 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.

  7. 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.

  8. Aktivieren Sie den privaten Google-Zugriff für das Subnetz, mit dem Sie verbunden sind.

Fehlerbehebung

Wenn Sie beim Herunterladen einer großen Datenmenge auf Ihr flüchtiges Laufwerk langsame Netzwerkgeschwindigkeiten feststellen, folgen Sie der Anleitung zum Aktivieren von Direct VPC. Wenn Direct VPC nicht aktiviert ist, sind die Netzwerkübertragungsgeschwindigkeiten langsamer.