Cloud Run proporciona un volumen de disco efímero que persiste solo durante la instancia. Esta función te permite especificar la cantidad de disco que necesitas y la ubicación para activarlo. Luego, Cloud Run asignará esa cantidad de disco a tu recurso.
Los discos se aprovisionan automáticamente, se formatean previamente en ext4 y se encriptan con claves específicas de la instancia
en el inicio. El disco efímero crea tu volumen para que cualquier usuario pueda leerlo o
escribir en él. Debido a que el almacenamiento es efímero, todos los datos se borran de forma permanente
cuando se cierra la instancia. Esto incluye los cierres causados por lo siguiente:
- Fallas de instancias
- Finalización de tareas de trabajos (éxito o fracaso)
Los discos se dedican a una instancia específica y no se comparten con otras instancias. Tienes control sobre la estructura del sistema de archivos con un punto de activación configurable para cada volumen.
Antes de cerrar una instancia, Cloud Run envía una señal SIGTERM
a todos los contenedores de una instancia, lo que indica el inicio de un período de 10 segundos
antes de que se produzca el cierre real, momento en el que Cloud Run envía
una señal SIGKILL. Puedes usar este período de 10 segundos para realizar operaciones de limpieza,
como una ronda final de copia del contenido del disco en el almacenamiento persistente.
Casos de uso
Puedes usar el disco efímero para lo siguiente:
- Cargas de trabajo de procesamiento de datos: Cuando procesas archivos de datos grandes en Cloud Run, por lo general, almacenas todo el archivo en la memoria o coordinas su división en partes más pequeñas. Con el almacenamiento efímero, no necesitarás pagar por grandes cantidades de memoria para crear una copia local temporal de tus datos. También podrás procesar conjuntos de datos más grandes.
- Almacenamiento en caché: En los casos de uso de entrega web, almacenar en caché los datos en el disco en lugar de recuperarlos del almacenamiento remoto puede optimizar la latencia de tu aplicación.
Límites de almacenamiento y de instancias
Se aplican los siguientes límites:
- Límite de tamaño del volumen: Cada volumen debe tener entre
1Giy100Gi. - Límite de almacenamiento de la instancia: Cada instancia está limitada a 10 GiB de espacio total de forma predeterminada. Para configurar más de 10 GiB por instancia, se debe solicitar un aumento de cuota.
- Límite de volúmenes por instancia: Cada instancia está limitada a un máximo de 10 volúmenes de discos efímeros.
- Límite del proyecto: Cada proyecto comienza con un límite de asignación regional total de 0 GiB de forma predeterminada. A los proyectos se les otorgan automáticamente 100 GiB por región la primera vez que se implementa un recurso con un disco efímero en esa región. En el entorno de ejecución, esta cuota regional se comparte entre todas las instancias que se ejecutan de forma activa en la región. Cuando implementas un recurso, el tamaño combinado del disco efímero por instancia multiplicado por su cantidad máxima de instancias no puede superar el límite de asignación regional. Por ejemplo, con un límite regional de 100 GiB, un recurso con un disco de 10 GiB se puede configurar con hasta 10 instancias. Si es necesario, solicita un aumento de cuota.
Solicita un aumento de la cuota
Si necesitas capacidad adicional, debes solicitar un aumento de cuota para tu trabajo de Cloud Run. Usa los vínculos que se proporcionan en los siguientes botones para solicitar la cuota que necesitas.
| Cuota actual | Vínculo de cuota |
|---|---|
| 10 GiB por instancia | Solicita una cuota mayor por instancia |
| 100 GiB por proyecto | Solicita una cuota mayor por proyecto |
Para obtener más información sobre cómo solicitar aumentos de cuota, consulta Cómo aumentar la cuota.
Limitaciones
Se aplica la siguiente limitación:- El disco efímero solo está disponible en el entorno de ejecución de segunda generación. De forma predeterminada, los trabajos de Cloud Run usan el entorno de ejecución de segunda generación.
- No se admite la migración en vivo. Esto significa que los trabajos de Cloud Run serán menos confiables, en especial los de larga duración.
Rutas no permitidas
Cloud Run no te permite activar un volumen en /dev, /proc o
/sys, ni en sus subdirectorios.
Regiones admitidas
El disco efímero está disponible en todas las ubicaciones de Cloud Run.
Antes de comenzar
- Accede a tu cuenta de Google Cloud . Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- Instala e inicializa gcloud CLI.
-
Actualiza los componentes, como se indica a continuación:
gcloud components update
- Revisa la página de precios de Cloud Run para conocer los costos de CPU, memoria y salida de red. El tamaño total del disco aprovisionado y el ciclo de vida de la instancia que lo usa contribuyen a tu costo.
Roles obligatorios
Para obtener los permisos que necesitas para configurar un disco efímero, pídele a tu administrador que te otorgue los siguientes roles de IAM:
- Desarrollador de Cloud Run (
roles/run.developer) en el trabajo de Cloud Run - Usuario de la cuenta de servicio (
roles/iam.serviceAccountUser) en la identidad del servicio
Para obtener una lista de los roles y los permisos de IAM asociados con Cloud Run, consulta los roles de IAM de Cloud Run y los permisos de IAM de Cloud Run. Si tu trabajo de Cloud Run interactúa con las APIs deGoogle Cloud , como las bibliotecas cliente de Cloud, consulta la guía de configuración de identidades del servicio. Para obtener más información sobre cómo otorgar roles, consulta los permisos de implementación y cómo administrar el acceso.
Crea y activa un disco efímero
Puedes crear y activar un disco efímero con la consola de Google Cloud , Google Cloud CLI, YAML o Terraform:
Console
En la consola de Google Cloud , ve a la página de Cloud Run:
Selecciona Trabajos en el menú de navegación de Cloud Run:
Si creas un trabajo nuevo, haz clic en Implementar contenedor para completar la página de configuración inicial del trabajo.
Si quieres configurar un trabajo existente, selecciónalo y, luego, haz clic en Ver y editar la configuración del trabajo.
Haz clic en Contenedores, conexiones y seguridad para expandir la página de propiedades del trabajo.
Haz clic en la pestaña Contenedores.
En Recursos, selecciona Disco efímero.
Especifica el tamaño del disco efímero en el menú.
Ingresa la ruta de activación.
Haz clic en Crear o Actualizar.
gcloud
Para agregar un volumen y activarlo, sigue estos pasos:
gcloud run jobs update JOB \
--add-volume=name=VOLUME_NAME,type=ephemeral-disk,size=SIZE \
--add-volume-mount=volume=VOLUME_NAME,mount-path=MOUNT_PATH
Reemplaza lo siguiente:
- JOB: el nombre de tu trabajo.
- VOLUME_NAME: Es el nombre que deseas darle a tu volumen.
- SIZE: Es el tamaño del disco, por ejemplo,
10Gi. El tamaño debe ser de entre1Giy100Gipara los volúmenesephemeral-disk. - MOUNT_PATH: Es la ruta de acceso relativa en la que activarás el volumen, por ejemplo,
/mnt/my-volume.
YAML
Si creas un trabajo nuevo, omite este paso. Si actualizas un trabajo existente, descarga su configuración de YAML:
gcloud run jobs describe JOB --format export > job.yaml
Configura el archivo YAML:
apiVersion: run.googleapis.com/v1 kind: Job metadata: name: JOB labels: cloud.googleapis.com/location: REGION spec: template: spec: template: spec: volumes: - name: VOLUME_NAME emptyDir: medium: Disk sizeLimit: SIZE containers: - image: IMAGE_URL volumeMounts: - name: VOLUME_NAME mountPath: MOUNT_PATHReemplaza lo siguiente:
- JOB: el nombre de tu trabajo.
- REGION: La Google Cloud región
IMAGE_URL: Es una referencia a la imagen de contenedor, por ejemplo,us-docker.pkg.dev/cloudrun/container/job:latest.- VOLUME_NAME: Es el nombre que deseas darle a tu volumen.
- SIZE: Es el tamaño del disco, por ejemplo,
10Gi. El tamaño debe ser de entre1Giy100Gipara los volúmenesephemeral-disk. - MOUNT_PATH: Es la ruta de acceso relativa en la que activarás el volumen, por ejemplo,
/mnt/my-volume.
Crea o actualiza el servicio con el siguiente comando:
gcloud run jobs replace job.yaml
El comando
gcloud run jobs replaceusa el archivojob.yamlde forma predeterminada si está presente.
Terraform
Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.
Agrega lo siguiente a un recursogoogle_cloud_run_v2_job
en tu configuración de Terraform: resource "google_cloud_run_v2_job" "default" {
name = "JOB"
location = "REGION"
deletion_protection = "true"
template {
template {
containers {
image = "IMAGE_URL"
volume_mounts {
name = "VOLUME_NAME"
mount_path = "MOUNT_PATH"
}
}
volumes {
name = "VOLUME_NAME"
empty_dir {
medium = "DISK"
size_limit = "SIZE"
}
}
}
}
lifecycle {
ignore_changes = [
launch_stage,
]
}
}
Reemplaza lo siguiente:
- JOB: el nombre de tu trabajo.
- REGION: La Google Cloud región
IMAGE_URL: Es una referencia a la imagen de contenedor, por ejemplo,us-docker.pkg.dev/cloudrun/container/job:latest.- VOLUME_NAME: Es el nombre que deseas darle a tu volumen.
- MOUNT_PATH: Es la ruta de acceso relativa en la que activarás el volumen, por ejemplo,
/mnt/my-volume. - SIZE: Es el tamaño del disco, por ejemplo,
10Gi. El tamaño debe ser de entre1Giy100Gipara los volúmenesephemeral-disk.
Leer y escribir en un volumen
Si usas la función de activación de volúmenes de Cloud Run, accedes a un volumen activado con las mismas bibliotecas en tu lenguaje de programación que usas para leer y escribir archivos en tu sistema de archivos local.
Esto es muy útil si usas un contenedor existente que espera que los datos se almacenen en el sistema de archivos local y usa operaciones regulares del sistema de archivos para acceder a él.
En los siguientes fragmentos, se supone una activación de volumen con una mountPath configurada como /mnt/my-volume.
Node.js
Usa el módulo del sistema de archivos para crear un archivo nuevo o agregarlo a uno existente
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 mantenido 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 mantenido 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");Borra y quita volúmenes y activaciones de volúmenes
Puedes borrar todos los volúmenes y sus activaciones, o bien quitar volúmenes y activaciones individuales.
Borra todos los volúmenes y sus activaciones
Para borrar todos los volúmenes y sus activaciones de tu trabajo de un solo contenedor, ejecuta el siguiente comando:
gcloud run jobs update JOB \ --clear-volumes \ --clear-volume-mounts
gcloud run jobs update JOB \ --clear-volumes \ --clear-volume-mounts \ --container=container1 \ --clear-volumes \ --clear-volume-mounts \ --container=container2 \ --clear-volumes \ --clear-volume-mounts
Quita volúmenes y activaciones de volúmenes individuales
Para quitar un volumen, también debes quitar todas las activaciones que lo usen.
Para quitar volúmenes o activaciones de volúmenes individuales, 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
Prácticas recomendadas
Sigue las prácticas recomendadas que se indican a continuación para administrar de forma eficaz los datos efímeros y optimizar el rendimiento del almacenamiento.
Copia en el almacenamiento persistente
Si quieres copiar el contenido del disco efímero en el almacenamiento persistente, como
un bucket de Cloud Storage, te recomendamos que realices copias incrementales, en lugar de depender
del período de gracia de 10 segundos de SIGTERM a SIGKILL.
Consulta Contrato del entorno de ejecución de contenedores
para obtener más información sobre los cierres forzados.
Cloud Run puede leer y escribir desde Cloud Storage sin ninguna configuración de red adicional. Para lograr un rendimiento óptimo, te recomendamos enrutar el tráfico hacia y desde Cloud Storage a través de una red de VPC con VPC directa.
Este método funciona si no necesitas que el recurso de Cloud Run acceda a Internet. Si necesitas acceso a Internet, configura Cloud NAT o consulta Tráfico interno a una API de Google.
Para configurar la salida de VPC directa con un trabajo, completa los siguientes pasos:
En la consola de Google Cloud , ve a la página de Cloud Run:
Si quieres configurar un trabajo nuevo, haz clic en la pestaña Trabajos y selecciona Implementar contenedor. Completa la página de configuración de trabajo inicial según sea necesario. Si quieres configurar un trabajo existente, haz clic en él y, luego, en Ver y editar la configuración del trabajo.
Haz clic en Contenedores, conexiones y seguridad para expandir la página de propiedades del trabajo.
Haz clic en la pestaña Conexiones.
Haz clic en Conéctate a una VPC para el tráfico saliente.
Haz clic en Enviar tráfico de forma directa a una VPC.
En el campo Red, selecciona la red de VPC a la que deseas enviar tráfico.
En el campo Subred, selecciona la subred desde la que tu trabajo recibe direcciones IP. Puedes ejecutar varios trabajos en la misma subred.
En Enrutamiento de tráfico, selecciona Enrutar todo el tráfico a la VPC para enviar todo el tráfico saliente a través de la red de VPC.
Haz clic en Crear o Actualizar.
Para verificar que tu trabajo esté en la red de VPC, haz clic en el trabajo y, luego, en la pestaña Configuración. Las redes y las subredes se detallan en la tarjeta VPC.
Habilita el Acceso privado a Google en la subred a la que te conectaste.