Ein flüchtiges Laufwerk für Cloud Run-Jobs konfigurieren

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 Festplattenkapazität und den Speicherort für die Bereitstellung angeben. Cloud Run weist Ihrer Ressource dann diese Menge an Speicherplatz zu.

Laufwerke werden automatisch bereitgestellt, vorformatiert auf ext4 und beim Start mit instanzspezifischen Schlüsseln verschlüsselt. Ein flüchtiges Laufwerk erstellt Ihr Volume so, dass jeder Nutzer darauf zugreifen kann. Da der Speicher kurzlebig ist, werden alle Daten beim Herunterfahren der Instanz dauerhaft gelöscht. Dazu gehören Schließungen aufgrund von:

  • Instanzabstürze
  • Abschluss von Jobaufgaben (erfolgreich oder Fehler)

Festplatten sind einer bestimmten Instanz zugeordnet und werden nicht für andere Instanzen freigegeben. Sie haben die Kontrolle über die Dateisystemstruktur mit einem konfigurierbaren Bereitstellungspunkt für jedes Volume.

Bevor eine Instanz heruntergefahren wird, 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 dieses 10‑Sekunden-Zeitfenster für Bereinigungsvorgänge nutzen, z. B. um die Inhalte des Laufwerks ein letztes Mal in den persistenten Speicher zu kopieren.

Anwendungsfälle

Sie können flüchtige Laufwerke für Folgendes verwenden:

  • Arbeitslasten für die Datenverarbeitung: Wenn Sie große Datendateien in Cloud Run verarbeiten, speichern Sie die gesamte Datei in der Regel im Arbeitsspeicher oder teilen sie in kleinere Teile auf. Mit temporärem 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 Datasets verarbeiten.
  • Caching: In Anwendungsfällen für die Webbereitstellung kann das Cachen von Daten auf der Festplatte anstatt des Abrufens aus dem Remote-Speicher die Latenz Ihrer Anwendung optimieren.

Speicher- und Instanzlimits

Die folgenden Begrenzungen gelten:

Kontingenterhöhung anfordern

Projekten, die zum ersten Mal ein temporäres Cloud Run-Laufwerk in einer Region verwenden, werden automatisch 10 GB pro Instanz und Region sowie 100 GB pro Projekt und Region zugewiesen.

Wenn Sie zusätzliche Kapazität benötigen, müssen Sie eine Kontingenterhöhung für Ihren Cloud Run-Job anfordern. Über die Links in den folgenden Schaltflächen können Sie das benötigte Kontingent anfordern.

Aktuelles Kontingent Kontingentlink
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

Es gelten folgende Einschränkungen:

  • Das flüchtige Laufwerk ist nur in der Ausführungsumgebung der zweiten Generation verfügbar. Standardmäßig verwenden Cloud Run-Jobs die Ausführungsumgebung der zweiten Generation.
  • Die Live-Migration wird nicht unterstützt. Das bedeutet, dass Cloud Run-Jobs weniger zuverlässig sind, insbesondere Jobs mit langer Ausführungszeit.

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

  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 Preisseite für Cloud Run. Die gesamte Größ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 temporären 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-Job 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 über die Google Cloud Console, die Google Cloud CLI, YAML oder Terraform erstellen und bereitstellen:

Console

  1. Wechseln Sie in der Google Cloud -Console zur Seite Cloud Run-Jobs:

    Zu Cloud Run-Jobs

  2. Klicken Sie auf Container bereitstellen, um die Seite mit den anfänglichen Jobeinstellungen auszufüllen. Wenn Sie einen vorhandenen Job konfigurieren, wählen Sie den Job aus und klicken Sie dann auf Jobkonfiguration ansehen und bearbeiten.

  3. Klicken Sie auf Container, Verbindungen, Sicherheit, um die Seite mit den Jobattributen zu maximieren.

  4. Klicken Sie auf den Tab Container.

  5. Wählen Sie unter Ressourcen die Option Sitzungsspezifisches Laufwerk aus.

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

  7. Geben Sie den Bereitstellungspfad ein.

  8. Klicken Sie auf Erstellen oder Aktualisieren.

gcloud

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

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

Ersetzen Sie Folgendes:

  • JOB: der Name des Jobs.
  • VOLUME_NAME: der Name, den Sie dem Volume geben möchten.
  • SIZE: die Laufwerksgröße, z. B. 100Gi. Die Größe muss zwischen 1Gi und 100Gi für ephemeral-disk-Volumes liegen.
  • MOUNT_PATH: Der relative Pfad, unter dem Sie das Volume bereitstellen, z. B. /mnt/my-volume.

