Esta vista geral apresenta o controlador Cloud Storage FUSE CSI para montar contentores do Cloud Storage como sistemas de ficheiros locais no Google Kubernetes Engine (GKE). Esta funcionalidade é particularmente útil para cargas de trabalho de aprendizagem automática que precisam de armazenar dados de preparação, modelos e pontos de verificação no Cloud Storage.
Esta vista geral destina-se a programadores e cientistas de dados que pretendam aceder ou armazenar dados de preparação, ponderações de modelos de inferência e pontos de verificação armazenados no Cloud Storage a partir das respetivas aplicações Kubernetes.
Antes de ler esta página, certifique-se de que conhece o Kubernetes, o GKE e o Cloud Storage.
Como funciona
O controlador usa a norma Container Storage Interface (CSI) para permitir que as suas aplicações em execução em pods acedam perfeitamente aos contentores do Cloud Storage como se fossem sistemas de ficheiros montados. Isto significa que pode tratar os seus contentores do Cloud Storage como uma origem de dados persistente e escalável para as suas aplicações Kubernetes sem configuração complexa nem alterações ao código.
O controlador CSI do Cloud Storage FUSE oferece uma experiência totalmente gerida com tecnologia do plug-in CSI do Google Cloud Storage FUSE de código aberto. O controlador CSI permite-lhe usar a API Kubernetes para consumir contentores do Cloud Storage pré-existentes como volumes. As suas aplicações podem carregar e transferir objetos através da semântica do sistema de ficheiros FUSE do Cloud Storage.
O sistema de ficheiros no espaço do utilizador (FUSE) é uma interface usada para exportar um sistema de ficheiros para o kernel do Linux. O Cloud Storage FUSE permite-lhe montar contentores do Cloud Storage como um sistema de ficheiros para que as aplicações possam aceder aos objetos num contentor através de operações comuns de E/S de ficheiros (por exemplo, abrir, ler, escrever e fechar) em vez de usar APIs específicas da nuvem.
O controlador suporta nativamente as seguintes formas de configurar os volumes suportados pelo Cloud Storage:
- Volumes efémeros da CSI: especifica o contentor do Cloud Storage na linha com a especificação do pod. Use volumes CSI efémeros se quiser uma interface simplificada baseada em pods que não exija experiência anterior com volumes persistentes do Kubernetes. Para usar esta opção, consulte o artigo Monte contentores do Cloud Storage como volumes efémeros da CSI.
- PersistentVolumes: cria um recurso PersistentVolume que faz referência ao contentor do Cloud Storage, através do aprovisionamento estático. Em seguida, o seu Pod pode fazer referência a uma PersistentVolumeClaim associada a este PersistentVolume. Use esta opção se já estiver familiarizado com os PersistentVolumes e quiser consistência com as implementações existentes que dependem deste tipo de recurso. Para usar esta opção, consulte o artigo Monte contentores do Cloud Storage como volumes persistentes.
Exemplos de utilização
O controlador CSI FUSE do Cloud Storage é adequado para cenários como os seguintes:
IA e aprendizagem automática
- Preparação: pode usar o controlador CSI FUSE do Cloud Storage para ler dados de preparação e modelos guardados de pontos de verificação usando o Cloud Storage como a fonte de verdade. Por exemplo, quando prepara um modelo no GKE com o PyTorch, o JAX ou o TensorFlow, o controlador pode fornecer acesso a conjuntos de dados de preparação armazenados em contentores do Cloud Storage.
- Inferência: pode publicar modelos de inferência de ML que inferem resultados a partir de ficheiros armazenados no Cloud Storage. Pode usar o CSI FUSE do Cloud Storage para pré-carregar pesos de modelos armazenados no Cloud Storage. Além disso, pode usar a transferência paralela com a cache de ficheiros para acelerar a leitura de ficheiros grandes do Cloud Storage para transferências com várias linhas de execução. Pode usar esta funcionalidade para melhorar os tempos de carregamento do modelo, especialmente para leituras com mais de 1 GB
Pipelines de análise de dados
Pode usar o controlador CSI FUSE do Cloud Storage para simplificar as tarefas de tratamento de dados, permitindo que as aplicações acedam diretamente e analisem grandes conjuntos de dados armazenados no Cloud Storage. Por exemplo, uma tarefa do Spark executada no GKE pode usar o controlador CSI para processar dados armazenados no Cloud Storage sem ter de os transferir primeiro.
Vantagens
A utilização do controlador CSI oferece-lhe estas vantagens:
- Fácil de configurar: o controlador CSI FUSE do Cloud Storage implementa e gere automaticamente o controlador em clusters padrão e do Autopilot. A utilização de volumes efémeros da CSI simplifica a configuração e a gestão de volumes. Isto deve-se ao facto de não haver necessidade de objetos PersistentVolumeClaim e PersistentVolume.
- Segurança: o controlador CSI do FUSE do Cloud Storage não precisa de acesso privilegiado. Isto minimiza os riscos associados ao acesso privilegiado e resulta numa melhor postura de segurança. Pode usar a Workload Identity Federation para o GKE para gerir a autenticação, o que lhe dá um controlo detalhado sobre a forma como os seus pods acedem aos objetos do Cloud Storage.
- Desempenho: o controlador CSI FUSE do Cloud Storage melhora o desempenho através de funcionalidades como um sidecar para interações otimizadas, transferências paralelas para um acesso mais rápido aos dados e colocação em cache de metadados e ficheiros para melhorar o desempenho de leitura e reduzir a latência. Para saber mais sobre estas funcionalidades, consulte o artigo Opções e funcionalidades de otimização do desempenho.
- Portabilidade e flexibilidade: o controlador CSI do FUSE do Cloud Storage permite-lhe usar a semântica do sistema de ficheiros padrão para montar e aceder a contentores do Cloud Storage.
Isto oferece uma interface familiar que melhora a portabilidade para cargas de trabalho de AA e evita a necessidade de fazer alterações extensivas ao código ou à aplicação.
O controlador é suportado em todos os aceleradores disponíveis no GKE, incluindo GPUs e TPUs. O controlador CSI FUSE do Cloud Storage suporta os modos de acesso
ReadWriteMany
,ReadOnlyMany
eReadWriteOnce
. Pode consumir volumes FUSE do Cloud Storage em contentores init. - Facilidade de gestão: o controlador permite-lhe executar o FUSE do Cloud Storage sem ter de o instalar nem gerir. Também pode ver métricas estatísticas do Cloud Storage FUSE, incluindo o sistema de ficheiros, o Cloud Storage e a utilização da cache de ficheiros.
Opções e funcionalidades de otimização do desempenho
O controlador CSI FUSE do Cloud Storage inclui várias opções de otimização do desempenho e funcionalidades para otimizar a forma como os seus pods acedem aos dados armazenados em contentores do Cloud Storage.
Por exemplo, ao ativar o armazenamento em cache de ficheiros e ajustar a simultaneidade de pedidos, pode reduzir significativamente o tempo necessário para carregar os dados de treino, o que leva a tempos de treino mais rápidos.
Sidecar nativo: o controlador CSI FUSE do Cloud Storage associa um contentor sidecar nos seus pods para gerir as interações com o Cloud Storage. O sidecar processa a montagem e a interação com o Cloud Storage, o que permite que as suas aplicações acedam aos dados de forma integrada. Pode otimizar o desempenho configurando recursos como a CPU e a memória para o contentor auxiliar, ou ajustando as definições relacionadas com o armazenamento em cache e o armazenamento temporário. O contentor auxiliar do controlador CSI FUSE do Cloud Storage e o Istio podem coexistir e ser executados em simultâneo no seu pod.
Transferência paralela: a partir da versão 1.30.3-gke.1571000 do GKE e do Cloud Storage FUSE v.2.4.0 com a cache de ficheiros ativada, pode usar a funcionalidade de transferência paralela para acelerar a leitura de ficheiros grandes do Cloud Storage para transferências com várias linhas de execução. Pode usar esta funcionalidade para melhorar os tempos de carregamento de modelos, especialmente para leituras com mais de 1 GB (por exemplo, até duas vezes mais rápido ao carregar o Llama 2 70B).
Suporte de colocação em cache de metadados: o controlador CSI FUSE do Cloud Storage melhora o desempenho ao colocar em cache os metadados dos ficheiros, como o tamanho e a hora de modificação. O controlador CSI ativa esta cache de estatísticas por predefinição e reduz a latência armazenando informações localmente em vez de as pedir repetidamente ao Cloud Storage. Pode configurar o tamanho máximo e a duração durante a qual os dados permanecem na cache. Ao otimizar a cache de metadados, pode reduzir as chamadas API para o Google Cloud Storage, melhorando o desempenho e a eficiência da aplicação através da minimização do tráfego de rede e da latência.
Suporte de colocação em cache de ficheiros: pode usar o controlador CSI do FUSE do Cloud Storage com a colocação em cache de ficheiros para melhorar o desempenho de leitura das aplicações que processam ficheiros pequenos de contentores do Cloud Storage. A funcionalidade de cache de ficheiros FUSE do Cloud Storage é uma cache de leitura baseada no cliente que permite que as leituras repetidas de ficheiros sejam fornecidas mais rapidamente a partir do armazenamento em cache à sua escolha. Pode escolher entre várias opções de armazenamento para a cache de leitura, incluindo SSDs locais, armazenamento baseado em discos persistentes e disco RAM, com base nas suas necessidades de preço/desempenho.
Suporte para reinício de nós: a partir da versão 1.33.1-gke.1959000 do GKE, os pods que usam volumes de CSI do GCSFuse podem ser recuperados automaticamente após o reinício de um nó do GKE. Para clusters que executam versões anteriores, os pods não conseguem recuperar e tem de voltar a implementá-los.
Para ver as práticas recomendadas de otimização do desempenho, consulte o artigo Otimize o controlador CSI FUSE do Cloud Storage para o desempenho do GKE.
Limitações
O controlador CSI tem as seguintes limitações:
- O sistema de ficheiros FUSE do armazenamento na nuvem tem diferenças no desempenho, na disponibilidade, na autorização de acesso e na semântica em comparação com um sistema de ficheiros POSIX.
- O controlador CSI FUSE do Cloud Storage não é suportado no GKE Sandbox.
- O controlador CSI FUSE do Cloud Storage não suporta instantâneos de volumes, clonagem de volumes nem expansões de volumes.
- O acesso uniforme ao nível do contentor é necessário para cargas de trabalho de leitura/escrita quando usa a Workload Identity Federation para o GKE.
- Consulte os problemas conhecidos no projeto do GitHub do controlador CSI do FUSE do Cloud Storage.
- Consulte os problemas abertos no projeto GitHub do controlador CSI do FUSE do Cloud Storage.
- Para versões do GKE anteriores à
1.33.3-gke.1226000
, o controlador CSI do Cloud Storage FUSE não suporta pods executados na rede do anfitrião (hostNetwork: true
) devido a restrições da Workload Identity Federation para o GKE. No entanto, nos clusters GKE padrão com a versão1.33.3-gke.1226000
ou posterior, os pods na rede do anfitrião que usam o controlador CSI do FUSE do Cloud Storage podem usar a sua própria conta de serviço do Kubernetes para autenticação. Para mais informações, consulte o artigo Configure o acesso para pods com rede de anfitrião. - As versões do cluster do GKE anteriores a 1.32.3-gke.1099000 têm um limite restritivo no tamanho das strings
mountOption
encriptadas em JSON. A combinação do nome do contentor, das opções de montagem fornecidas pelo utilizador e domountOptions
fornecido pelo controlador tem de ter menos de 500 carateres. Aumentámos o limite da mensagem JSON para 5000 bytes nas versões 1.32.3-gke.1099000 ou posteriores do cluster do GKE.
Requisitos
Para usar o controlador CSI FUSE do Cloud Storage, os seus clusters têm de cumprir os seguintes requisitos de versão do GKE:
- Use clusters Linux com a versão 1.24 ou posterior do GKE.
- Ter a federação de identidades da carga de trabalho para o GKE e o servidor de metadados do GKE ativados.
- Use a versão mais recente da CLI do Google Cloud.
Para usar funcionalidades específicas do controlador CSI FUSE do Cloud Storage, também tem de cumprir estes requisitos:
Funcionalidade | Requisitos da versão do GKE |
---|---|
Imagem privada para contentor sidecar, volume de buffer de escrita personalizado e pedidos de recursos de contentor sidecar | 1.27.10-gke.1055000, 1.28.6-gke.1369000, 1.29.1-gke.1575000 ou posterior. |
Cache de ficheiros, atributos de volume | 1.27.12-gke.1190000, 1.28.8-gke.1175000, 1.29.3-gke.1093000 ou posterior. |
Volumes FUSE do Cloud Storage em contentores init | 1.29.3-gke.1093000 ou posterior, com todos os nós na versão 1.29 ou posterior do GKE. |
Transferência paralela | 1.29.6-gke.1254000, 1.30.2-gke.1394000 ou posterior. |
Métricas do FUSE do Cloud Storage | 1.31.1-gke.1621000 ou posterior, ativado por predefinição na versão 1.33.0-gke.2248000 ou posterior. |
Pré-obtenção de metadados | 1.32.1-gke.1357001 ou posterior. |
Escritas de streaming | 1.32.1-gke.1753001 ou posterior, ativado por predefinição na versão 1.33.2-gke.4655000 ou posterior. |
Configure a leitura antecipada do kernel | 1.32.2-gke.1297001 ou posterior. |
Compatibilidade com o reinício de nós | 1.33.1-gke.1959000 ou posterior. |
Suporte para montar o mesmo contentor do Cloud Storage no mesmo pod através de diferentes volumes persistentes | 1.33.0-gke.1932000 ou posterior. |
Apoio técnico de rede do anfitrião | 1.33.3-gke.1226000 ou posterior, apenas clusters padrão. |
O que se segue?
- Saiba como se preparar para usar o CSI FUSE do Cloud Storage para o GKE.
- Resolva problemas do FUSE do armazenamento na nuvem
- Otimize o FUSE do Cloud Storage para o desempenho