Configurar montajes de volúmenes de Cloud Storage para tareas

En esta página se muestra cómo montar un segmento de Cloud Storage como volumen de almacenamiento mediante montajes de volumen de Cloud Run.

Al montar el segmento como un volumen en Cloud Run, el contenido del segmento se presenta como archivos en el sistema de archivos del contenedor. Después de montar el bucket como un volumen, puedes acceder a él como si fuera un directorio de tu sistema de archivos local. Para ello, utiliza las operaciones y bibliotecas del sistema de archivos de tu lenguaje de programación en lugar de las bibliotecas de cliente de la API de Google.

Puedes montar tu volumen como de solo lectura y también puedes especificar opciones de montaje para tu volumen.

Requisitos de memoria

Los montajes de volúmenes de Cloud Storage usan la memoria del contenedor de Cloud Run para las siguientes actividades:

  • En todos los casos de almacenamiento en caché de Cloud Storage FUSE, Cloud Run usa el ajuste de caché de estadísticas con un tiempo de vida (TTL) de 60 segundos de forma predeterminada. El tamaño máximo predeterminado de la caché de estadísticas es de 32 MB y el tamaño máximo predeterminado de la caché de tipos es de 4 MB.

  • Al leer, Cloud Storage FUSE también consume memoria que no es de las cachés de estadísticas y tipos, como una matriz de 1 MiB por cada archivo que se lee y por cada goroutine.

  • Cuando se escribe en Cloud Storage, todo el archivo se almacena en la memoria de Cloud Run antes de que se escriba en Cloud Storage.

Limitaciones

Como Cloud Run usa Cloud Storage FUSE para montar este volumen, hay algunas cosas que debes tener en cuenta al montar un segmento de Cloud Storage como volumen:

  • Cloud Storage FUSE no proporciona control de simultaneidad para varias escrituras (bloqueo de archivos) en el mismo archivo. Cuando varios procesos de escritura intentan sustituir un archivo, se aplica el último y se pierden todos los anteriores.
  • Cloud Storage FUSE no es un sistema de archivos totalmente compatible con POSIX. Para obtener más información, consulta la documentación de FUSE de Cloud Storage.

Rutas no permitidas

Cloud Run no te permite montar un volumen en /dev, /proc o /sys, ni en sus subdirectorios.

Antes de empezar

Necesitas un segmento de Cloud Storage para montarlo como volumen.

Para obtener un rendimiento óptimo de lectura/escritura en Cloud Storage, consulta Optimizar el rendimiento del ancho de banda de la red FUSE de Cloud Storage.

Roles obligatorios

Para obtener los permisos que necesitas para configurar los montajes de volúmenes de Cloud Storage, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos:

Para obtener los permisos que necesita tu identidad de servicio para acceder al archivo y al segmento de Cloud Storage, pide a tu administrador que le conceda a la identidad de servicio el rol Lector de objetos de almacenamiento (roles/storage.objectViewer). Si la identidad de servicio también necesita realizar operaciones de escritura en un segmento, asigna el rol Usuario de objetos de almacenamiento (roles/storage.objectUser).

Para obtener más información sobre los roles y permisos de Cloud Storage, consulta Gestión de identidades y accesos para Cloud Storage.

Para ver una lista de los roles y permisos de gestión de identidades y accesos asociados a Cloud Run, consulta los artículos sobre roles de gestión de identidades y accesos de Cloud Run y permisos de gestión de identidades y accesos de Cloud Run. Si tu trabajo de Cloud Run interactúa con APIs deGoogle Cloud , como las bibliotecas de cliente de Cloud, consulta la guía de configuración de la identidad de servicio. Para obtener más información sobre cómo conceder roles, consulta los artículos sobre permisos de implementación y gestión del acceso.

Montar un volumen de Cloud Storage

Puedes montar varios contenedores en diferentes rutas de montaje. También puedes montar un volumen en más de un contenedor usando la misma ruta de montaje o rutas diferentes en los contenedores.

Si usas varios contenedores, primero especifica los volúmenes y, a continuación, los montajes de volumen de cada contenedor.

