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 preformatean a 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:
- Fallos de instancias
- Escalamiento de servicios
- Migración del tráfico a una revisión nueva
Los discos están dedicados a una instancia específica y no se comparten en otras instancias o revisiones. 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 esta ventana de 10 segundos para realizar operaciones de limpieza, como una ronda final de copia del contenido del disco al 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 grandes cantidades de memoria para hacer 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, el almacenamiento de datos en caché 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 almacenamiento de instancias: De forma predeterminada, cada instancia está limitada a 10 GB de espacio total. Si es necesario, solicita un aumento de la cuota.
- Límite de volumen de instancias: Cada instancia está limitada a un máximo de 10 volúmenes.
- Límite de proyecto: De forma predeterminada, cada proyecto está limitado a 100 GB por región. Si es necesario, solicita un aumento de la cuota.
Solicita un aumento de la cuota
Los proyectos que usan un disco efímero de Cloud Run en una región por primera vez reciben automáticamente 10 GB por instancia, por límite de región y 100 GB por proyecto, por límite de región.
Si necesitas capacidad adicional, debes solicitar un aumento de la cuota para tu servicio 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 GB por instancia | Solicita una cuota mayor por instancia |
| 100 GB por proyecto | Solicita una cuota mayor por proyecto |
Si quieres obtener más información para solicitar aumentos de cuota, consulta Cómo aumentar la cuota.
Limitaciones
El disco efímero solo está disponible en el entorno de ejecución de segunda generación.Rutas no permitidas
Cloud Run no te permite activar un volumen en /dev, /proc y /sys, ni en sus subdirectorios.
Regiones admitidas
La función de disco efímero está disponible en las siguientes regiones:
- Para las cargas de trabajo que no son de GPU, el disco efímero está disponible en lo siguiente:
asia-northeast1(Tokio)europe-west1(Bélgica)Bajo nivel de CO2
northamerica-northeast1(Montreal)Bajo nivel de CO2
northamerica-northeast2(Toronto)Bajo nivel de CO2
us-central1(Iowa)Bajo nivel de CO2
us-east1(Carolina del Sur)us-east4(Virginia del Norte)us-west1(Oregón)Bajo nivel de CO2
- Si usas GPU, el disco efímero está disponible en todas las regiones que admiten GPU.
Antes de comenzar
- Accede a tu Google Cloud cuenta de. 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 obtener información sobre la CPU, la memoria y la salida de red. El tamaño completo del disco aprovisionado y la vida útil 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 servicio 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 servicio de Cloud Run interactúa con Google Cloud las APIs, 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 permisos de implementación y administra el acceso.
Crea y activa un disco efímero
Puedes crear y activar un disco efímero con la Google Cloud consola de, Google Cloud CLI o Terraform:
Console
En la consola Google Cloud , ve a Cloud Run:
Selecciona Servicios en el menú de navegación de Cloud Run y haz clic en Implementar contenedor para configurar un servicio nuevo. Si quieres configurar un servicio existente, haz clic en el servicio y, luego, en Implementar y editar una nueva revisión.
Si configuras un servicio nuevo, completa la página de configuración del servicio inicial como desees y haz clic en Contenedores, herramientas de redes, seguridad para expandir la página de configuración del servicio.
Haz clic en la pestaña Contenedor.
- En Recursos, haz lo siguiente:
- Selecciona Disco efímero.
- Especifica el tamaño del disco efímero en el menú.
- Ingresa la ruta de activación.
- En Recursos, haz lo siguiente:
Haz clic en Crear o Implementar.
gcloud
Para agregar un volumen y activarlo, sigue estos pasos:
gcloud beta run services update SERVICE \
--execution-environment=gen2 \
--add-volume=name=VOLUME_NAME,type=ephemeral-disk,size=SIZE \
--add-volume-mount=volume=VOLUME_NAME,mount-path=MOUNT_PATH
Reemplaza lo siguiente:
- SERVICE: el nombre del servicio
- VOLUME_NAME: el nombre que deseas darle a tu volumen
- SIZE: el tamaño del disco, por ejemplo,
100GiEl tamaño debe ser de al menos10Gipara los volúmenesephemeral-disk. - MOUNT_PATH: la ruta de acceso relativa en la que activarás el volumen,
por ejemplo,
/mnt/my-volume.
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 ungoogle_cloud_run_v2_service
recurso en la configuración de Terraform: resource "google_cloud_run_v2_service" "default" {
name = "SERVICE"
location = "REGION"
launch_stage = "BETA"
deletion_protection = "true"
ingress = "INGRESS_TRAFFIC_ALL"
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:
- SERVICE: el nombre del servicio
- REGION: La Google Cloud región.
- IMAGE_URL: una referencia a la imagen del contenedor, por
ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latestSi usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL sigue el formato deLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. - VOLUME_NAME: el nombre que deseas darle a tu volumen
- MOUNT_PATH: la ruta de acceso relativa en la que activarás el volumen,
por ejemplo,
/mnt/my-volume. - SIZE: el tamaño del disco, por ejemplo,
100GiEl tamaño debe ser de al menos10Gipara 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.
Nodejs
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 las activaciones de volúmenes
Para borrar todos los volúmenes y sus activaciones de tu servicio de un solo contenedor, ejecuta el siguiente comando:
gcloud run services update SERVICE \ --clear-volumes --clear-volume-mounts
Si tienes varios contenedores, sigue las convenciones de la CLI de sidecars para borrar volúmenes y activaciones de volúmenes:
gcloud run services update SERVICE \ --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 services update SERVICE \ --remove-volume VOLUME_NAME \ --container=container1 \ --remove-volume-mount MOUNT_PATH \ --container=container2 \ --remove-volume-mount MOUNT_PATH
Prácticas recomendadas
Cumple con las siguientes prácticas recomendadas para administrar de manera eficaz los datos efímeros y optimizar el rendimiento del almacenamiento.
Copia al almacenamiento persistente
Si deseas copiar el contenido del disco efímero al almacenamiento persistente, como un bucket de Cloud Storage, te recomendamos que lo copies de forma incremental, en lugar de depender del período de gracia de 10 segundos de SIGTERM a SIGKILL.
Consulta el contrato del entorno de ejecución de contenedores
para obtener más información sobre los cierres de instancias.
Cloud Run puede leer y escribir desde Cloud Storage sin ninguna configuración de red adicional. Para lograr un rendimiento óptimo, te recomendamos que enrutes 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 servicio, completa los siguientes pasos:
En la Google Cloud consola, ve a la página Cloud Run:
Haz clic en Crear servicio si quieres configurar un servicio nuevo en el que realizarás la implementación. Si quieres configurar y, luego, implementar un servicio existente, haz clic en el servicio y, luego, en Implementar y editar una nueva revisión.
Si configuras un servicio nuevo, completa la página de configuración del servicio inicial como desees y haz clic en Contenedores, herramientas de redes, seguridad para expandir la página de configuración del servicio.
Haz clic en la pestaña Herramientas de redes.
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 servicio recibe direcciones IP. Puedes implementar varios servicios en la misma subred.
En Enrutamiento del 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 Implementar.
Para verificar que tu servicio esté en tu red de VPC, haz clic en el servicio y, luego, en la pestaña Herramientas de redes. Las redes y las subredes se detallan en la tarjeta VPC.
Ahora puedes enviar solicitudes desde tu servicio de Cloud Run a cualquier recurso en la red de VPC, como lo permiten las reglas de firewall.
Habilita el Acceso privado a Google en la subred a la que te conectaste.
Solucionar problemas
Si tienes problemas, verifica lo siguiente:- Si tu contenedor se está quedando sin memoria y usaste la Google Cloud consola para
implementar una nueva revisión de un servicio con un disco efímero conectado, es probable que la Google Cloud consola
haya convertido el volumen del disco en un volumen en la memoria. Esto hace que tus operaciones de escritura en el disco se escriban en la memoria, lo que provoca que tu contenedor se quede sin memoria.
Para solucionar este problema, vuelve a implementar tu servicio con gcloud CLI y asegúrate de que tu archivo YAML especifique
medium: Diskenvolumes. - Si ves velocidades de red lentas cuando descargas una gran cantidad de datos en tu disco efímero, sigue los pasos para activar la VPC directa. Si la VPC directa no está habilitada, verás velocidades de transferencia de red más lentas.