YAML

  1. Wenn Sie einen neuen Job erstellen, überspringen Sie diesen Schritt. Wenn Sie einen vorhandenen Job aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. Konfigurieren Sie die YAML-Datei:

    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_PATH
    

    Ersetzen Sie Folgendes:

    • JOB: der Name des Jobs.
    • REGION: die Google Cloud Region.
    • IMAGE_URL: Ein Verweis auf das Container-Image, z. B. us-docker.pkg.dev/cloudrun/container/job:latest.
    • VOLUME_NAME: der Name, den Sie dem Volume geben möchten.
    • SIZE: die Laufwerksgröße, z. B. 100Gi. Die Größe muss zwischen 1Gi und 100Gi für ephemeral-disk-Volumes liegen.
    • MOUNT_PATH: Der relative Pfad, unter dem Sie das Volume bereitstellen, z. B. /mnt/my-volume.
  3. Erstellen oder aktualisieren Sie den Dienst mit dem folgenden Befehl:

    gcloud run jobs replace job.yaml

    Der Befehl gcloud run jobs replace verwendet standardmäßig die Datei job.yaml, sofern sie vorhanden ist.

Terraform

Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.

Fügen Sie einer google_cloud_run_v2_job-Ressource in Ihrer Terraform-Konfiguration Folgendes hinzu:
  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,
      ]
    }
  }

Ersetzen Sie Folgendes:

  • JOB: der Name des Jobs.
  • REGION: die Google Cloud Region.
  • IMAGE_URL: Ein Verweis auf das Container-Image, z. B. us-docker.pkg.dev/cloudrun/container/job: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 zwischen 1Gi und 100Gi für ephemeral-disk-Volumes 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-Mounts 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 Job mit einem einzelnen Container zu entfernen:

gcloud run jobs update JOB \
    --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 jobs update JOB \
    --clear-volumes \
    --clear-volume-mounts \
    --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 Mounts für dieses Volume entfernen.

Verwenden Sie die Flags remove-volume und remove-volume-mount, um einzelne Volumes oder Volume-Bereitstellungen zu entfernen:

gcloud run jobs update JOB \
    --remove-volume VOLUME_NAME
    --container=container1 \
    --remove-volume-mount MOUNT_PATH \
    --container=container2 \
    --remove-volume-mount MOUNT_PATH

Best Practices

Halten Sie sich an die folgenden Best Practices, um temporäre Daten effektiv zu verwalten und die Speicherleistung zu optimieren.

In nichtflüchtigen Speicher kopieren

Wenn Sie den Inhalt des flüchtigen Laufwerks in nichtflüchtigen Speicher wie einen Cloud Storage-Bucket kopieren möchten, empfehlen wir, die Daten inkrementell zu kopieren, anstatt sich auf die 10-sekündige Kulanzzeit zwischen SIGTERM und SIGKILL zu verlassen. Weitere Informationen zu erzwungenen Herunterfahrvorgängen finden Sie im Containerlaufzeitvertrag.

Cloud Run kann ohne zusätzliche Netzwerkeinrichtung Daten 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 keinen Zugriff auf das Internet benötigt. Wenn Sie Internetzugriff benötigen, richten Sie entweder Cloud NAT ein oder lesen Sie den Abschnitt Interner Traffic zu einer Google API.

Führen Sie die folgenden Schritte aus, um ausgehenden Direct VPC-Traffic für einen Job zu konfigurieren:

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

    Zu Cloud Run

  2. Wenn Sie einen neuen Job konfigurieren, klicken Sie auf den Tab Jobs und wählen Sie Container bereitstellen aus. Füllen Sie die Seite mit den anfänglichen Jobeinstellungen nach Bedarf aus. Wenn Sie einen vorhandenen Job konfigurieren, klicken Sie auf den Job und dann auf Jobkonfiguration ansehen und bearbeiten.

  3. Klicken Sie auf Container, Verbindungen, Sicherheit, um die Seite mit den Jobattributen zu maximieren.

  4. Klicken Sie auf den Tab Verbindungen.

  5. Klicken Sie auf Mit einer VPC für ausgehenden Traffic verbinden.

  6. Klicken Sie auf Traffic direkt an eine VPC senden.

  7. Wählen Sie im Feld Netzwerk das VPC-Netzwerk aus, an das Sie Traffic senden möchten.

  8. Wählen Sie im Feld Subnetz das Subnetz aus, von dem Ihr Job IP-Adressen empfängt. Sie können mehrere Jobs im selben Subnetz ausführen.

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

  10. Klicken Sie auf Erstellen oder Aktualisieren.

  11. Klicken Sie auf den Job und dann auf den Tab Konfiguration, um zu prüfen, ob sich der Job in Ihrem VPC-Netzwerk befindet. Netzwerk und Subnetz werden auf der VPC-Karte aufgeführt.

  12. Aktivieren Sie Privater Google-Zugriff für das Subnetz, mit dem Sie eine Verbindung hergestellt haben.

Fehlerbehebung

Wenn Sie beim Herunterladen einer großen Menge von Daten 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übertragungsraten langsamer.