Consola

  1. En la Google Cloud consola, ve a la página de trabajos de Cloud Run:

    Ir a Cloud Run

  2. Seleccione Trabajos en el menú y haga clic en Implementar contenedor para rellenar la página de configuración inicial del trabajo. Si vas a configurar un trabajo que ya existe, selecciona el trabajo y haz clic en Editar.

  3. Haz clic en Contenedores, volúmenes, conexiones y seguridad para desplegar la página de propiedades del trabajo.

  4. Haz clic en la pestaña Volúmenes.

    imagen

    • En Volúmenes:
      • Haz clic en Añadir volumen.
      • En el menú desplegable Tipo de volumen, selecciona el segmento de Cloud Storage como tipo de volumen.
      • En el campo Nombre del volumen, introduce el nombre que quieras usar para el volumen.
      • Busca y selecciona el contenedor que quieras usar para el volumen.
      • También puedes seleccionar la casilla Solo lectura para que el segmento sea de solo lectura.
      • Haz clic en Listo.
    • Haz clic en la pestaña Contenedor y, a continuación, despliega el contenedor en el que vas a montar el volumen para editarlo.
    • Haz clic en la pestaña Montajes de volúmenes.
    • Haz clic en Montar volumen.
      • Selecciona el volumen de Cloud Storage en el menú.
      • Especifica la ruta en la que quieres montar el volumen.
      • Haz clic en Montar volumen.
  5. Haz clic en Crear o en Actualizar.

gcloud

  • Para añadir un volumen y montarlo, sigue estos pasos:

    gcloud run jobs update JOB \
    --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME \
    --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH

    Haz los cambios siguientes:

    • JOB: el nombre de tu trabajo.
    • MOUNT_PATH: la ruta relativa en la que vas a montar el volumen. Por ejemplo, /mnt/my-volume.
    • VOLUME_NAME: el nombre que quieras darle al volumen. El valor VOLUME_NAME se usa para asignar el volumen al montaje del volumen.
    • BUCKET_NAME: el nombre de tu segmento de Cloud Storage.
  • Para montar tu volumen como volumen de solo lectura, haz lo siguiente:

    --add-volume=name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME,readonly=true
  • Si usas varios contenedores, primero especifica los volúmenes y, a continuación, los puntos de montaje de volumen de cada contenedor:

    gcloud run jobs update JOB \
    --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME \
    --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. Si vas a crear un trabajo, sáltate este paso. Si vas a actualizar una tarea, descarga su configuración YAML:

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. Actualiza MOUNT_PATH, VOLUME_NAME, BUCKET_NAME y IS_READ_ONLY según sea necesario.

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB_NAME
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/execution-environment: gen2
        spec:
          template:
            spec:
              containers:
              - image: IMAGE_URL
                volumeMounts:
                - mountPath: MOUNT_PATH
                  name: VOLUME_NAME
              volumes:
              - name: VOLUME_NAME
                csi:
                  driver: gcsfuse.run.googleapis.com
                  readOnly: IS_READ_ONLY
                  volumeAttributes:
                    bucketName: BUCKET_NAME

    Haz los cambios siguientes:

    • IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/job:latest.
    • MOUNT_PATH: la ruta relativa en la que vas a montar el volumen. Por ejemplo, /mnt/my-volume.
    • VOLUME_NAME: el nombre que quieras darle al volumen. El valor VOLUME_NAME se usa para asignar el volumen al montaje del volumen.
    • IS_READ_ONLY: True para que el volumen sea de solo lectura o False para permitir escrituras.
    • BUCKET_NAME: el nombre del segmento de Cloud Storage.
  3. Crea o actualiza el trabajo con el siguiente comando:

    gcloud run jobs replace job.yaml

Terraform

Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.

Añade lo siguiente a un recurso google_cloud_run_v2_job en tu configuración de Terraform:

  resource "google_cloud_run_v2_job" "default" {
    name     = "JOB_NAME"
    location = "REGION"

    template {
      template {
        containers {
          image = "IMAGE_URL"
          volume_mounts {
            name = "VOLUME_NAME"
            mount_path = "MOUNT_PATH"
          }
        }

      volumes {
        name = "VOLUME_NAME"
        gcs {
          bucket = google_storage_bucket.default.name
          read_only = IS_READ_ONLY
        }
      }
    }
  }
}

  resource "google_storage_bucket" "default" {
    name     = "BUCKET_NAME"
    location = "REGION"
  }

