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:
-
Desarrollador de Cloud Run (
roles/run.developer
) en la tarea de Cloud Run -
Usuario de cuenta de servicio (
roles/iam.serviceAccountUser
) en la identidad de servicio
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
En la Google Cloud consola, ve a la página de trabajos de Cloud Run:
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.
Haz clic en Contenedores, volúmenes, conexiones y seguridad para desplegar la página de propiedades del trabajo.
Haz clic en la pestaña Volúmenes.
- 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.
- En Volúmenes:
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
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
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 oFalse
para permitir escrituras. - BUCKET_NAME: el nombre del segmento de Cloud Storage.
- IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo,
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 recursogoogle_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 oFalse
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
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
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 oFalse
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.
- IMAGE_URL: una referencia a la imagen del contenedor que contiene el grupo de trabajadores, como
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 recursogoogle_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 oFalse
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
En la Google Cloud consola, ve a la página de trabajos de Cloud Run:
Haz clic en el trabajo que te interese para abrir la página Detalles del trabajo.
Haz clic en la pestaña Volúmenes.
Busca el ajuste de montajes de volumen en la página de detalles de volúmenes.
gcloud
Usa el siguiente comando:
gcloud run jobs describe JOB_NAME
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:
- Habilita Acceso privado de Google y asegúrate de que el parámetro
vpc-egress
tenga el valorall-traffic
. - Usa una de las opciones descritas en la página de prácticas recomendadas de redes, en la sección Tráfico interno a una API de Google.
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:
- Documentación de Cloud Storage FUSE
- Rendimiento de Cloud Storage FUSE
- Semántica de Cloud Storage FUSE
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