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 particularmente ú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.
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 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 activados. Esto significa que puedes tratar tus buckets de Cloud Storage como una fuente de datos persistente y escalable para tus aplicaciones de Kubernetes sin cambios complejos de configuración o código.
El controlador de CSI de Cloud Storage FUSE proporciona una experiencia completamente administrada con la tecnología del complemento de CSI de FUSE de Google Cloud Storage de código abierto. El controlador de 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 mediante la semántica del sistema de archivos del FUSE de Cloud Storage.
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 de CSI efímeros 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 PersistentVolumes y deseas lograr 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 los datos de entrenamiento y crear puntos de control de los modelos guardados con Cloud Storage como fuente de información. Por ejemplo, cuando entrenas 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 publicar modelos de inferencia de IA que infieran resultados a partir de archivos almacenados en Cloud Storage. Puedes usar el CSI de Cloud Storage FUSE para precargar los pesos del modelo almacenados en Cloud Storage. Además, puedes usar la función de descarga en paralelo 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, en especial para las operaciones de lectura de más de 1 GB de tamaño.
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 y analicen directamente conjuntos de datos grandes almacenados en Cloud Storage. Por ejemplo, un trabajo de Spark que se ejecuta en GKE podría usar el controlador de CSI para procesar los 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 el controlador automáticamente en clústeres Standard y de Autopilot. El uso de volúmenes efímeros de CSI simplifica la configuración y la administración de los volúmenes. Esto se debe a que no se necesitan los objetos PersistentVolumeClaim y PersistentVolume.
- Seguridad: El controlador de CSI del FUSE de Cloud Storage no necesita acceso con privilegios. Esto minimiza los riesgos asociados con el acceso con privilegios y genera una mejor posición de seguridad. Puedes usar la Workload Identity Federation for GKE para administrar la autenticación, lo que te brinda un control detallado sobre cómo los Pods acceden a los objetos de Cloud Storage.
- Rendimiento: El controlador de CSI de Cloud Storage FUSE mejora el rendimiento a través de funciones como un contenedor lateral para interacciones optimizadas, descargas en paralelo para un acceso a los datos más rápido 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 Funciones y opciones de ajuste de 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 de 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 GPUs 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 en segundo plano sin necesidad de instalarlo ni administrarlo. También puedes ver las estadísticas de las métricas de Cloud Storage FUSE, que incluyen el uso del sistema de archivos, Cloud Storage y el almacenamiento en caché de archivos.
Opciones y funciones de ajuste del rendimiento
El controlador CSI del FUSE de Cloud Storage incluye varias opciones y funciones de ajuste de rendimiento para optimizar la forma en que tus pods acceden a los datos almacenados en los buckets de Cloud Storage.
Por ejemplo, si habilitas la caché de archivos y ajustas la simultaneidad de solicitudes, podrías reducir significativamente el tiempo que se tarda en cargar los datos de entrenamiento, lo que genera tiempos de entrenamiento más rápidos.
Sidecar nativo: El controlador de CSI del FUSE de Cloud Storage conecta un contenedor de sidecar en tus pods para administrar las interacciones con Cloud Storage. El sidecar controla la activación y la interacción con Cloud Storage, lo que permite que tus aplicaciones accedan a los datos sin problemas. Para ajustar el rendimiento, puedes configurar recursos como la CPU y la memoria para el contenedor del contenedor lateral, o bien ajustar 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 de Cloud Storage para descargas de varios 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 de tamaño (por ejemplo, hasta el doble de velocidad cuando se carga Llama 2 70B).
Compatibilidad con el almacenamiento en caché de metadatos: El controlador de CSI del FUSE de Cloud Storage 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 estadísticas de forma predeterminada y reduce la latencia almacenando información de forma local en lugar de solicitarla de forma reiterada desde Cloud Storage. Puedes configurar su tamaño máximo y la duración durante la cual los datos permanecen en la caché. Si ajustas la caché de metadatos, puedes reducir las llamadas a la API a Google Cloud Storage, lo que mejora el rendimiento y la eficiencia de la aplicación, ya que minimiza el tráfico de red y la latencia.
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 de RAM, según tus necesidades de precio y rendimiento.
Para conocer las prácticas recomendadas de ajuste de rendimiento, consulta Cómo optimizar el controlador de CSI de Cloud Storage FUSE para mejorar el rendimiento de GKE.
Limitaciones
El controlador de CSI tiene las siguientes limitaciones:
- El sistema de archivos del FUSE de Cloud Storage tiene diferencias en el rendimiento, disponibilidad, autorización de acceso y 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.
- 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 Workload Identity Federation for GKE. - Se requiere acceso uniforme a nivel de 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 del FUSE de Cloud Storage.
- Consulta los problemas abiertos en el proyecto de GitHub del controlador de CSI del FUSE de Cloud Storage.
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 habilitadas la federación de identidades para cargas de trabajo 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 los siguientes 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 una posterior, con todos los nodos en la versión 1.29 de GKE o una posterior |
Descarga en paralelo | 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 superior. |
Recuperación previa de metadatos | 1.31.3-gke.1162000 o superior. |