Haz los cambios siguientes:

  • JOB_NAME: el nombre de tu tarea de Cloud Run.
  • REGION: la Google Cloud región.
  • IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/job:latest.
  • VOLUME_NAME: el nombre que quieras darle al volumen. El valor VOLUME_NAME se usa para asignar el volumen al punto de montaje del volumen.
  • MOUNT_PATH: la ruta relativa en la que vas a montar el volumen. Por ejemplo, /mnt/my-volume.
  • IS_READ_ONLY: True para que el volumen sea de solo lectura o False para permitir escrituras.
  • BUCKET_NAME: el nombre del segmento de Cloud Storage.

Leer y escribir en un volumen

Si usas la función de montaje de volúmenes de Cloud Run, puedes acceder a un volumen montado con las mismas bibliotecas de tu lenguaje de programación que usas para leer y escribir archivos en tu sistema de archivos local.

Esto es especialmente útil si usas un contenedor que espera que los datos se almacenen en el sistema de archivos local y que utiliza operaciones normales del sistema de archivos para acceder a ellos.

En los siguientes fragmentos se presupone que se ha montado un volumen con mountPath definido como /mnt/my-volume.

Nodejs

Usa el módulo File System para crear un archivo o añadir contenido a un archivo ya creado en el volumen, /mnt/my-volume:

var fs = require('fs');
fs.appendFileSync('/mnt/my-volume/sample-logfile.txt', 'Hello logs!', { flag: 'a+' });

Python

Escribe en un archivo conservado en el volumen, /mnt/my-volume:

f = open("/mnt/my-volume/sample-logfile.txt", "a")

Go

Usa el paquete os para crear un archivo nuevo que se guarde en el volumen /mnt/my-volume:

f, err := os.Create("/mnt/my-volume/sample-logfile.txt")

Java

Usa la clase Java.io.File para crear un archivo de registro en el volumen /mnt/my-volume:

import java.io.File;
File f = new File("/mnt/my-volume/sample-logfile.txt");

Configuración de volúmenes mediante opciones de montaje

También puedes usar opciones de montaje para configurar varias propiedades del montaje de tu volumen. Las opciones de montaje disponibles te permiten configurar los ajustes de la caché, montar un directorio específico, habilitar el registro de depuración y otros comportamientos.

Especificar las opciones de montaje

Puedes especificar opciones de montaje con la CLI de Google Cloud, YAML o Terraform. Las opciones de montaje se separan con puntos y comas (;) en la CLI de Google Cloud y con comas en YAML, tal como se muestra en las siguientes pestañas:

gcloud

Para añadir un volumen y montarlo con opciones de montaje, sigue estos pasos:

gcloud beta run jobs update JOB \
    --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME, mount-options="OPTION_1=VALUE_1;OPTION_N=VALUE_N" \
    --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH

Haz los cambios siguientes:

  • JOB: el nombre de tu trabajo.
  • MOUNT_PATH: la ruta relativa en la que vas a montar el volumen. Por ejemplo, /cache.
  • VOLUME_NAME: el nombre que quieras darle al volumen. El valor VOLUME_NAME se usa para asignar el volumen al montaje del volumen.
  • BUCKET_NAME: el nombre de tu segmento de Cloud Storage.
  • OPTION_1: la primera opción de montaje. Ten en cuenta que puedes especificar tantas opciones de montaje como necesites. Cada par de opción de montaje y valor debe estar separado por un punto y coma.
  • VALUE_1: el ajuste que quieras para la primera opción de montaje.
  • OPTION_N: la siguiente opción de montaje.
  • VALUE_N: la opción de montaje siguiente.
  • BUCKET_NAME: el nombre de tu segmento de Cloud Storage.
  • MOUNT_PATH: la ruta relativa en la que vas a montar el volumen. Por ejemplo, /cache.

