En esta descripción general, se presenta el controlador CSI de Cloud Storage FUSE para activar buckets de Cloud Storage como sistemas de archivos locales en Google Kubernetes Engine (GKE). Esta función es especialmente útil para las cargas de trabajo de aprendizaje automático que necesitan almacenar datos, modelos y puntos de control de entrenamiento en Cloud Storage.
Esta descripción general está dirigida a desarrolladores y científicos de datos que desean acceder a datos de entrenamiento, pesos de modelos de inferencia y puntos de control almacenados en Cloud Storage desde sus aplicaciones de Kubernetes, o bien almacenarlos allí.
Antes de leer esta página, asegúrate de estar familiarizado con Kubernetes, GKE y Cloud Storage.
Cómo funciona
El controlador usa el estándar de Container Storage Interface (CSI) para permitir que tus aplicaciones que se ejecutan en Pods accedan sin problemas a los buckets de Cloud Storage como si fueran sistemas de archivos montados. Esto significa que puedes tratar tus buckets de Cloud Storage como una fuente de datos persistente y escalable para tus aplicaciones de Kubernetes sin necesidad de realizar configuraciones complejas ni cambios en el código.
El controlador de CSI del FUSE de Cloud Storage proporciona una experiencia completamente administrada con la tecnología del complemento de CSI del FUSE de Google Cloud Storage de código abierto. El controlador CSI te permite usar la API de Kubernetes para consumir buckets de Cloud Storage preexistentes como volúmenes. Tus aplicaciones pueden subir y descargar objetos con la semántica del sistema de archivos de Cloud Storage FUSE.
El sistema de archivos en el espacio del usuario (FUSE) es una interfaz que se usa para exportar un sistema de archivos al kernel de Linux. Cloud Storage FUSE te permite activar los buckets de Cloud Storage como un sistema de archivos para que las aplicaciones puedan acceder a los objetos de un bucket con las operaciones comunes de E/S de archivos (por ejemplo, abrir, leer, escribir y cerrar) en lugar de usar las APIs específicas de Cloud.
El controlador admite de forma nativa las siguientes formas para que configures los volúmenes respaldados por Cloud Storage:
- Volúmenes efímeros de CSI: Especifica el bucket de Cloud Storage en línea con la especificación del Pod. Usa volúmenes efímeros de CSI si deseas una interfaz optimizada basada en Pods que no requiera experiencia previa con volúmenes persistentes de Kubernetes. Para usar esta opción, consulta Cómo activar buckets de Cloud Storage como volúmenes efímeros de CSI.
- PersistentVolumes: Creas un recurso PersistentVolume que hace referencia al bucket de Cloud Storage con el aprovisionamiento estático. Luego, tu Pod puede hacer referencia a una PersistentVolumeClaim vinculada a este PersistentVolume. Usa esta opción si ya conoces los PersistentVolumes y deseas mantener la coherencia con tus implementaciones existentes que dependen de este tipo de recurso. Para usar esta opción, consulta Cómo activar buckets de Cloud Storage como volúmenes persistentes.
Casos de uso
El controlador de CSI del FUSE de Cloud Storage es adecuado para las siguientes situaciones:
IA y aprendizaje automático
- Entrenamiento: Puedes usar el controlador CSI de Cloud Storage FUSE para leer datos de entrenamiento y guardar modelos de puntos de control con Cloud Storage como fuente de información. Por ejemplo, cuando se entrena un modelo en GKE con PyTorch, JAX o TensorFlow, el controlador puede proporcionar acceso a los conjuntos de datos de entrenamiento almacenados en buckets de Cloud Storage.
- Inferencia: Puedes entregar modelos de inferencia de AA que infieren resultados a partir de archivos almacenados en Cloud Storage. Puedes usar el CSI de Cloud Storage FUSE para cargar previamente los pesos del modelo almacenados en Cloud Storage. Además, puedes usar la descarga en paralelo con el almacenamiento en caché de archivos para acelerar la lectura de archivos grandes desde Cloud Storage para descargas de varios subprocesos. Puedes usar esta función para mejorar los tiempos de carga del modelo, especialmente para las lecturas de más de 1 GB.
Canalizaciones de análisis de datos
Puedes usar el controlador de CSI de Cloud Storage FUSE para optimizar las tareas de procesamiento de datos, ya que permite que las aplicaciones accedan directamente a los conjuntos de datos grandes almacenados en Cloud Storage y los analicen. Por ejemplo, un trabajo de Spark que se ejecuta en GKE podría usar el controlador de CSI para procesar datos almacenados en Cloud Storage sin necesidad de descargarlos primero.
Beneficios
El uso del controlador de CSI te brinda los siguientes beneficios:
- Fácil de configurar: El controlador de CSI de Cloud Storage FUSE implementa y administra automáticamente el controlador en los clústeres Standard y Autopilot. El uso de volúmenes efímeros de CSI simplifica la configuración y la administración de volúmenes. Esto se debe a que no se necesitan objetos PersistentVolumeClaim ni PersistentVolume.
- Seguridad: El controlador de CSI del FUSE de Cloud Storage no necesita acceso con privilegios. Esto minimiza los riesgos asociados con el acceso privilegiado y mejora la postura de seguridad. Puedes usar la federación de identidades para cargas de trabajo para GKE para administrar la autenticación, lo que te brinda un control detallado sobre cómo tus Pods acceden a los objetos de Cloud Storage.
- Rendimiento: El controlador CSI de Cloud Storage FUSE mejora el rendimiento a través de funciones como un sidecar para interacciones optimizadas, descargas paralelas para un acceso más rápido a los datos y almacenamiento en caché de metadatos y archivos para mejorar el rendimiento de lectura y reducir la latencia. Para obtener más información sobre estas funciones, consulta Opciones y funciones de ajuste del rendimiento.
- Portabilidad y flexibilidad: El controlador de CSI de Cloud Storage FUSE te permite usar la semántica del sistema de archivos estándar para activar y acceder a los buckets de Cloud Storage.
Esto proporciona una interfaz familiar que mejora la portabilidad para las cargas de trabajo de AA y evita que debas realizar cambios extensos en el código o la aplicación.
El controlador es compatible con todos los aceleradores disponibles en GKE, incluidas las GPU y las TPU. El controlador de CSI del FUSE de Cloud Storage admite los modos de acceso
ReadWriteMany
,ReadOnlyMany
yReadWriteOnce
. Puedes consumir volúmenes de Cloud Storage FUSE en contenedores init. - Administración: El controlador te permite ejecutar Cloud Storage FUSE de forma interna sin necesidad de instalarlo ni administrarlo. También puedes consultar estadísticas de métricas para Cloud Storage FUSE, incluido el uso del sistema de archivos, Cloud Storage y la caché de archivos.
Opciones y funciones de ajuste del rendimiento
El controlador CSI del FUSE de Cloud Storage incluye varias opciones de ajuste del rendimiento y funciones para optimizar la forma en que tus Pods acceden a los datos almacenados en buckets de Cloud Storage.
Por ejemplo, si habilitas el almacenamiento en caché de archivos y ajustas la simultaneidad de solicitudes, podrías reducir significativamente el tiempo que lleva cargar los datos de entrenamiento, lo que generaría tiempos de entrenamiento más rápidos.
Sidecar nativo: El controlador de CSI del FUSE de Cloud Storage adjunta un contenedor de sidecar en tus Pods para administrar las interacciones con Cloud Storage. El sidecar controla el montaje y la interacción con Cloud Storage, lo que permite que tus aplicaciones accedan a los datos sin problemas. Puedes ajustar el rendimiento configurando recursos como la CPU y la memoria para el contenedor secundario, o bien ajustando la configuración relacionada con el almacenamiento en caché y el almacenamiento en búfer. El contenedor de sidecar del controlador de CSI del FUSE de Cloud Storage y Istio pueden coexistir y ejecutarse de forma simultánea en tu Pod.
Descarga en paralelo: A partir de la versión 1.30.3-gke.1571000 de GKE y Cloud Storage FUSE v.2.4.0 con la caché de archivos habilitada, puedes usar la función de descarga en paralelo para acelerar la lectura de archivos grandes desde Cloud Storage para descargas de múltiples subprocesos. Puedes usar esta función para mejorar los tiempos de carga del modelo, en especial para las lecturas de más de 1 GB (por ejemplo, hasta el doble de rápido cuando se carga Llama 2 70B).
Compatibilidad con el almacenamiento en caché de metadatos: El controlador CSI de Cloud Storage FUSE mejora el rendimiento almacenando en caché los metadatos de los archivos, como el tamaño y la hora de modificación. El controlador de CSI habilita esta caché de stat de forma predeterminada y reduce la latencia almacenando la información de forma local en lugar de solicitarla repetidamente a Cloud Storage. Puedes configurar su tamaño máximo y la duración durante la que los datos permanecen en la caché. Si ajustas la caché de metadatos, puedes reducir las llamadas a la API de Google Cloud Storage, lo que mejora el rendimiento y la eficiencia de la aplicación, ya que se minimiza el tráfico y la latencia de la red.
Compatibilidad con el almacenamiento en caché de archivos: Puedes usar el controlador CSI de Cloud Storage FUSE con almacenamiento en caché de archivos para mejorar el rendimiento de lectura de las aplicaciones que controlan archivos pequeños de buckets de Cloud Storage. La función de caché de archivos de Cloud Storage FUSE es una caché de lectura basada en el cliente que permite que las lecturas de archivos repetidas se entreguen más rápido desde el almacenamiento en caché que elijas. Puedes elegir entre una variedad de opciones de almacenamiento para la caché de lectura, incluidos las SSD locales, el almacenamiento basado en Persistent Disk y el disco RAM, según tus necesidades de precio y rendimiento.
Compatibilidad con el reinicio de nodos: A partir de la versión 1.33.1-gke.1959000 de GKE, los Pods que usan volúmenes de CSI de GCSFuse pueden recuperarse automáticamente después de un reinicio de nodo de GKE. En los clústeres que ejecutan versiones anteriores, los Pods no se pueden recuperar y debes volver a implementarlos.
Para conocer las prácticas recomendadas de ajuste del rendimiento, consulta Cómo optimizar el controlador de CSI de Cloud Storage FUSE para el rendimiento de GKE.
Limitaciones
El controlador de CSI tiene las siguientes limitaciones:
- El sistema de archivos de Cloud Storage FUSE tiene diferencias en el rendimiento, la disponibilidad, la autorización de acceso y la semántica en comparación con un sistema de archivos POSIX.
- El controlador de CSI del FUSE de Cloud Storage no es compatible con GKE Sandbox.
- El controlador CSI del FUSE de Cloud Storage no admite instantáneas, clonación ni expansiones de volumen.
- Se requiere el acceso uniforme a nivel del bucket para las cargas de trabajo de lectura y escritura cuando se usa la federación de identidades para cargas de trabajo para GKE.
- Consulta los problemas conocidos en el proyecto de GitHub del controlador de CSI de Cloud Storage FUSE.
- Consulta los problemas abiertos en el proyecto de GitHub del controlador de CSI del FUSE de Cloud Storage.
- El controlador de CSI de Cloud Storage FUSE no admite Pods que se ejecutan en la red del host (
hostNetwork: true
) debido a las restricciones de la federación de identidades para cargas de trabajo de GKE. - Las versiones de clúster de GKE anteriores a la 1.32.3-gke.1099000 tienen un límite restrictivo en el tamaño de las cadenas
mountOption
encriptadas con JSON. La combinación del nombre del bucket, las opciones de montaje proporcionadas por el usuario y elmountOptions
proporcionado por el controlador debe tener menos de 500 caracteres. Aumentamos el umbral del mensaje JSON a 5,000 bytes en las versiones 1.32.3-gke.1099000 o posteriores del clúster de GKE.
Requisitos
Para usar el controlador de CSI del FUSE de Cloud Storage, tus clústeres deben cumplir con los siguientes requisitos de versión de GKE:
- Usa clústeres de Linux que ejecuten la versión 1.24 de GKE o una posterior.
- Tener habilitados Workload Identity Federation para GKE y el servidor de metadatos de GKE
- Usa la versión más reciente de Google Cloud CLI.
Para usar funciones específicas del controlador de CSI de Cloud Storage FUSE, también debes cumplir con estos requisitos:
Función | Requisitos de la versión de GKE |
---|---|
Imagen privada para el contenedor del archivo adicional, volumen de búfer de escritura personalizado y solicitudes de recursos del contenedor del archivo adicional | 1.27.10-gke.1055000, 1.28.6-gke.1369000, 1.29.1-gke.1575000 o versiones posteriores. |
Caché de archivos y atributos de volumen | 1.27.12-gke.1190000, 1.28.8-gke.1175000, 1.29.3-gke.1093000 o versiones posteriores |
Volúmenes de Cloud Storage FUSE en contenedores init | 1.29.3-gke.1093000 o posterior, con todos los nodos en la versión 1.29 de GKE o una posterior |
Descarga paralela | 1.29.6-gke.1254000, 1.30.2-gke.1394000 o versiones posteriores |
Métricas de Cloud Storage FUSE | 1.31.1-gke.1621000 o posterior, habilitado de forma predeterminada en 1.33.0-gke.2248000 o posterior |
Prefetch de metadatos | 1.32.1-gke.1357001 o posterior |
Operaciones de escritura por transmisión | 1.32.1-gke.1753001 o posterior, habilitado de forma predeterminada en 1.33.2-gke.1043000 o posterior |
Configura la lectura anticipada del kernel | 1.32.2-gke.1297001 o posterior |
Compatibilidad con el reinicio de nodos | 1.33.1-gke.1959000 o posterior |