Acerca del controlador de CSI de Cloud Storage FUSE para GKE


En esta descripción general se presenta el controlador CSI Cloud Storage FUSE para montar cubos 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á dirigida a desarrolladores y científicos de datos que quieran acceder a datos de entrenamiento, pesos de modelos de inferencia y puntos de control almacenados en Cloud Storage desde sus aplicaciones de Kubernetes, o almacenar estos elementos en Cloud Storage.

Antes de leer esta página, familiarízate con Kubernetes, GKE y Cloud Storage.

Cómo funciona

El controlador usa el estándar de la interfaz de almacenamiento de contenedores (CSI) para permitir que tus aplicaciones que se ejecutan en pods accedan a los contenedores de Cloud Storage sin problemas, como si fueran sistemas de archivos montados. Esto significa que puedes tratar tus segmentos 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 CSI de FUSE de Cloud Storage proporciona una experiencia totalmente gestionada basada en el plugin CSI de FUSE de Google Cloud Storage de código abierto. El controlador de CSI te permite usar la API de Kubernetes para consumir los contenedores de Cloud Storage que ya tengas como volúmenes. Tus aplicaciones pueden subir y descargar objetos mediante la semántica del sistema de archivos de Cloud Storage FUSE.

Filesystem in Userspace (FUSE) es una interfaz que se usa para exportar un sistema de archivos al kernel de Linux. Cloud Storage FUSE te permite montar segmentos de Cloud Storage como un sistema de archivos para que las aplicaciones puedan acceder a los objetos de un segmento mediante operaciones de entrada/salida de archivos comunes (por ejemplo, abrir, leer, escribir y cerrar) en lugar de usar APIs específicas de la nube.

El controlador admite de forma nativa las siguientes formas de configurar los volúmenes respaldados por Cloud Storage:

  • Volúmenes efímeros de CSI: especifica el segmento de Cloud Storage en línea con la especificación del pod. Usa volúmenes de CSI efímeros si quieres una interfaz basada en pods optimizada que no requiera experiencia previa con volúmenes persistentes de Kubernetes. Para usar esta opción, consulta Montar segmentos de Cloud Storage como volúmenes efímeros de CSI.
  • PersistentVolumes crea un recurso PersistentVolume que hace referencia al segmento de Cloud Storage mediante el aprovisionamiento estático. Tu pod puede hacer referencia a una reclamación de volumen persistente vinculada a este volumen persistente. Usa esta opción si ya conoces PersistentVolumes y quieres que sea coherente con las implementaciones que ya tienes y que dependen de este tipo de recurso. Para usar esta opción, consulta Montar segmentos de Cloud Storage como volúmenes persistentes.

Casos prácticos

El controlador CSI de Cloud Storage FUSE es adecuado para situaciones como las siguientes:

IA y aprendizaje automático

  • Entrenamiento: puedes usar el controlador CSI de Cloud Storage FUSE para leer datos de entrenamiento y puntos de control de modelos guardados usando Cloud Storage como fuente de información veraz. Por ejemplo, al entrenar un modelo en GKE con PyTorch, JAX o TensorFlow, el controlador puede proporcionar acceso a conjuntos de datos de entrenamiento almacenados en segmentos de Cloud Storage.
  • Inferencia: puedes usar modelos de inferencia de aprendizaje automático que infieran resultados a partir de archivos almacenados en Cloud Storage. Puedes usar Cloud Storage FUSE CSI para precargar pesos de modelos almacenados en Cloud Storage. Además, puedes usar la descarga paralela con la caché de archivos para acelerar la lectura de archivos grandes de Cloud Storage en descargas multihilo. Puedes usar esta función para mejorar los tiempos de carga de los modelos, sobre todo en lecturas de más de 1 GB.

Flujos de procesamiento de analíticas de datos

Puedes usar el controlador CSI de Cloud Storage FUSE para optimizar las tareas de procesamiento de datos, ya que permite que las aplicaciones accedan directamente a grandes conjuntos de datos almacenados en Cloud Storage y los analicen. Por ejemplo, un trabajo de Spark que se ejecute en GKE podría usar el controlador CSI para procesar datos almacenados en Cloud Storage sin tener que descargarlos primero.

Ventajas

Usar el controlador de CSI te ofrece estas ventajas:

  • Fácil de configurar: el controlador de CSI de Cloud Storage FUSE se despliega y gestiona automáticamente en clústeres Estándar y Autopilot. El uso de volúmenes efímeros de CSI simplifica la configuración y la gestión de volúmenes. Esto se debe a que no se necesitan objetos PersistentVolumeClaim ni PersistentVolume.
  • Seguridad: el controlador CSI de Cloud Storage FUSE no necesita acceso con privilegios. De esta forma, se minimizan los riesgos asociados al acceso con privilegios y se mejora la seguridad. Puedes usar Workload Identity Federation para GKE para gestionar la autenticación, lo que te permite controlar de forma granular cómo acceden tus pods a los objetos de Cloud Storage.
  • Rendimiento: el controlador CSI de Cloud Storage FUSE mejora el rendimiento mediante funciones como un sidecar para optimizar las interacciones, descargas paralelas para acceder a los datos más rápido y el 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 CSI de Cloud Storage FUSE te permite usar la semántica estándar del sistema de archivos para montar y acceder a los segmentos de Cloud Storage. De esta forma, se proporciona una interfaz familiar que mejora la portabilidad de las cargas de trabajo de aprendizaje automático y no es necesario que hagas cambios importantes en el código o en 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 modos de acceso ReadWriteMany, ReadOnlyMany y ReadWriteOnce. Puedes usar volúmenes de Cloud Storage FUSE en contenedores init.
  • Facilidad de gestión: el controlador te permite ejecutar Cloud Storage FUSE sin necesidad de instalarlo ni gestionarlo. También puedes ver métricas e estadísticas de Cloud Storage FUSE, como el uso del sistema de archivos, de Cloud Storage y de la caché de archivos.