YAML

  1. Si vas a crear un trabajo, sáltate este paso. Si vas a actualizar una tarea, descarga su configuración YAML:

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. Haga los cambios necesarios.

    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:
                - mountPath: MOUNT_PATH
                  name: VOLUME_NAME
              volumes:
              - name: VOLUME_NAME
                csi:
                  driver: gcsfuse.run.googleapis.com
                  readOnly: IS_READ_ONLY
                  volumeAttributes:
                    bucketName: BUCKET_NAME
                    mountOptions: OPTION_1=VALUE_1,OPTION_N=VALUE_N

    Haz los cambios siguientes:

    • IMAGE_URL: una referencia a la imagen del contenedor que contiene el grupo de trabajadores, como us-docker.pkg.dev/cloudrun/container/worker-pool:latest
    • MOUNT_PATH: la ruta relativa en la que vas a montar el volumen. Por ejemplo, /cache.
    • VOLUME_NAME: el nombre que quieras darle al volumen. El valor VOLUME_NAME se usa para asignar el volumen al montaje del volumen.
    • IS_READ_ONLY: True para que el volumen sea de solo lectura o False para permitir escrituras.
    • BUCKET_NAME: el nombre del segmento de Cloud Storage.
    • OPTION_1: la primera opción de montaje. Ten en cuenta que puedes especificar tantas opciones de montaje como necesites. Cada par de opción de montaje y valor debe estar separado por una coma.
    • VALUE_1: el ajuste que quieras para la primera opción de montaje.
    • OPTION_N: la siguiente opción de montaje.
    • VALUE_N: la opción de montaje siguiente.
  3. Crea o actualiza el trabajo con el siguiente comando:

    gcloud run jobs replace job.yaml

Terraform

Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.

Añade lo siguiente a un recurso google_cloud_run_v2_job en tu configuración de Terraform:

resource "google_cloud_run_v2_job" "default" {
  provider = google-beta
  name     = "JOB_NAME"
  location = "REGION"

  template {
    template {
      containers {
        image = "IMAGE_URL"
        volume_mounts {
          name = "VOLUME_NAME"
          mount_path = "MOUNT_PATH"
        }
      }

      volumes {
        name = "VOLUME_NAME"
        gcs {
          bucket = google_storage_bucket.default.name
          read_only = IS_READ_ONLY
          mount_options = ["OPTION_1=VALUE_1", "OPTION_N=VALUE_N", "OPTION_O"]
        }
      }
    }
  }
}

Haz los cambios siguientes:

  • JOB_NAME: el nombre de tu servicio de Cloud Run.
  • REGION: la Google Cloud región.
  • IMAGE_URL: una referencia a la imagen del contenedor que contiene el grupo de trabajadores, como us-docker.pkg.dev/cloudrun/container/worker-pool:latest
  • VOLUME_NAME: el nombre que quieras darle al volumen. El valor VOLUME_NAME se usa para asignar el volumen al punto de montaje del volumen.
  • MOUNT_PATH: la ruta relativa en la que vas a montar el volumen. Por ejemplo, /mnt/my-volume.
  • IS_READ_ONLY: True para que el volumen sea de solo lectura o False para permitir escrituras.
  • BUCKET_NAME: el nombre del segmento de Cloud Storage.
  • OPTION_1: la primera opción de montaje. Ten en cuenta que puedes especificar tantas opciones de montaje como necesites. Cada par de opción de montaje y valor debe estar separado por una coma.
  • VALUE_1: el ajuste que quieras para la primera opción de montaje.
  • OPTION_N: la segunda opción de montaje, si procede.
  • VALUE_N: el ajuste de la segunda opción de montaje.
  • OPTION_O: la tercera opción de montaje, si procede. Algunas opciones de montaje no tienen ningún valor.

Opciones de montaje habituales

Las opciones de montaje se suelen usar para lo siguiente:

  • Configurar los ajustes de caché
  • Montar solo un directorio específico del segmento de Cloud Storage
  • Configurar la propiedad del volumen (uid, gid)
  • Desactivar directorios implícitos
  • Especifica los niveles de registro de depuración.

Configurar los ajustes de almacenamiento en caché

Puedes cambiar los ajustes de almacenamiento en caché de tu volumen configurando las opciones de montaje relacionadas con el almacenamiento en caché. En la siguiente tabla se enumeran los ajustes y los valores predeterminados de Cloud Run :

Configuración de la caché Descripción Predeterminado
metadata-cache-ttl-secs Tiempo de vida (TTL) en segundos de las entradas de metadatos almacenadas en caché. Por ejemplo, metadata-cache-ttl-secs=120s. Para usar el archivo más actualizado, especifica el valor 0. Para usar siempre la versión almacenada en caché, especifica el valor -1. Para obtener más información, consulta Configurar la invalidación de caché. 60
stat-cache-max-size-mb Tamaño máximo en mebibytes (MiB) que puede usar la caché de estadísticas. La caché de estadísticas siempre se mantiene por completo en la memoria, lo que afecta al consumo de memoria. Especifica el valor 32 si tu carga de trabajo incluye hasta 20.000 archivos. Si tu carga de trabajo usa más de 20.000 archivos, aumenta el tamaño en valores de 10 por cada 6000 archivos adicionales, donde la caché de estadísticas usa una media de 1500 MiB por archivo.

