En esta página, se describe cómo configurar un volumen en memoria dedicado que puedes usar para operaciones de lectura y escritura de archivos.
Esta función difiere del sistema de archivos en memoria integrado que proporciona Cloud Run, que no limita la memoria que consumen las escrituras de archivos en memoria. Con los volúmenes en memoria, puedes limitar la cantidad de memoria que se puede consumir.
Comportamiento
Después de configurar un volumen en memoria para el servicio de Cloud Run, se crea un volumen vacío para cada instancia de Cloud Run que se inicia, y existe mientras esa instancia esté en ejecución. Cuando la instancia deja de ejecutarse, los datos del volumen se borran de forma permanente.
Si especificas un límite para un volumen en memoria y luego excedes ese límite cuando escribes en el volumen, obtendrás un error de memoria insuficiente, que podrás controlar, y la instancia continuará ejecutándose. Si no especificas un límite de tamaño de volumen y, luego, excedes el límite de memoria de la instancia cuando escribes en el volumen, la instancia fallará.
La propiedad del volumen difiere según el entorno de ejecución y el tipo de implementación
Cuando activas un volumen, la identidad que posee los archivos y directorios difiere según el entorno de ejecución de la carga de trabajo y si la implementación consta de uno o varios contenedores.
En el entorno de ejecución de primera generación en el que implementas un solo contenedor, el volumen es propiedad de la identidad que se usa para el contenedor. En todos los demás casos, el volumen es propiedad de la raíz. que incluye estos productos:
- Entorno de ejecución de primera generación en el que implementas varios contenedores
- El entorno de segunda generación
Casos de uso
Los casos de uso para un volumen en memoria incluyen la asignación de espacio temporal o puntos de control a un procesamiento largo para evitar fallas.
Configura un volumen en memoria
Cualquier cambio en la configuración conlleva la creación de una revisión nueva. Las revisiones posteriores también adoptarán esta configuración de manera automática, a menos que realices actualizaciones explícitas para cambiarla.
Si especificas un límite de tamaño de memoria para el volumen, la memoria se asigna desde la memoria que usan todos los contenedores individuales en la instancia que acceden a este volumen. Si especificas un tamaño de volumen en la memoria que es mayor que la suma total de toda la memoria usada por los contenedores en la instancia, el volumen se establece de forma predeterminada en la suma total que usan los contenedores.
Si no especificas un límite de tamaño de memoria para un volumen, puedes exceder el límite de memoria de la instancia y hacer que la instancia falle.
Si usas el volumen en memoria como un volumen compartido en una implementación de varios contenedores sin especificar un límite de tamaño en la memoria, la mitad del total de la memoria de la instancia disponible se asigna para el volumen compartido. Por ejemplo, el tamaño de volumen emptyDir
= [Memoria (Contenedor A) + Memoria (Contenedor B) + Memoria (Contenedor N)]/2.
Consola
Haz clic en el servicio que deseas configurar.
Haz clic en la pestaña YAML.
Configura los atributos
volumeMounts
yvolumes
como se muestra a continuación:apiVersion: serving.knative.dev/v1 kind: Service metadata: annotations: run.googleapis.com/launch-stage: BETA name: SERVICE spec: template: metadata: spec: containers: - image: IMAGE_URL volumeMounts: - mountPath: PATH name: VOLUME_NAME volumes: - name: VOLUME_NAME emptyDir: sizeLimit: SIZE_LIMIT medium: Memory
replace
- SERVICE por el nombre del servicio de Cloud Run
- IMAGE_URL por una referencia a la imagen del contenedor, como
us-docker.pkg.dev/cloudrun/container/hello:latest
Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL tiene el formatoREGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. - PATH por la ruta de acceso relativa al volumen, por ejemplo,
/cache
. - VOLUME_NAME por el nombre que deseas usar para el volumen en memoria.
- SIZE_LIMIT por el límite de memoria que deseas asignar al volumen, en MiB o GiB (especificado como Mi o Gi), por ejemplo,
500Mi
. Este límite debe ser menor que la memoria total especificada para tus contenedores.
Haz clic en Guardar e implementar nueva revisión.
YAML
Puedes descargar y ver las configuraciones del servicio existente mediante el comando gcloud run services describe --format export
, que genera resultados limpios en formato YAML.
Luego, puedes modificar los campos que se describen a continuación y subir el YAML modificado mediante el comando gcloud run services replace
.
Asegúrate de modificar los campos tal como se indica en la documentación.
Para ver y descargar la configuración, ejecuta el siguiente comando:
gcloud run services describe SERVICE --format export > service.yaml
Configura los atributos
volumeMounts
yvolumes
como se muestra a continuación:apiVersion: serving.knative.dev/v1 kind: Service metadata: annotations: run.googleapis.com/launch-stage: BETA name: SERVICE spec: template: metadata: spec: containers: - image: IMAGE_URL volumeMounts: - mountPath: PATH name: VOLUME_NAME volumes: - name: VOLUME_NAME emptyDir: sizeLimit: SIZE_LIMIT medium: Memory
Reemplaza lo siguiente:
- SERVICE por el nombre del servicio de Cloud Run
- IMAGE_URL por una referencia a la imagen del contenedor, como
us-docker.pkg.dev/cloudrun/container/hello:latest
Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL tiene el formatoREGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. - PATH por la ruta de acceso relativa al volumen, por ejemplo,
/cache
. - VOLUME_NAME por el nombre que deseas usar para el volumen en memoria.
- SIZE_LIMIT por el límite de memoria que deseas asignar al volumen, en MiB o GiB (especificado como Mi o Gi), por ejemplo,
500Mi
. Este límite debe ser menor que la memoria total especificada para tus contenedores.
Reemplaza el servicio por la configuración nueva mediante el siguiente comando:
gcloud run services replace service.yaml