Opciones y funciones de ajuste del rendimiento

El controlador CSI de 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 segmentos de Cloud Storage.

Por ejemplo, si habilitas el almacenamiento en caché de archivos y ajustas la simultaneidad de las solicitudes, puedes reducir significativamente el tiempo que se tarda en cargar los datos de entrenamiento, lo que se traduce en tiempos de entrenamiento más rápidos.

  • Sidecar nativo: el controlador CSI de Cloud Storage FUSE adjunta un contenedor sidecar a tus pods para gestionar las interacciones con Cloud Storage. El sidecar se encarga del montaje y la interacción con Cloud Storage, lo que permite que tus aplicaciones accedan a los datos sin problemas. Puedes optimizar el rendimiento configurando recursos como la CPU y la memoria del contenedor sidecar, o bien ajustando los ajustes relacionados con el almacenamiento en caché y el almacenamiento en búfer. El contenedor auxiliar del controlador CSI de FUSE de Cloud Storage y Istio pueden coexistir y ejecutarse simultáneamente en tu pod.

  • Descarga paralela: a partir de la versión 1.30.3-gke.1571000 de GKE y de Cloud Storage FUSE 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 en descargas multiproceso. Puedes usar esta función para mejorar los tiempos de carga de los modelos, sobre todo en el caso de las lecturas de más de 1 GB (por ejemplo, hasta el doble de rápido al cargar 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 CSI habilita esta caché de estadísticas 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 las aplicaciones al minimizar 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 el almacenamiento en caché de archivos para mejorar el rendimiento de lectura de las aplicaciones que gestionan archivos pequeños de los segmentos de Cloud Storage. La función de caché de archivos FUSE de Cloud Storage es una caché de lectura basada en el cliente que permite que las lecturas repetidas de archivos se sirvan más rápidamente desde el almacenamiento en caché que elijas. Puedes elegir entre varias opciones de almacenamiento para la caché de lectura, como SSDs locales, almacenamiento basado en discos persistentes y discos RAM, en función de 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 reiniciar un nodo de GKE. En los clústeres que ejecutan versiones anteriores, los pods no se pueden recuperar y debes volver a implementarlos.

Para consultar las prácticas recomendadas de ajuste del rendimiento, consulta el artículo Optimizar el controlador CSI de Cloud Storage FUSE para mejorar el rendimiento de GKE.

Limitaciones

El controlador de CSI tiene estas limitaciones:

  • El sistema de archivos Cloud Storage FUSE tiene diferencias en cuanto a rendimiento, disponibilidad, autorización de acceso y semántica en comparación con un sistema de archivos POSIX.
  • El controlador CSI de FUSE de Cloud Storage no es compatible con GKE Sandbox.
  • El controlador CSI de FUSE de Cloud Storage no admite instantáneas, clonaciones ni expansiones de volúmenes.
  • El acceso uniforme a nivel de segmento es obligatorio para las cargas de trabajo de lectura y escritura cuando se usa Workload Identity Federation para GKE.
  • Consulta los problemas conocidos en el proyecto de GitHub del controlador CSI de FUSE de Cloud Storage.
  • Consulta los problemas abiertos en el proyecto de GitHub del controlador CSI de Cloud Storage FUSE.
  • En las versiones de GKE anteriores a la 1.33.3-gke.1226000, el controlador CSI de Cloud Storage FUSE no admite pods que se ejecuten en la red de host (hostNetwork: true) debido a las restricciones de Workload Identity Federation for GKE. Sin embargo, en los clústeres de GKE estándar con la versión 1.33.3-gke.1226000 o posterior, los pods de la red del host que usan el controlador CSI de Cloud Storage FUSE pueden usar su propia cuenta de servicio de Kubernetes para autenticarse. Para obtener más información, consulta Configurar el acceso para pods con la red del 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 mountOption cifradas con JSON. La combinación del nombre del contenedor, las opciones de montaje proporcionadas por el usuario y el mountOptions proporcionado por el controlador debe tener menos de 500 caracteres. Hemos aumentado el umbral de mensajes JSON a 5000 bytes en las versiones 1.32.3-gke.1099000 o posteriores de los clústeres de GKE.

Requisitos

Para usar el controlador CSI de Cloud Storage FUSE, tus clústeres deben cumplir los siguientes requisitos de versión de GKE:

Para usar funciones específicas del controlador CSI de FUSE de Cloud Storage, también debes cumplir estos requisitos:

Función Requisitos de la versión de GKE
Imagen privada para el contenedor secundario, volumen de búfer de escritura personalizado y solicitudes de recursos del contenedor secundario 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 versión posterior, con todos los nodos en GKE 1.29 o una versión 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 una versión posterior, habilitada de forma predeterminada en 1.33.0-gke.2248000 o una versión posterior.
Prefetch de metadatos 1.32.1-gke.1357001 o versiones posteriores.
Escrituras de streaming 1.32.1-gke.1753001 o una versión posterior, habilitada de forma predeterminada en 1.33.2-gke.4655000 o una versión posterior.
Configurar la lectura anticipada del kernel 1.32.2-gke.1297001 o una versión posterior.
Compatibilidad con el reinicio de nodos 1.33.1-gke.1959000 o versiones posteriores.
Compatibilidad con el montaje del mismo segmento de Cloud Storage en el mismo pod mediante diferentes PersistentVolumes 1.33.0-gke.1932000 o una versión posterior.
Compatibilidad con redes de anfitrión 1.33.3-gke.1226000 o versiones posteriores (solo en clústeres estándar).

Siguientes pasos