Para permitir que la caché de estadísticas use toda la memoria que necesite, especifica un valor de -1. Para inhabilitar la caché de estadísticas, especifica el valor 0.
32
type-cache-max-size-mb Tamaño máximo en MiB por directorio que puede usar la caché de tipos. La caché de tipos siempre se mantiene por completo en la memoria, lo que afecta al consumo de memoria.

Especifica el valor 4 si el número máximo de archivos de un mismo directorio del bucket que vas a montar es de 20.000 o menos. Si el número máximo de archivos de un directorio que vas a montar es superior a 20.000, aumenta el valor en 1 por cada 5000 archivos, lo que supone una media de unos 200 bytes por archivo.

Para que la caché de tipos use toda la memoria que necesite, especifica el valor -1.

Para inhabilitar la caché de tipos, especifica el valor 0.
4

El siguiente comando de la CLI de Google Cloud define el valor de metadata-cache-ttl-secs en 120 segundos y aumenta la capacidad de la caché de estadísticas y de tipos a 52 y 7 MiB, respectivamente:

gcloud beta run jobs update JOB \
    --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME,mount-options="metadata-cache-ttl-secs=120;stat-cache-max-size-mb=52;type-cache-max-size-mb=7" \
    --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH

Haz los cambios siguientes:

  • JOB: el nombre de tu trabajo.
  • VOLUME_NAME: el nombre que quieras darle al volumen. El valor VOLUME_NAME se usa para asignar el volumen al montaje del volumen.
  • BUCKET_NAME: el nombre de tu segmento de Cloud Storage.
  • MOUNT_PATH: la ruta relativa en la que vas a montar el volumen. Por ejemplo, /cache.

Habilitar el registro de depuración

De forma predeterminada, Cloud Storage FUSE registra los eventos que tienen un nivel Info o superior. Puede cambiar la configuración de registro con cualquiera de los siguientes niveles de gravedad de registro, que se indican en orden de menor a mayor:

  • trace
  • debug
  • info
  • warning
  • error
  • Para desactivar todos los registros, especifica el valor off.

Cuando especifica un nivel de gravedad, Cloud Storage FUSE genera registros de eventos que tienen un nivel de gravedad igual o superior al especificado. Por ejemplo, si especificas el nivel warning, Cloud Storage FUSE genera registros de advertencias y errores.

Si se define la gravedad de los registros en niveles superiores a info, el rendimiento puede verse afectado y se puede generar una gran cantidad de datos de registro, por lo que te recomendamos que lo hagas solo cuando sea necesario.

La siguiente línea de comandos activa el registro de depuración:

gcloud beta run jobs update JOB \
    --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME,mount-options="log-severity=debug" \
    --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH

Haz los cambios siguientes:

  • JOB con el nombre del trabajo.
  • VOLUME_NAME con el nombre que quieras para el volumen. El valor VOLUME_NAME se usa para asignar el volumen al montaje del volumen.
  • BUCKET_NAME con el nombre de tu segmento de Cloud Storage.
  • MOUNT_PATH con la ruta relativa en la que vas a montar el volumen, por ejemplo, /cache.

Inhabilitar directorios implícitos

Para que Cloud Storage se parezca más a un sistema de archivos estándar, Cloud Run habilita los directorios implícitos de forma predeterminada al montar un segmento de Cloud Storage. Puedes desactivar los directorios implícitos con la opción de montaje implicit-dirs. Si inhabilitas los directorios implícitos, puedes mejorar el rendimiento y reducir los costes, pero esto conlleva ciertas concesiones en cuanto a la compatibilidad.

La función de directorios implícitos permite a Cloud Run reconocer archivos de Cloud Storage que ya existan y cuyos nombres de archivo imiten una estructura de directorios, como /mydir/myfile.txt. Si inhabilitas los directorios implícitos, Cloud Run no podrá mostrar ni leer esos archivos.

