NFS-Volume-Bereitstellungen für Dienste konfigurieren

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

  1. 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
  2. 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 durch False, um Schreibvorgänge zuzulassen.
  3. 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.