NFS-Volume-Bereitstellungen für Dienste

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

Hinweis: Wir zeigen den Befehl gcloud beta run services update an. Sie können aber auch den Befehl gcloud beta run services deploy mit denselben Parametern verwenden, wie gezeigt.

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

Sie können vorhandene Dienstkonfigurationen mit dem Befehl gcloud run services describe --format export herunterladen und aufrufen, was bereinigte Ergebnisse im YAML-Format liefert. Anschließend können Sie die unten beschriebenen Felder ändern und die geänderte YAML-Datei mit dem Befehl gcloud run services replace hochladen. Achten Sie darauf, dass Sie die Felder nur wie dokumentiert ändern.

  1. So rufen Sie die Konfiguration auf und laden sie 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 Sie

    • 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.
    • 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, prüfen Sie, ob er als Root ausgeführt wird.