Si desactivas los directorios implícitos, se reduce el número de solicitudes a Cloud Storage, lo que puede mejorar el rendimiento y el coste de tu aplicación. Consulta la documentación sobre archivos y directorios de Cloud Storage FUSE para obtener más información.

La siguiente línea de comandos inhabilita los directorios implícitos:

gcloud beta run jobs update JOB \
    --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME,mount-options="implicit-dirs=false" \
    --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH

Haz los cambios siguientes:

  • JOB: el nombre de tu trabajo.
  • VOLUME_NAME: el nombre que quieras darle al volumen. El valor VOLUME_NAME se usa para asignar el volumen al montaje del volumen.
  • BUCKET_NAME: el nombre de tu segmento de Cloud Storage.
  • MOUNT_PATH: la ruta relativa en la que vas a montar el volumen. Por ejemplo, /cache.

Montar un directorio específico de tu segmento de Cloud Storage

De forma predeterminada, Cloud Run monta todo el segmento de Cloud Storage, lo que da a los trabajos de Cloud Run acceso a todo su contenido. En algunos casos, puede que solo quieras montar un directorio específico. Por ejemplo, si el contenedor contiene un gran número de archivos, montar un directorio específico puede mejorar el rendimiento.

También puedes implementar esta opción para aislar los trabajos que necesiten acceder a diferentes directorios del contenedor de almacenamiento.

La siguiente línea de comandos especifica el directorio que se va a montar:

gcloud beta run jobs update JOB \
    --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME,mount-options="only-dir=images" \
    --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH

Haz los cambios siguientes:

  • JOB: el nombre de tu trabajo.
  • VOLUME_NAME: el nombre que quieras darle al volumen. El valor VOLUME_NAME se usa para asignar el volumen al montaje del volumen.
  • BUCKET_NAME: el nombre de tu segmento de Cloud Storage.
  • MOUNT_PATH: la ruta relativa en la que vas a montar el volumen. Por ejemplo, /cache.

Pon el volumen UID y GID

Usa las opciones de montaje uid y gid para cambiar el identificador de usuario y el identificador de grupo del volumen. Esto resulta útil si quieres asignar la propiedad del archivo a un usuario o grupo específico que coincida con la identidad de uno o varios contenedores en ejecución. De forma predeterminada, los volúmenes son propiedad de la raíz.

La siguiente línea de comandos define uid y gid:

gcloud beta run jobs update JOB \
    --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME,mount-options="uid=UID;gid=GID"  \
    --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH

Haz los cambios siguientes:

  • JOB: el nombre de tu trabajo.
  • VOLUME_NAME: el nombre que quieras darle al volumen. El valor VOLUME_NAME se usa para asignar el volumen al montaje del volumen.
  • BUCKET_NAME: el nombre de tu segmento de Cloud Storage.
  • MOUNT_PATH: la ruta relativa en la que vas a montar el volumen. Por ejemplo, /cache.

Definir otras opciones de montaje

A continuación, se muestra la lista completa de todas las opciones de montaje compatibles con Cloud Run.

Directorio

  • implicit-dirs
  • only-dir
  • rename-dir-limit

Depuración

  • debug_fuse_errors
  • debug_fuse
  • debug_gcs
  • debug-invariants
  • debug_mutex

Caché

  • stat-cache-capacity
  • stat-cache-ttl
  • type-cache-ttl
  • enable-nonexistent-type-cache

Permisos

  • uid
  • gid
  • file-mode
  • dir-mode

Otros

  • billing-project
  • client-protocol
  • experimental-enable-json-read
  • experimental-opentelemetry-collector-address
  • http-client-timeout
  • limit-bytes-per-sec
  • limit-ops-per-sec
  • max-conns-per-host
  • max-idle-conns-per-host
  • max-retry-sleep
  • -o
  • retry-multiplier
  • sequential-read-size-mb
  • stackdriver-export-interval

Para consultar la documentación completa de las opciones de montaje admitidas, consulta las opciones de montaje de la línea de comandos de FUSE de Cloud Storage.

Ver los ajustes de montajes de volúmenes

Puedes ver la configuración actual del montaje de volúmenes mediante la Google Cloud consola o la interfaz de línea de comandos de Google Cloud.

