Configurare i montaggi dei volumi NFS per i servizi

Questa pagina mostra come montare una condivisione file NFS come volume in Cloud Run. Puoi utilizzare qualsiasi server NFS, incluso il tuo server NFS ospitato on-premise, o su una VM di Compute Engine. Se non disponi già di un server NFS, ti consigliamo Filestore, che è un'offerta NFS completamente gestita di Google Cloud.

Se vuoi utilizzare i file system di rete NBD, 9P, CIFS/Samba e Ceph, fai riferimento all'articolo sull'utilizzo dei file system di rete NBD, 9P, CIFS/Samba e Ceph.

Limitazioni

  • Per scrivere in un volume NFS, il container deve essere eseguito come root. Se il container legge solo dal file system, può essere eseguito come qualsiasi utente.

  • Cloud Run non supporta il blocco NFS. I volumi NFS vengono montati automaticamente in modalità no-lock.

Prima di iniziare

Per montare un server NFS come volume in Cloud Run, assicurati di disporre di quanto segue:

  • Una rete VPC in cui è in esecuzione il server NFS o l'istanza Filestore.
  • Un server NFS in esecuzione in una rete VPC, con il servizio Cloud Run connesso a tale rete VPC. Se non hai ancora un server NFS, creane uno creando un'istanza Filestore.
  • Il tuo servizio Cloud Run è collegato alla rete VPC in cui è in esecuzione il server NFS. Per prestazioni ottimali, utilizza un VPC diretto anziché i connettori VPC.
  • Se utilizzi un progetto esistente, assicurati che la configurazione del firewall VPC consenta a Cloud Run di raggiungere il server NFS. Se inizi da un nuovo progetto, il valore è true per impostazione predefinita. Se utilizzi Filestore come server NFS, segui la documentazione di Filestore per creare una regola firewall in uscita per consentire a Cloud Run di raggiungere Filestore.

Monta un volume NFS

Puoi montare più server NFS, istanze Filestore o altri tipi di volume in percorsi di montaggio diversi.

Se utilizzi più container, specifica prima i volumi, quindi quelli montati per ogni container.

Riga di comando

Nota: mostriamo il comando gcloud beta run services update, ma puoi anche utilizzare il comando gcloud beta run services deploy con gli stessi parametri mostrati.

  • Per aggiungere un volume e montarlo:
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

Sostituisci:

  • SERVICE con il nome del tuo servizio.
  • VOLUME_NAME con il nome che vuoi assegnare al tuo volume.
  • IP_ADDRESS con la posizione della condivisione file NFS.
  • NFS_PATH con il percorso della condivisione file NFS che inizia con una barra, ad esempio /example-directory.
  • MOUNT_PATH con il percorso relativo in cui stai montando il volume, ad esempio /cache.
  • VOLUME_NAME con il nome che preferisci per il volume. Il valore VOLUME_NAME viene utilizzato per mappare il volume al relativo montaggio.

  • Per montare il volume come volume di sola lettura:

    --add-volume=name=VOLUME_NAME,type=nfs,location=IP_ADDRESS:NFS_PATH,readonly=true
  • Se utilizzi più container, specifica prima i volumi, quindi specifica i montaggi dei volumi per ogni container:

    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. Se stai creando un nuovo servizio, salta questo passaggio. Se stai aggiornando un servizio esistente, scarica la relativa configurazione YAML:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Aggiorna MOUNT_PATH, VOLUME_NAME, IP_ADDRESS e NFS_PATH in base alle esigenze. Se hai più montaggi di volumi, avrai multipli di questi attributi.

    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

    Sostituisci

    • SERVICE con il nome del tuo servizio Cloud Run
    • MOUNT_PATH con il percorso relativo in cui stai montando il volume, ad esempio /cache.
    • VOLUME_NAME con il nome che preferisci per il volume. Il valore VOLUME_NAME viene utilizzato per mappare il volume al relativo montaggio.
    • IP_ADDRESS con l'indirizzo della condivisione file NFS.
    • NFS_PATH con il percorso della condivisione file NFS che inizia con una barra, ad esempio /example-directory.
    • IS_READ_ONLY con True per rendere il volume di sola lettura o False per consentire le scritture.
  3. Sostituisci il servizio con la nuova configurazione utilizzando il seguente comando:

    gcloud beta run services replace service.yaml

Risoluzione dei problemi di NFS

Se riscontri problemi, controlla quanto segue:

  • Il tuo servizio Cloud Run è connesso alla rete VPC su cui si trova il server NFS.
  • Non esistono regole firewall che impediscano a Cloud Run di raggiungere il server NPS.
  • Se il container scrive sul server NFS, assicurati che sia in esecuzione come root.