Esta visão geral apresenta o driver CSI do Cloud Storage FUSE para ativar buckets do Cloud Storage como sistemas de arquivos locais no Google Kubernetes Engine (GKE). Esse recurso é especialmente útil para cargas de trabalho de machine learning que precisam armazenar dados de treinamento, modelos e checkpoints no Cloud Storage.
Esta visão geral é destinada a desenvolvedores e cientistas de dados que querem acessar ou armazenar dados de treinamento, pesos de modelos de inferência e checkpoints armazenados no Cloud Storage em aplicativos do Kubernetes.
Antes de ler esta página, familiarize-se com o Kubernetes, o GKE e o Cloud Storage.
Como funciona
O driver usa o padrão Container Storage Interface (CSI) para permitir que seus aplicativos em execução em pods acessem buckets do Cloud Storage como se fossem sistemas de arquivos ativados. Isso significa que você pode tratar seus buckets do Cloud Storage como uma fonte de dados persistente e escalonável para seus aplicativos do Kubernetes sem configurações complexas ou mudanças no código.
O driver CSI do Cloud Storage FUSE oferece uma experiência totalmente gerenciada com a tecnologia de código aberto do plug-in CSI do Google Cloud Storage FUSE. O driver CSI permite usar a API Kubernetes para consumir buckets pré-existentes do Cloud Storage como volumes. Seus aplicativos podem fazer upload e download de objetos usando a semântica do sistema de arquivos do Cloud Storage FUSE.
O sistema de arquivos no espaço do usuário (FUSE, na sigla em inglês) é uma interface usada para exportar um sistema de arquivos para o kernel do Linux. Com o Cloud Storage FUSE, é possível ativar buckets do Cloud Storage como um sistema de arquivos para que os aplicativos acessem os objetos em um bucket usando operações comuns de E/S de arquivo (por exemplo, abrir, ler, gravar e fechar) em vez de usar APIs específicas da nuvem.
O driver é compatível nativamente com as seguintes maneiras de configurar seus volumes compatíveis com o Cloud Storage:
- Volumes temporários do CSI: especifique o bucket do Cloud Storage de acordo com a especificação do pod. Use volumes temporários do CSI se quiser uma interface simplificada baseada em pods que não exija experiência anterior com volumes permanentes do Kubernetes. Para usar essa opção, consulte Montar buckets do Cloud Storage como volumes efêmeros do CSI.
- PersistentVolumes: você cria um recurso PersistentVolume que se refere ao bucket do Cloud Storage usando o provisionamento estático. Seu pod pode fazer referência a um PersistentVolumeClaim vinculado a esse PersistentVolume. Use essa opção se você já tiver familiaridade com PersistentVolumes e quiser consistência com suas implantações atuais que dependem desse tipo de recurso. Para usar essa opção, consulte Montar buckets do Cloud Storage como volumes permanentes.
Casos de uso
O driver CSI do Cloud Storage FUSE é adequado para cenários como os seguintes:
IA e machine learning
- Treinamento: é possível usar o driver CSI do Cloud Storage FUSE para ler dados de treinamento e modelos salvos de pontos de verificação usando o Cloud Storage como fonte da verdade. Por exemplo, ao treinar um modelo no GKE usando PyTorch, JAX ou TensorFlow, o driver pode fornecer acesso a conjuntos de dados de treinamento armazenados em buckets do Cloud Storage.
- Inferência: é possível veicular modelos de inferência de ML que inferem resultados de arquivos armazenados no Cloud Storage. É possível usar o CSI do Cloud Storage FUSE para pré-carregar pesos de modelo armazenados no Cloud Storage. Além disso, é possível usar o download paralelo com o cache de arquivos para acelerar a leitura de arquivos grandes do Cloud Storage para downloads multithread. Use esse recurso para melhorar os tempos de carregamento de modelos, principalmente para leituras com mais de 1 GB.
Pipelines de análise de dados
Você pode usar o driver CSI do Cloud Storage FUSE para simplificar as tarefas de processamento de dados permitindo que os aplicativos acessem e analisem diretamente grandes conjuntos de dados armazenados no Cloud Storage. Por exemplo, um job do Spark em execução no GKE pode usar o driver CSI para processar dados armazenados no Cloud Storage sem precisar fazer o download primeiro.
Vantagens
O uso do driver CSI oferece estes benefícios:
- Fácil de configurar: o driver CSI do Cloud Storage FUSE implanta e gerencia automaticamente o driver em clusters Standard e Autopilot. O uso de volumes temporários do CSI simplifica a configuração e o gerenciamento de volumes. Isso porque não há necessidade de objetos PersistentVolumeClaim e PersistentVolume.
- Segurança: o driver CSI do Cloud Storage FUSE não precisa de acesso privilegiado. Isso minimiza os riscos associados ao acesso privilegiado e leva a uma postura de segurança melhor. É possível usar a federação de identidade da carga de trabalho para GKE para gerenciar a autenticação, oferecendo controle granular sobre como os pods acessam objetos do Cloud Storage.
- Performance: o driver CSI do Cloud Storage FUSE melhora o desempenho com recursos como um sidecar para interações otimizadas, downloads paralelos para acesso mais rápido aos dados e armazenamento em cache de metadados e arquivos para melhorar o desempenho de leitura e reduzir a latência. Para saber mais sobre esses recursos, consulte Opções e recursos de ajuste de desempenho.
- Portabilidade e flexibilidade:o driver CSI do Cloud Storage FUSE permite usar a semântica padrão do sistema de arquivos para montar e acessar buckets do Cloud Storage.
Isso oferece uma interface familiar que melhora a portabilidade para cargas de trabalho de ML
e evita a necessidade de fazer mudanças extensas no código ou no aplicativo.
O driver é compatível com todos os aceleradores disponíveis no GKE, incluindo GPUs e TPUs. O driver CSI do Cloud Storage FUSE é compatível com os modos de acesso
ReadWriteMany
,ReadOnlyMany
eReadWriteOnce
. É possível consumir os volumes do Cloud Storage FUSE em contêineres init. - Gerenciamento: o driver permite executar o Cloud Storage FUSE sem precisar instalar ou gerenciar. Você também pode conferir insights de métricas do Cloud Storage FUSE, incluindo o uso do sistema de arquivos, do Cloud Storage e do cache de arquivos.
Opções e recursos de ajuste de performance
O driver CSI do Cloud Storage FUSE vem com várias opções de ajuste de desempenho e recursos para otimizar como seus pods acessam os dados armazenados em buckets do Cloud Storage.
Por exemplo, ao ativar o cache de arquivos e ajustar a simultaneidade de solicitações, é possível reduzir significativamente o tempo necessário para carregar os dados de treinamento, resultando em tempos de treinamento mais rápidos.
Sidecar nativo: o driver CSI do Cloud Storage FUSE anexa um contêiner secundário nos seus pods para gerenciar interações com o Cloud Storage. O sidecar processa a montagem e a interação com o Cloud Storage, permitindo que seus aplicativos acessem dados sem problemas. É possível ajustar o desempenho configurando recursos como CPU e memória para o contêiner sidecar ou ajustando as configurações relacionadas ao cache e ao buffer. O contêiner secundário do driver CSI do Cloud Storage FUSE e o Istio podem coexistir e ser executados simultaneamente no seu pod.
Download paralelo: a partir da versão 1.30.3-gke.1571000 do GKE e do Cloud Storage FUSE v.2.4.0 com o cache de arquivos ativado, é possível usar o recurso de download paralelo para acelerar a leitura de arquivos grandes do Cloud Storage para downloads multithread. Use esse recurso para melhorar os tempos de carregamento de modelos, principalmente para leituras com mais de 1 GB (por exemplo, até o dobro da velocidade ao carregar o Llama 2 70B).
Suporte ao armazenamento em cache de metadados: o driver CSI do Cloud Storage FUSE melhora o desempenho armazenando em cache metadados de arquivos, como tamanho e horário de modificação. O driver CSI ativa esse cache de estatísticas por padrão e reduz a latência armazenando informações localmente em vez de solicitá-las repetidamente do Cloud Storage. É possível configurar o tamanho máximo e a duração em que os dados permanecem no cache. Ao ajustar o cache de metadados, é possível reduzir as chamadas de API para o Google Cloud Storage, melhorando o desempenho e a eficiência do aplicativo ao minimizar o tráfego e a latência da rede.
Suporte ao armazenamento em cache de arquivos: é possível usar o driver CSI do Cloud Storage FUSE com armazenamento em cache de arquivos para melhorar o desempenho de leitura de aplicativos que processam arquivos pequenos de buckets do Cloud Storage. O recurso de cache de arquivos do Cloud Storage FUSE é um cache de leitura baseado em cliente que permite que leituras repetidas de arquivos sejam veiculadas mais rapidamente a partir do armazenamento em cache de sua escolha. Escolha entre uma variedade de opções de armazenamento para o cache de leitura, incluindo SSDs locais, armazenamento baseado em Persistent Disk e disco RAM, de acordo com suas necessidades de preço-desempenho.
Suporte para reinicialização de nós: a partir da versão 1.33.1-gke.1959000 do GKE, os pods que usam volumes do GCSFuse CSI podem se recuperar automaticamente após a reinicialização de um nó do GKE. Para clusters que executam versões anteriores, os pods não podem ser recuperados, e é necessário fazer uma nova implantação.
Para conferir as práticas recomendadas de ajuste de desempenho, consulte Otimizar o driver CSI do Cloud Storage FUSE para o desempenho do GKE.
Limitações
O driver CSI tem estas limitações:
- O sistema de arquivos FUSE do Cloud Storage tem diferenças no desempenho, disponibilidade, autorização de acesso e semântica em comparação com um sistema de arquivos POSIX.
- O driver CSI do Cloud Storage FUSE não é compatível com o GKE Sandbox.
- O driver FUSE CSI do Cloud Storage não é compatível com snapshots, clonagem ou expansões de volume.
- O acesso uniforme no nível do bucket é obrigatório para cargas de trabalho de leitura/gravação ao usar a federação de identidade da carga de trabalho para o GKE.
- Confira os problemas conhecidos no projeto do GitHub do driver FUSE CSI do Cloud Storage.
- Confira os problemas abertos no projeto do GitHub do driver CSI do Cloud Storage FUSE.
- O driver CSI do Cloud Storage FUSE não é compatível com pods em execução na
rede do host (
hostNetwork: true
) devido a restrições da Federação de Identidade da Carga de Trabalho para GKE. - As versões do cluster do GKE anteriores a 1.32.3-gke.1099000 têm um limite restritivo no tamanho das strings
mountOption
criptografadas em JSON. A combinação do nome do bucket, das opções de montagem fornecidas pelo usuário e domountOptions
fornecido pelo driver precisa ter menos de 500 caracteres. Aumentamos o limite de mensagens JSON para 5.000 bytes nas versões 1.32.3-gke.1099000 ou mais recentes do cluster do GKE.
Requisitos
Para usar o driver CSI do Cloud Storage FUSE, os clusters precisam atender aos seguintes requisitos de versão do GKE:
- Use clusters do Linux com o GKE versão 1.24 ou posterior.
- Ative a federação de identidade da carga de trabalho para GKE e o servidor de metadados do GKE.
- Use a versão mais recente da Google Cloud CLI.
Para usar recursos específicos do driver CSI do Cloud Storage FUSE, você também precisa atender a estes requisitos:
Recurso | Requisitos da versão do GKE |
---|---|
Imagem particular para contêiner secundário, volume de gravação de buffer personalizado e solicitações de recursos do contêiner secundário | 1.27.10-gke.1055000, 1.28.6-gke.1369000, 1.29.1-gke.1575000 ou mais recente. |
Cache de arquivos, atributos de volume | 1.27.12-gke.1190000, 1.28.8-gke.1175000, 1.29.3-gke.1093000 ou mais recente. |
Volumes do Cloud Storage FUSE em contêineres init | 1.29.3-gke.1093000 ou mais recente, com todos os nós na versão 1.29 ou mais recente do GKE. |
Download paralelo | 1.29.6-gke.1254000, 1.30.2-gke.1394000 ou mais recente. |
Métricas do Cloud Storage FUSE | 1.31.1-gke.1621000 ou mais recente, ativado por padrão na versão 1.33.0-gke.2248000 ou mais recente. |
Pré-busca de metadados | 1.32.1-gke.1357001 ou mais recente. |
Gravações de streaming | 1.32.1-gke.1753001 ou mais recente, ativado por padrão na versão 1.33.2-gke.4655000 ou mais recente. |
Configurar a leitura antecipada do kernel | 1.32.2-gke.1297001 ou mais recente. |
Suporte à reinicialização de nós | 1.33.1-gke.1959000 ou mais recente. |
A seguir
- Saiba como se preparar para usar o CSI do Cloud Storage FUSE para GKE.
- Resolver problemas do Cloud Storage FUSE
- Otimizar o Cloud Storage FUSE para desempenho