Montaggi di volumi NFS per i job

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 di utilizzare Filestore, un'offerta NFS completamente gestita di Google Cloud.

Se vuoi utilizzare file system di rete NBD, 9P, CIFS/Samba e Ceph, consulta l'articolo Utilizzare i file system di rete NBD, 9P, CIFS/Samba e Ceph.

Limitazioni

  • Per scrivere su un volume NFS, il container deve essere eseguito come root. Se il tuo 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à senza blocco.

Prima di iniziare

Per montare un server NFS come volume in Cloud Run, assicurati di avere 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 tuo servizio Cloud Run connesso a quella rete VPC. Se non hai ancora un server NFS, creane uno creando un'istanza Filestore.
  • Il servizio Cloud Run è collegato alla rete VPC su cui è in esecuzione il server NFS. Per ottenere 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, questo è vero per impostazione predefinita). Se utilizzi Filestore come server NFS, segui la documentazione di Filestore per creare una regola del traffico in uscita del firewall e 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 innanzitutto i volumi, quindi specifica gli elementi di montaggio dei volumi per ciascun container.

Riga di comando

  • Per aggiungere un volume e montarlo:

    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

    Sostituisci:

    • JOB con il nome del job.
    • VOLUME_NAME con il nome che vuoi assegnare al volume.
    • IP_ADDRESS con la posizione della condivisione file NFS.
    • NFS_PATH con il percorso della condivisione file NFS.
    • MOUNT_PATH con il percorso all'interno del file system container in cui vuoi montare questo volume.
  • 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 gli montaggi dei volumi per ogni container:

    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

Scarica e visualizza la configurazione esistente dei job utilizzando il comando gcloud run jobs describe --format export, che restituisce risultati puliti in formato YAML. Quindi modifica i campi descritti di seguito e carica il file YAML modificato utilizzando il comando gcloud run jobs replace. Assicurati di modificare i campi solo come documentato.

  1. Per visualizzare e scaricare la configurazione:

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. Aggiorna i campi MOUNT_PATH, VOLUME_NAME, IP_ADDRESS e NFS_PATH in base alle tue esigenze. Se hai più montaggi del volume, avrai multipli di questi attributi.

    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

    Sostituisci

    • JOB con il nome del tuo job 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 montaggio del volume.
    • IP_ADDRESS con l'indirizzo della condivisione file NFS.
    • NFS_PATH con il percorso della condivisione file NFS.
    • 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 jobs replace job.yaml

Risoluzione dei problemi relativi a NFS

Se riscontri problemi, controlla quanto segue:

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