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 der 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 Nicht-Sperrmodus 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, wobei 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 verbunden, 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 erreicht.
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
Hinweise: Wir zeigen den Befehl gcloud beta run services update
. Sie können aber auch den Befehl gcloud beta run services deploy
mit denselben Parametern wie gezeigt nutzen.
- So fügen Sie ein Volume hinzu und stellen es bereit:
gcloud beta run services update SERVICE \ --add-volume=name=VOLUME_NAME,type=nfs,location=IP_ADDRESS:NFS_PATH \ --add-volume-mount=volume=VOLUME_NAME,mount-path=MOUNT_PATH
Ersetzen Sie:
- SERVICE durch den Namen des Dienstes.
- 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, beginnend mit einem Schrägstrich, z. B.
/example-directory
. - 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.
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 services update SERVICE \ --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 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
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: Service metadata: name: SERVICE annotations: run.googleapis.com/launch-stage: BETA 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 nfs: server: IP_ADDRESS path: NFS_PATH readOnly: IS_READ_ONLY
Ersetzen
- SERVICE durch den Namen Ihres Cloud Run-Dienstes
- 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, beginnend mit einem Schrägstrich, z. B.
/example-directory
. - 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 services replace service.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, stellen Sie sicher, dass er als Root ausgeführt wird.