Consola

  1. En la Google Cloud consola, ve a la página de trabajos de Cloud Run:

    Ir a tareas de Cloud Run

  2. Haz clic en el trabajo que te interese para abrir la página Detalles del trabajo.

  3. Haz clic en la pestaña Volúmenes.

  4. Busca el ajuste de montajes de volumen en la página de detalles de volúmenes.

gcloud

  1. Usa el siguiente comando:

    gcloud run jobs describe JOB_NAME
  2. Busca el ajuste de los volúmenes montados en la configuración devuelta.

Optimizar el rendimiento del ancho de banda de la red de Cloud Storage FUSE

Para mejorar el rendimiento de lectura y escritura, conecta tu trabajo de Cloud Run a una red de VPC mediante VPC directa y enruta todo el tráfico saliente a través de tu red de VPC. Puedes hacerlo de cualquiera de las siguientes formas:

Tiempo de inicio de los contenedores y montajes de Cloud Storage FUSE

Usar Cloud Storage FUSE puede aumentar ligeramente el tiempo de arranque en frío de tu contenedor de Cloud Run, ya que Cloud Run inicia el montaje del volumen antes de iniciar los contenedores. El contenedor solo se iniciará si Cloud Storage FUSE se monta correctamente.

Ten en cuenta que Cloud Storage FUSE solo monta un volumen correctamente después de establecer una conexión con Cloud Storage. Cualquier retraso en la red puede influir en el tiempo de inicio del contenedor. Por lo tanto, si el intento de conexión falla, Cloud Storage FUSE no se montará y el trabajo de Cloud Run no se iniciará. Además, si Cloud Storage FUSE tarda más de 30 segundos en montarse, el trabajo de Cloud Run no se iniciará porque Cloud Run tiene un tiempo de espera total de 30 segundos para realizar todos los montajes.

Características de rendimiento de Cloud Storage FUSE

Si defines dos volúmenes, cada uno de ellos apuntando a un segmento diferente, se iniciarán dos procesos de Cloud Storage FUSE. Los montajes y los procesos se producen en paralelo.

Las operaciones que usan Cloud Storage FUSE se ven afectadas por el ancho de banda de la red, ya que Cloud Storage FUSE se comunica con Cloud Storage mediante la API de Cloud Storage. Algunas operaciones, como enumerar el contenido de un contenedor, pueden ser lentas si el ancho de banda de la red es bajo. Del mismo modo, leer un archivo grande puede llevar tiempo, ya que también está limitado por el ancho de banda de la red.

Cuando escribes en un segmento, Cloud Storage FUSE almacena el objeto por completo en la memoria. Esto significa que la escritura de archivos grandes está limitada por la cantidad de memoria disponible para la instancia del contenedor (el límite máximo de memoria del contenedor es de 32 GiB).

La escritura se vacía en el segmento solo cuando realizas una close o una fsync: el objeto completo se sube al segmento. La única excepción a la regla de que un objeto se vuelve a subir por completo al segmento es el caso de un archivo con contenido añadido cuando el archivo tiene 2 MiB o más.

Para obtener más información, consulta los siguientes recursos:

Borrar y quitar volúmenes y montajes de volúmenes

Puedes borrar todos los volúmenes y los puntos de montaje, o bien quitar volúmenes y puntos de montaje concretos.

Borrar todos los volúmenes y los puntos de montaje de volúmenes

Para borrar todos los volúmenes y los montajes de volúmenes de tu trabajo de un solo contenedor, ejecuta el siguiente comando:

gcloud run jobs update JOB \
    --clear-volumes
    --clear-volume-mounts

Si tienes varios contenedores, sigue las convenciones de la CLI de sidecars para borrar volúmenes y montajes de volúmenes:

gcloud run jobs update JOB \
    --clear-volumes \
    --clear-volume-mounts \
    --container=container1 \
    --clear-volumes \
    -–clear-volume-mounts \
    --container=container2 \
    --clear-volumes \
    -–clear-volume-mounts

Eliminar volúmenes y montajes de volúmenes concretos

Para quitar un volumen, también debes quitar todos los montajes de volumen que lo usen.

Para quitar volúmenes o montajes de volúmenes concretos, usa las marcas remove-volume y remove-volume-mount:

gcloud run jobs update JOB \
    --remove-volume VOLUME_NAME
    --container=container1 \
    --remove-volume-mount MOUNT_PATH \
    --container=container2 \
    --remove-volume-mount MOUNT_PATH