En esta descripción general, se presenta el controlador de 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 de entrenamiento, modelos y puntos de control en Cloud Storage.
Esta descripción general está destinada 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 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 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 una configuración compleja ni cambios de código.
El controlador de CSI de Cloud Storage FUSE proporciona una experiencia completamente administrada con la tecnología de el complemento de CSI de Cloud Storage FUSE de Google Cloud 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 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, abiertas, de lectura, de escritura) 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 Activa buckets de Cloud Storage como volúmenes efímeros de CSI.
- PersistentVolumes: Crea un recurso PersistentVolume que haga referencia a l 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 estás familiarizado con PersistentVolumes y deseas coherencia con tus implementaciones existentes que dependen de este tipo de recurso. Para usar esta opción, consulta Activa buckets de Cloud Storage como volúmenes persistentes.
Casos de uso
El controlador de CSI de Cloud Storage FUSE es adecuado para situaciones como las siguientes:
IA y aprendizaje automático
- Entrenamiento: Puedes usar el controlador de CSI de Cloud Storage FUSE para leer datos de entrenamiento y modelos guardados de puntos de control 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 conjuntos de datos de entrenamiento almacenados en buckets de Cloud Storage.
- Inferencia: Puedes entregar modelos de inferencia de AA que infieran resultados de archivos almacenados en Cloud Storage. Puedes usar Cloud Storage FUSE CSI para cargar previamente los pesos del modelo almacenados en Cloud Storage. Además, puedes usar la descarga paralela con caché de archivos para acelerar la lectura de archivos grandes de Cloud Storage para descargas de subprocesos múltiples. Puedes usar esta función para mejorar los tiempos de carga del modelo, en especial para 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 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 clústeres de Standard y Autopilot. El uso de volúmenes efímeros de CSI simplifica la configuración y la administración del volumen. Esto se debe a que no se necesitan objetos PersistentVolumeClaim ni PersistentVolume.
- Seguridad: El controlador de CSI de Cloud Storage FUSE no necesita acceso con privilegios. Esto minimiza los riesgos asociados con el acceso con privilegios y conduce a una mejor postura de seguridad. Puedes usar 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: Para las cargas de trabajo de IA o AA, puedes usar perfiles predefinidos de Cloud Storage FUSE para el entrenamiento, la entrega y la creación de puntos de control para ajustar automáticamente el rendimiento según tu carga de trabajo y la configuración del nodo. El controlador de CSI de Cloud Storage FUSE también 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 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 buckets de Cloud Storage y acceder a estos.
Esto proporciona una interfaz familiar que mejora la portabilidad para las cargas de trabajo de AA y evita la necesidad de 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 TPUs. El controlador de CSI de Cloud Storage FUSE admite los
ReadWriteMany,ReadOnlyMany, yReadWriteOncemodos de acceso. 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 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 de rendimiento
El controlador de CSI de Cloud Storage FUSE incluye varias opciones y funciones de ajuste de rendimiento 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, puedes reducir significativamente el tiempo que lleva cargar los datos de entrenamiento, lo que genera tiempos de entrenamiento más rápidos.
Sidecar nativo: El controlador de CSI de Cloud Storage FUSE adjunta 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. Puedes ajustar el rendimiento si configuras recursos como la CPU y la memoria para el contenedor sidecar o si ajustas la configuración relacionada con el almacenamiento en caché y el almacenamiento en búfer. El contenedor sidecar del controlador de CSI de Cloud Storage FUSE y Istio pueden coexistir y ejecutarse de forma simultánea en tu Pod.
Descarga paralela: 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 paralela para acelerar la lectura de archivos grandes de Cloud Storage para descargas de subprocesos múltiples. Puedes usar esta función para mejorar los tiempos de carga del modelo, en especial para 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 de CSI de Cloud Storage FUSE mejora el rendimiento mediante el almacenamiento en caché de metadatos de 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 mediante el almacenamiento de 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 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 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 Cloud Storage FUSE pueden recuperarse automáticamente después de un reinicio del nodo de GKE. Si el Pod está en un nodo con el cierre ordenado de nodos habilitado, debe estar administrado por un controlador (como un trabajo o una Deployment) que reemplace los Pods con errores. Mientras tanto, los Pods independientes pueden reiniciarse automáticamente en nodos sin el cierre ordenado de nodos habilitado. En las versiones de GKE anteriores a la 1.33.1-gke.1959000, los Pods no pueden recuperarse y debes volver a implementarlos. El cierre ordenado de nodos está habilitado de forma predeterminada solo para VMs interrumpibles, VMs Spot, Confidential VMs, VMs de GPU, VMs de TPU y las series de máquinas Z3, Z4D, C3 Metal y C4.
Para conocer las prácticas recomendadas de ajuste de rendimiento, consulta Optimiza 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 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 de Cloud Storage FUSE no admite instantáneas, clonación ni expansiones de volumen.
- Se requiere acceso uniforme a nivel de bucket para las cargas de trabajo de lectura y escritura cuando se usa Workload Identity Federation for 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 de Cloud Storage FUSE.
- En las versiones de GKE anteriores a
1.33.3-gke.1226000, 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 Workload Identity Federation for GKE. Sin embargo, en los clústeres de GKE Standard con la versión1.33.3-gke.1226000o posterior, los Pods en la red del host que usan el controlador de CSI de Cloud Storage FUSE pueden usar su propia cuenta de servicio de Kubernetes para autenticarse. Para obtener más información, consulta Configura el acceso para Pods con red de host. - 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
mountOptionencriptadas con JSON. La combinación del nombre del bucket, las opciones de activación proporcionadas por el usuario y lasmountOptionsproporcionadas por el controlador deben tener menos de 500 caracteres. Aumentamos el umbral del mensaje JSON a 5,000 bytes en las versiones de clúster de GKE 1.32.3-gke.1099000 o posteriores.
Requisitos
Para usar el controlador de CSI de Cloud Storage FUSE, 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.
- Ten habilitada 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 la Google Cloud CLI.
Para usar funciones específicas del controlador de CSI de Cloud Storage FUSE, también debes cumplir con los requisitos especificados en el repositorio del controlador de CSI de Cloud Storage FUSE.
¿Qué sigue?
- Aprende a prepararte para usar el CSI de Cloud Storage FUSE para GKE.
- Soluciona problemas de Cloud Storage FUSE.
- Optimiza Cloud Storage FUSE para el rendimiento.