Auf dieser Seite wird gezeigt, wie Sie eine NFS-Dateifreigabe als Volume in Cloud Run bereitstellen. Sie können einen beliebigen NFS-Server verwenden, einschließlich Ihres eigenen NFS-Servers, der lokal oder auf einer Compute Engine-VM gehostet wird. Wenn Sie noch keinen NFS-Server haben, empfehlen wir Filestore, ein vollständig verwaltetes NFS-Angebot von Google Cloud.
Wenn Sie eines der Netzwerkdateisysteme NBD, 9P, CIFS/Samba oder Ceph verwenden möchten, finden Sie entsprechende Informationen unter NBD-, 9P-, CIFS/Samba- und Ceph-Netzwerkdateisysteme verwenden.
Beschränkungen
Damit Sie auf ein NFS-Volume schreiben können, muss Ihr Container als Root ausgeführt werden. Wenn Ihr Container nur aus dem Dateisystem liest, kann er als beliebiger Nutzer ausgeführt werden.
Cloud Run unterstützt keine NFS-Sperren. NFS-Volumes werden automatisch im No-Sperr-Modus bereitgestellt.
Hinweise
Folgendes benötigen Sie, um einen NFS-Server als Volume in Cloud Run bereitzustellen:
- Ein VPC-Netzwerk, in dem Ihr NFS-Server oder Ihre Filestore-Instanz ausgeführt wird.
- Einen NFS-Server, der in einem VPC-Netzwerk ausgeführt wird und Ihr Cloud Run-Dienst mit diesem VPC-Netzwerk verbunden ist. Wenn Sie noch keinen NFS-Server haben, erstellen Sie einen durch Erstellen einer Filestore-Instanz.
- Ihr Cloud Run-Dienst ist mit dem VPC-Netzwerk verknüpft, in dem Ihr NFS-Server ausgeführt wird. Die beste Leistung erzielen Sie, wenn Sie Direct VPC anstelle von VPC-Connectors verwenden.
- Achten Sie bei Verwendung eines vorhandenen Projekts darauf, dass Ihre VPC-Firewall-Konfiguration Cloud Run erlaubt, Ihren NFS-Server zu erreichen. Wenn Sie mit einem neuen Projekt beginnen, gilt dies standardmäßig. Wenn Sie Filestore als NFS-Server verwenden, folgen Sie der Filestore-Dokumentation, um eine Firewallregel für ausgehenden Traffic zu erstellen, damit Cloud Run Filestore erreichen kann.
NFS-Volume bereitstellen
Sie können mehrere NFS-Server, Filestore-Instanzen oder andere Volume-Typen in verschiedenen Bereitstellungspfaden bereitstellen.
Wenn Sie mehrere Container verwenden, geben Sie zuerst die Volumes und dann die Volume-Bereitstellungen pro Container an.
Befehlszeile
So fügen Sie ein Volume hinzu und stellen es bereit:
gcloud beta run jobs update JOB \ --add-volume name=VOLUME_NAME,type=nfs,location=IP_ADDRESS:NFS_PATH \ --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH
Ersetzen Sie:
- JOB durch den Namen des Jobs.
- VOLUME_NAME durch den Namen, den Sie dem Volume geben möchten.
- IP_ADDRESS durch den Speicherort der NFS-Dateifreigabe.
- NFS_PATH durch den Pfad zur NFS-Dateifreigabe.
- MOUNT_PATH durch den Pfad innerhalb des Containerdateisystems, in dem Sie dieses Volume bereitstellen möchten.
So stellen Sie das Volume als schreibgeschütztes Volume bereit:
--add-volume name VOLUME_NAME,type=nfs,location=IP_ADDRESS:NFS_PATH,readonly=true
Wenn Sie mehrere Container verwenden, geben Sie zuerst die Volumes und dann die Volume-Bereitstellungen pro Container an.
gcloud beta run jobs update JOB \ --add-volume name=VOLUME_NAME,type=nfs,location=IP_ADDRESS:NFS_PATH \ --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 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
Aktualisieren Sie MOUNT_PATH, VOLUME_NAME, IP_ADDRESS und NFS_PATH nach Bedarf. Wenn Sie mehrere Volume-Bereitstellungen haben, sind mehrere dieser Attribute vorhanden.
apiVersion: run.googleapis.com/v1 kind: Job metadata: name: JOB_NAME spec: metadata: annotations: run.googleapis.com/launch-stage: BETA template: metadata: annotations: run.googleapis.com/execution-environment: gen2 spec: template: spec: containers: - image: IMAGE_URL volumeMounts: - name: VOLUME_NAME mountPath: MOUNT_PATH volumes: - name: VOLUME_NAME nfs: server: IP_ADDRESS path: NFS_PATH readonly: IS_READ_ONLY
Ersetzen Sie
- JOB durch den Namen Ihres Cloud Run-Jobs.
- MOUNT_PATH durch den relativen Pfad, unter dem Sie das Volume bereitstellen, z. B.
/cache
. - VOLUME_NAME durch einen beliebigen Namen für Ihr Volume. Der Wert VOLUME_NAME wird verwendet, um das Volume der Volume-Bereitstellung zuzuordnen.
- IP_ADDRESS durch die Adresse der NFS-Dateifreigabe.
- NFS_PATH durch den Pfad zur NFS-Dateifreigabe.
- IS_READ_ONLY durch
True
, um das Volume schreibgeschützt zu machen, oder durchFalse
, um Schreibvorgänge zuzulassen.
Ersetzen Sie den Dienst mit dem folgenden Befehl durch die neue Konfiguration:
gcloud beta run jobs replace job.yaml
Fehlerbehebung bei NFS
Prüfen Sie bei Problemen Folgendes:
- Ihr Cloud Run-Dienst ist mit dem VPC-Netzwerk verbunden, in dem sich der NFS-Server befindet.
- Es gibt keine Firewallregeln, die verhindern, dass Cloud Run den NFS-Server erreicht.
- Wenn der Container auf Ihren NFS-Server schreibt, prüfen Sie, ob er als Root ausgeführt wird.