Neste documento, descrevemos como ajustar automaticamente a performance do driver CSI do Cloud Storage FUSE e acelerar o acesso a dados das cargas de trabalho de IA/ML usando os perfis do Cloud Storage FUSE no Google Kubernetes Engine (GKE).
Os perfis do Cloud Storage FUSE automatizam o processo essencial de ajuste de desempenho. Em vez de ajustar as configurações manualmente, aplique perfis predefinidos que configuram o driver CSI para você. Para seus aplicativos de IA/ML, usar esses perfis pode levar a tempos de treinamento e inferência mais rápidos com redução do overhead operacional.
Este documento é destinado a desenvolvedores de aplicativos e engenheiros de machine learning (ML) que querem melhorar o desempenho dos aplicativos sem ter muita experiência em ajuste de armazenamento. Para saber mais sobre papéis comuns, consulte Funções e tarefas de usuário comuns do GKE.
Antes de ler este documento, familiarize-se com os conceitos básicos do Cloud Storage, do Kubernetes e do driver CSI do Cloud Storage FUSE. Além disso, confira os requisitos para usar o driver CSI do Cloud Storage FUSE.
Benefícios de usar perfis do Cloud Storage FUSE
Para automatizar o ajuste de performance de cargas de trabalho de IA/ML, os perfis do Cloud Storage FUSE usam configurações predefinidas do Cloud Storage FUSE e aplicam outras configurações específicas do GKE. Essas configurações são baseadas nas práticas recomendadas de ajuste de desempenho do Cloud Storage FUSE. Usar perfis predefinidos oferece os seguintes benefícios:
- Ajuste de desempenho simplificado: use perfis predefinidos do Cloud Storage FUSE para aplicar as configurações otimizadas a cargas de trabalho comuns de IA/ML, como treinamento, disponibilização e checkpoint.
- Otimização dinâmica e com reconhecimento de recursos: o uso dos perfis do Cloud Storage FUSE permite que o driver CSI ajuste automaticamente os tamanhos do cache e selecione a mídia de cache ideal, como RAM ou SSD local, com base nas características do bucket ou subdiretório, como tamanho, contagem de objetos e tipo de local, limites de sidecar e recursos disponíveis do nó.
- Performance de leitura acelerada: quando você usa o perfil
gcsfusecsi-serving, o GKE ativa automaticamente o Rapid Cache para melhorar a performance de leitura das suas cargas de trabalho de serviço. - Insights de ajuste de performance: você recebe insights sobre as decisões de ajuste automatizado com registros estruturados que detalham os indicadores de entrada do seu ambiente e as configurações resultantes aplicadas pelo driver. Para mais informações, consulte Conferir insights de recomendações.
À medida que as práticas recomendadas do Cloud Storage FUSE evoluem, os perfis são atualizados ao longo do tempo com novas versões do GKE.
Limitações
- Não é possível usar perfis do Cloud Storage FUSE com os volumes efêmeros do CSI do Cloud Storage FUSE.
- Os perfis não são compatíveis com a montagem dinâmica, em que você especifica um sublinhado (_) para ativar todos os buckets que a conta de serviço do Kubernetes pode acessar.
- Não é possível substituir a imagem do contêiner secundário por uma imagem particular personalizada. Para mais informações, consulte Configurar uma imagem particular para o contêiner sidecar.
Requisitos
- Seu cluster do GKE precisa estar executando a versão 1.35.1-gke.1616000 ou posterior.
- O cluster precisa ter o driver CSI do Cloud Storage FUSE ativado. Se você estiver criando um cluster ou ativando o driver em um cluster atual, consulte as etapas a seguir no documento para configurar o driver CSI do FUSE do Cloud Storage para o GKE:
Custos
Além dos custos padrão do GKE e do Cloud Storage associados ao driver CSI do Cloud Storage FUSE, o uso de perfis do Cloud Storage FUSE gera os seguintes custos.
Custos de verificação de bucket
Os perfis do Cloud Storage FUSE fazem uma verificação em segundo plano do seu bucket ou subdiretório. Por padrão, essa verificação ocorre a cada sete dias. A verificação de buckets gera custos de operação de classe A do Cloud Storage para listar objetos.
Custos do Rapid Cache
O perfil gcsfusecsi-serving ativa automaticamente o Rapid Cache,
que é cobrado de acordo com os preços do Rapid Cache do Cloud Storage. Para evitar cobranças por instâncias de cache quando elas não forem mais necessárias, consulte Controles de custos.
Antes de começar
Antes de começar, verifique se você realizou as tarefas a seguir:
- Ative a API Cloud Storage e a API Google Kubernetes Engine. Ativar APIs
- Se você quiser usar a Google Cloud CLI para essa tarefa,
instale e, em seguida,
inicialize a
CLI gcloud. Se você instalou a CLI gcloud anteriormente, instale a versão
mais recente executando o comando
gcloud components update. Talvez as versões anteriores da CLI gcloud não sejam compatíveis com a execução dos comandos neste documento.
- Escolha uma Cloud de Confiance by S3NS região adequada às suas necessidades. Embora recomendemos criar o cluster do GKE e o bucket do Cloud Storage na mesma região para otimizar o desempenho e o custo, isso é obrigatório ao usar o perfil
gcsfusecsi-servingou planejar ativar o Rapid Cache. - Verifique se você tem um bucket do Cloud Storage com o conjunto de dados, o modelo ou os checkpoints da sua carga de trabalho de IA/ML. Se você precisar criar um bucket, consulte Criar um bucket.
Selecione um perfil de performance
Escolha um perfil que melhor corresponda à sua carga de trabalho. Cada perfil corresponde a uma StorageClass pré-instalada no cluster. Para definições detalhadas dos perfis do Cloud Storage FUSE, consulte a referência de configuração do StorageClass correspondente.
| Perfil | Nome do StorageClass | Otimizado para | Principais recursos |
|---|---|---|---|
| Treinamento | gcsfusecsi-training |
Leituras de alta capacidade de processamento | Otimiza a latência de dados para GPUs e TPUs durante o treinamento em grandes conjuntos de dados. |
| Como estabelecer pontos de verificação | gcsfusecsi-checkpointing |
Gravações de alta capacidade de processamento | Minimiza o tempo necessário para salvar checkpoints grandes, reduzindo as pausas no treinamento. |
| Disponibilização | gcsfusecsi-serving |
Acesso e armazenamento em cache de dados | Ativa o Rapid Cache por padrão para acelerar as operações de leitura. |
Para verificar as StorageClasses instaladas no cluster, execute o seguinte comando:
kubectl get sc -l gke-gcsfuse/profile=true
configure as permissões do IAM
Conceda as permissões do agente de serviço do GKE para analisar seu bucket do Cloud Storage e gerenciar o cache rápido.
Substitua os seguintes marcadores ao executar os comandos nesta seção:
GCS_PROJECT: o ID do projeto que contém seu bucket do Cloud Storage.PROJECT_NUMBER: o número do projeto do seu projeto de cluster do GKE.BUCKET_NAME: o nome do bucket do Cloud Storage.
Escolha uma das opções a seguir que corresponda ao seu perfil e às suas necessidades de uso.
Opção A: função personalizada (recomendada)
Essa opção é obrigatória para o perfil de veiculação ou se o Rapid Cache for usado. Se você usa o perfil de veiculação ou planeja ativar manualmente o cache rápido para outros perfis, é necessário conceder permissões para gerenciar esse cache.
Crie um papel personalizado do IAM que permita verificar objetos e criar caches do Rapid Cache:
gcloud iam roles create gke.gcsfuse.profileUser \ --project=GCS_PROJECT \ --title="GKE GCSFuse Profile User" \ --description="Allows scanning Cloud Storage buckets for objects, retrieving bucket metadata, and creating caches." \ --permissions="storage.objects.list,storage.buckets.get,storage.anywhereCaches.create,storage.anywhereCaches.get,storage.anywhereCaches.list,storage.anywhereCaches.update"Vincule o papel personalizado ao agente de serviço do GKE para seu bucket específico:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --project=GCS_PROJECT \ --member="serviceAccount:service-PROJECT_NUMBER@container-engine-robot.s3ns-system.iam.gserviceaccount.com" \ --role="projects/GCS_PROJECT/roles/gke.gcsfuse.profileUser"
Opção B: função padrão para perfis de treinamento e checkpoint
Se você estiver usando apenas os perfis de treinamento ou checkpoint e não planeja usar o Rapid Cache, execute o seguinte comando:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
--project=GCS_PROJECT \
--member="serviceAccount:service-PROJECT_NUMBER@container-engine-robot.s3ns-system.iam.gserviceaccount.com" \
--role="roles/storage.legacyBucketReader"
Implantar uma carga de trabalho com um perfil do Cloud Storage FUSE
Siga estas etapas para implantar uma carga de trabalho com um perfil do Cloud Storage FUSE.
Crie um manifesto do PersistentVolume (PV) que faça referência a uma das StorageClasses de perfil do Cloud Storage FUSE:
apiVersion: v1 kind: PersistentVolume metadata: name: my-pv spec: accessModes: - ReadWriteMany capacity: storage: 5Gi persistentVolumeReclaimPolicy: Retain storageClassName: STORAGECLASS_NAME mountOptions: - only-dir=BUCKET_DIR_PATH # Optional csi: driver: gcsfuse.csi.storage.gke.io volumeHandle: BUCKET_NAMESubstitua:
STORAGECLASS_NAME: o nome do StorageClass do perfil que você quer usar. O valor precisa sergcsfusecsi-training,gcsfusecsi-checkpointingougcsfusecsi-serving.BUCKET_DIR_PATH: (opcional) o caminho no bucket do Cloud Storage, se você estiver montando um diretório específico. Se especificado, o GKE vai verificar esse caminho para otimização. Se omitido, o GKE vai verificar todo o bucket.BUCKET_NAME: o nome do bucket do Cloud Storage que você especificou ao configurar o acesso aos buckets do Cloud Storage.
Crie um PersistentVolumeClaim (PVC) que solicite a mesma StorageClass do seu PV:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-pvc namespace: NAMESPACE spec: accessModes: - ReadWriteMany resources: requests: storage: 5Gi volumeName: my-pv storageClassName: STORAGECLASS_NAMESubstitua:
NAMESPACE: o namespace em que você quer implantar o pod.STORAGECLASS_NAME: o nome do StorageClass listado no PV.
Use o PVC na implantação:
apiVersion: apps/v1 kind: Deployment metadata: name: my-deployment namespace: NAMESPACE spec: replicas: 3 selector: matchLabels: app: my-app template: metadata: labels: app: my-app annotations: gke-gcsfuse/volumes: "true" spec: serviceAccountName: KSA_NAME containers: - name: my-container image: busybox volumeMounts: - name: my-gcs-volume mountPath: "/data" volumes: - name: my-gcs-volume persistentVolumeClaim: claimName: my-pvcSubstitua:
NAMESPACE: o namespace em que você quer implantar o pod.KSA_NAME: o nome da ServiceAccount do Kubernetes que você criou ao configurar o acesso aos buckets do Cloud Storage.
Depois de implantado, o driver CSI calcula automaticamente os tamanhos ideais de cache e as opções de montagem com base nos recursos do nó, como GPUs ou TPUs, memória, SSD local, o tamanho do bucket ou subdiretório e os limites de recursos do sidecar.
Verificar a otimização automática
Os processos em segundo plano do GKE analisam automaticamente seu bucket e sincronizam o Rapid Cache (se estiver em uso).
Verificar o status da verificação do bucket e do cache
Depois de criar a PV, siga estas etapas para verificar o status da verificação do bucket e do cache. Não é necessário esperar que o pod seja implantado.
Verifique o status do PV:
kubectl describe pv my-pvNa saída, verifique se o evento
ScanOperationSucceededaparece. A resposta será semelhante a:Normal ScanOperationSucceeded gke-gcsfuse-scanner Bucket scan completed successfully for bucket "my-bucket", directory "my-dir": "526893" objects, "57690897566" bytesSe você usa o perfil
gcsfusecsi-serving, verifique se o eventoAnywhereCacheSyncSucceededaparece depois que a camada de cache estiver pronta. O resultado será o seguinte:Normal AnywhereCacheSyncSucceeded gke-gcsfuse-scanner Anywhere Cache sync succeeded for PV "my-pv": us-central1-c:runningVerifique se as anotações do PV foram atualizadas com o resultado da verificação:
gke-gcsfuse/bucket-scan-status: completed gke-gcsfuse/bucket-scan-num-objects: 526893 gke-gcsfuse/bucket-scan-total-size-bytes: 57690897566 gke-gcsfuse/bucket-scan-location-type: multi-region gke-gcsfuse/bucket-scan-hns-enabled: true gke-gcsfuse/bucket-scan-last-updated-time: 2025-12-10T22:48:38Z
Verificar o status do pod
Depois de implantar o pod, execute o seguinte comando:
kubectl get pods -n NAMESPACE
Substitua NAMESPACE pelo namespace em que você implantou os
pods.
Seus pods agora devem estar no status RUNNING, com as práticas recomendadas de performance aplicadas automaticamente. Se os pods mostrarem o status SchedulingGated, isso
indica que o GKE ainda está verificando seu bucket ou
subdiretório. Os pods permanecem nesse estado até que o controlador do CSI conclua
a verificação e atualize o PV.
Para entender as decisões específicas de ajuste registradas pelo driver depois que o pod é iniciado, consulte Ver insights de recomendação.
Se você encontrar erros, consulte a seção Solução de problemas.
Referência de configuração do StorageClass
Esta seção fornece os manifestos do StorageClass para os perfis pré-instalados do Cloud Storage FUSE e uma referência detalhada para as opções de montagem e os parâmetros usados pelos perfis. Essas configurações permitem que o driver
gcsfuse.csi.storage.gke.io automatize o ajuste de desempenho e o gerenciamento
de recursos para suas cargas de trabalho de IA/ML.
Treinamento
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: gcsfusecsi-training
labels:
gke-gcsfuse/profile: "true"
provisioner: gcsfuse.csi.storage.gke.io
mountOptions:
- profile:aiml-training
parameters:
skipCSIBucketAccessCheck: "true"
gcsfuseMetadataPrefetchOnMount: "true"
fuseFileCacheMediumPriority: "gpu:ram|lssd,tpu:ram,general_purpose:ram|lssd"
fuseMemoryAllocatableFactor: "0.7"
fuseEphemeralStorageAllocatableFactor: "0.85"
bucketScanResyncPeriod: "168h"
bucketScanTimeout: "2m"
Como estabelecer pontos de verificação
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: gcsfusecsi-checkpointing
labels:
gke-gcsfuse/profile: "true"
provisioner: gcsfuse.csi.storage.gke.io
mountOptions:
- profile:aiml-checkpointing
- read_ahead_kb=1024
parameters:
skipCSIBucketAccessCheck: "true"
gcsfuseMetadataPrefetchOnMount: "true"
fuseFileCacheMediumPriority: "gpu:ram|lssd,tpu:ram,general_purpose:ram|lssd"
fuseMemoryAllocatableFactor: "0.7"
fuseEphemeralStorageAllocatableFactor: "0.85"
bucketScanResyncPeriod: "168h"
bucketScanTimeout: "2m"
Disponibilização
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: gcsfusecsi-serving
labels:
gke-gcsfuse/profile: "true"
provisioner: gcsfuse.csi.storage.gke.io
mountOptions:
- profile:aiml-serving
- read_ahead_kb=131072
- file-cache:max-size-mb:0
- read:enable-buffered-read:true
- read:global-max-blocks:80
parameters:
anywhereCacheZones: "*"
anywhereCacheAdmissionPolicy: "admit-on-first-miss"
anywhereCacheTTL: "1h"
skipCSIBucketAccessCheck: "true"
gcsfuseMetadataPrefetchOnMount: "true"
fuseFileCacheMediumPriority: "gpu:ram|lssd,tpu:ram,general_purpose:ram|lssd"
fuseMemoryAllocatableFactor: "0.7"
fuseEphemeralStorageAllocatableFactor: "0.85"
bucketScanResyncPeriod: "168h"
bucketScanTimeout: "2m"
Os perfis usam as seguintes opções de montagem e parâmetros para o driver gcsfuse.csi.storage.gke.io:
mountOptions:profile: aplica um conjunto predefinido de otimizações do Cloud Storage FUSE adaptadas para cargas de trabalho de IA/ML. Os valores válidos para os perfis pré-instalados sãoaiml-training,aiml-checkpointingeaiml-serving.read_ahead_kb: especifica o tamanho do buffer de leitura antecipada em kilobytes (KB). Essa opção permite que o Cloud Storage FUSE faça pré-busca de dados do Cloud Storage, o que pode melhorar o desempenho de leitura para padrões de acesso sequenciais.file-cache:max-size-mb: para o perfil de veiculação, especifica o tamanho máximo em mebibytes (MiB) do cache de arquivos. Em cargas de trabalho de serviço, em que os modelos geralmente são carregados na memória da GPU ou TPU apenas uma vez, esse parâmetro é definido como0para desativar o cache de arquivos local do Cloud Storage FUSE, o que ajuda a evitar E/S de disco redundante e economiza armazenamento local.read:enable-buffered-read: para o perfil de serviço, permite que o Cloud Storage FUSE gerencie os próprios buffers internos, o que ajuda a reduzir o número de pequenas e caras chamadas de sistema entre o aplicativo e o kernel.read:global-max-blocks: para o perfil de veiculação, limita o número total de blocos de memória simultâneos usados para leituras em buffer. Essa opção ajuda a evitar que o processo do FUSE consuma toda a RAM disponível ao atender várias solicitações.
parameters:skipCSIBucketAccessCheck: quando definido como"true", faz com que o driver CSI pule a verificação inicial de acesso ao bucket. Esse parâmetro ajuda a reduzir as chamadas ao Serviço de token de segurança para evitar possíveis problemas de cota.gcsfuseMetadataPrefetchOnMount: quando definido como"true", direciona o driver CSI para iniciar o prefetching de metadados de objetos do Cloud Storage para o cache local assim que o volume é montado. Esse parâmetro pode acelerar o primeiro acesso aos arquivos.fuseFileCacheMediumPriority: define a ordem de prioridade para a mídia de armazenamento usada pelo cache de arquivos do Cloud Storage FUSE. Ele permite especificar preferências diferentes para nós com GPUs, TPUs ou de uso geral. As opções de mídia incluemramelssd(SSD local, se disponível e ativado).fuseMemoryAllocatableFactor: especifica em formato de string uma fração que limita a memória máxima que os caches do Cloud Storage FUSE podem consumir, em relação à memória total alocável do nó e ao limite de memória do sidecar.fuseEphemeralStorageAllocatableFactor: limita o uso do cache do Cloud Storage FUSE do armazenamento temporário no nó (como SSD local para cache de arquivos), em relação ao armazenamento temporário alocável do nó ou ao armazenamento temporário do sidecar limitado para armazenamento em cache.bucketScanResyncPeriod: define o intervalo de tempo em que o PV é novamente verificado para detectar mudanças feitas no bucket do Cloud Storage.bucketScanTimeout: a duração máxima permitida para uma única operação de verificação de bucket. Se a verificação exceder esse tempo, resultados parciais poderão ser usados.anywhereCacheZones: especifica uma lista separada por vírgulas de zonas compatíveis em que os caches do Rapid Cache são criados, por exemplo,"us-central1-a,us-central1-b". Para usar todas as zonas disponíveis para o cluster, use"*"como valor. Definir como"none"ou deixar sem especificação desativa o Rapid Cache.anywhereCacheTTL: o tempo de vida (TTL) dos dados armazenados no cache rápido, medido desde o último acesso. Se você mudar esse valor, as instâncias atuais do Rapid Cache serão atualizadas com o novo TTL.anywhereCacheAdmissionPolicy: determina quando admitir dados no cache rápido após uma falha de leitura (quando os dados solicitados não são encontrados no cache). As opções incluem"admit-on-first-miss", que aceita dados na primeira falha de leitura, ou"admit-on-second-miss", que aceita dados apenas em uma segunda falha de leitura para o mesmo objeto. Se você mudar esse valor, as instâncias atuais do Rapid Cache serão atualizadas com a nova política.
Opcional: ajuste as configurações de perfil
É possível personalizar configurações específicas em um perfil e ainda aproveitar a configuração básica dele. Use as opções a seguir para ajustar um perfil sem criar um novo StorageClass.
Substituir opções e parâmetros de montagem
Para modificar comportamentos específicos, adicione opções de montagem ao campo spec.mountOptions ou parâmetros de CSI ao campo spec.csi.volumeAttributes no PV.
O GKE aplica suas configurações manuais sobre os padrões do perfil.
O exemplo a seguir mostra como substituir a opção de montagem read_ahead_kb e
desativa o parâmetro gcsfuseMetadataPrefetchOnMount no perfil de serviço.
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-pv-override
spec:
accessModes:
- ReadWriteMany
capacity:
storage: 5Gi
persistentVolumeReclaimPolicy: Retain
storageClassName: gcsfusecsi-serving
mountOptions:
- read_ahead_kb=2048 # Overrides the profile's default.
csi:
driver: gcsfuse.csi.storage.gke.io
volumeHandle: my-gcs-bucket
volumeAttributes:
gcsfuseMetadataPrefetchOnMount: "false" # Overrides the profile's default.
Os casos de uso comuns incluem:
- Para ativar o Rapid Cache em um perfil de treinamento, adicione o parâmetro
anywhereCacheZonesdiretamente à especificação de PV. - Para ajustar comportamentos específicos do FUSE do Cloud Storage, como aumentar o tamanho do
read_ahead_kb, para atender aos requisitos exclusivos de uma carga de trabalho específica.
Ao configurar manualmente os tamanhos de cache, considere o seguinte:
- Especificar um tamanho de cache manual substitui o dimensionamento dinâmico automático apenas para esse componente específico. O dimensionamento dinâmico continua para todos os outros componentes da melhor maneira possível dentro do orçamento de recursos restante.
- Definir uma opção
metadata-cacheoufile-cache, comometadata-cache:stat-cache-max-size-mb, não desativa o cálculo automático para outros tipos de cache. - Se você especificar
file-cache:max-size-mbmanualmente, também precisará configurar um volume de cache de leitura personalizado. Isso ajuda a garantir que um meio de armazenamento com capacidade suficiente seja definido explicitamente para o tamanho do cache personalizado.
Ignorar a verificação de buckets com anotações
Você pode ignorar o processo automático de verificação de intervalos fornecendo suas próprias métricas de contagem e tamanho de objetos usando anotações. O driver CSI usa esses valores para calcular configurações de performance ideais sem verificar o bucket.
O exemplo a seguir mostra como adicionar a anotação gke-gcsfuse/bucket-scan-status:
"override" ao PV, junto com as anotações de métrica específicas.
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-pv-override
annotations:
gke-gcsfuse/bucket-scan-status: "override"
gke-gcsfuse/bucket-scan-num-objects: 19238
gke-gcsfuse/bucket-scan-total-size-bytes: 94837465
spec:
accessModes:
- ReadWriteMany
capacity:
storage: 5Gi
persistentVolumeReclaimPolicy: Retain
storageClassName: STORAGECLASS_NAME
csi:
driver: gcsfuse.csi.storage.gke.io
volumeHandle: BUCKET_NAME
Os casos de uso comuns incluem:
- Se você já conhece o tamanho e a contagem de objetos do bucket, principalmente para cargas de trabalho de inferência em que os dados raramente mudam, é possível ignorar o tempo de verificação na inicialização.
- Se a API Cloud Storage estiver temporariamente indisponível, essas anotações poderão ajudar você a manter o desempenho enquanto os serviços subjacentes são corrigidos.
Solução de problemas
Use as informações a seguir para monitorar o status dos perfis do Cloud Storage FUSE e resolver problemas comuns encontrados durante a verificação de buckets e a sincronização de cache.
Parâmetro de configuração inválido (InvalidArgument)
As tarefas de otimização em segundo plano não foram iniciadas porque um ou mais parâmetros fornecidos no manifesto eram inválidos.
Sintoma
A PV mostra um evento ScanOperationStartError ou AnywhereCacheSyncError com uma mensagem que contém rpc error: code = InvalidArgument. Por exemplo:
Bucket scan timeout configuration error: rpc error: code = InvalidArgument desc = invalid duration format for "INVALID_DURATION".Anywhere Cache sync failed for PV "PV_NAME": rpc error: code = InvalidArgument desc = failed to get anywhere cache "CACHE_NAME" ... invalid anywhere cache "CACHE_NAME" provided.
Causa
Um ou mais parâmetros no campo spec.csi.volumeAttributes das suas PVs estão formatados incorretamente ou contêm valores que o sistema não consegue analisar.
Resolução
Corrija os valores de parâmetro inválidos no manifesto do PV e reimplante o PV.
Verifique se todos os valores de duração (como bucketScanTimeout) usam o formato correto (por exemplo, 2m ou 10m) e se todas as configurações específicas do perfil correspondem aos valores válidos aceitos.
Permissão negada ao verificar o bucket do Cloud Storage
O GKE não consegue acessar o bucket do Cloud Storage especificado para realizar a análise de desempenho necessária.
Sintoma
A PV mostra um evento ScanOperationStartError com uma mensagem Error 403: Forbidden
indicando que o autor da chamada não tem acesso storage.buckets.get.
Causa
O agente de serviço do GKE não tem as permissões necessárias do IAM ou o nome do bucket está incorreto.
Resolução
- Verifique se o nome do bucket no campo
volumeHandleda PV está correto e se o bucket existe. - Verifique se as permissões do agente de serviço do GKE foram concedidas à identidade
service-PROJECT_NUMBER@container-engine-robot.s3ns-system.iam.gserviceaccount.compara o bucket específico. Para mais informações, consulte Configurar permissões do IAM.
Incompatibilidade de local do Rapid Cache
Não foi possível criar o cache do Rapid Cache porque a zona solicitada não é compatível com o local do bucket.
Sintoma
A PV mostra um evento AnywhereCacheSyncWarning com a mensagem: Invalid
zone. Rapid Cache isn't available in the requested zone.
Causa
Os caches do Rapid Cache precisam ser criados em zonas que residem no local regional do bucket. Esse erro geralmente ocorre quando o cluster do GKE e o bucket do Cloud Storage estão em regiões diferentes.
Resolução
Mova o bucket do Cloud Storage para uma região que corresponda ao local do cluster do GKE e reimplante o PV.
A verificação do bucket expirou
A análise do bucket do Cloud Storage levou mais tempo do que o tempo limite configurado, resultando em resultados de otimização parciais.
Sintoma
A visualização de página mostra um evento ScanOperationTimedOut. A PV é anotada com resultados parciais para a contagem de objetos e o tamanho total.
Causa
O bucket contém um número excepcionalmente grande de objetos (normalmente vários milhões) que não podem ser totalmente listados dentro do tempo limite padrão de dois minutos.
Resolução
- Defina um valor maior para o campo
bucketScanTimeoutna seçãospec.csi.volumeAttributesdo PV. Por exemplo,10m. - Se o tamanho do bucket for estático, ignore a verificação fornecendo manualmente a contagem e o tamanho do objeto.
Cache de metadados limitado pelo orçamento de memória
O driver limitou o tamanho do cache de metadados para se ajustar aos recursos disponíveis do nó, o que pode reduzir a performance.
Sintoma
Os registros contêm uma mensagem informando que o tamanho do cache de estatísticas de metadados necessário foi limitado ao orçamento de memória disponível do Cloud Storage FUSE.
Causa
O cache de metadados para o número de objetos no bucket excede a memória alocada para o sidecar do Cloud Storage FUSE ou a memória disponível do nó.
Resolução
- Use a opção de montagem
only-dirpara limitar o volume a um subdiretório menor com menos objetos. - Aumente o limite de memória do contêiner sidecar do Cloud Storage FUSE.
- Se os limites de sidecar já forem suficientes, use um tipo de nó com mais memória alocável.
Cache de arquivos desativado devido a limites de recursos
O GKE desativou o cache de arquivos local porque não foi possível encontrar um meio de armazenamento adequado com espaço suficiente.
Sintoma
Os registros mostram o aviso: No suitable file cache medium found or requirement
exceeded limits for all options.
Causa
O tamanho calculado do cache de arquivos excede a RAM disponível do nó e o armazenamento disponível do SSD local.
Resolução
- Use a opção de montagem
only-dirpara limitar o volume a um subdiretório menor com menos objetos. - Aumente os limites de recursos do sidecar do Cloud Storage FUSE.
- Use um tipo de nó com mais memória ou ative os SSDs locais no pool de nós.
Monitorar o status usando eventos do PersistentVolume
O GKE registra eventos e erros de configuração importantes no PV. Para verificar esses eventos, execute o seguinte comando:
kubectl describe pv PV_NAME
Depois que a verificação do bucket for concluída, você vai ver um evento ScanOperationSucceeded. Se você usar o perfil gcsfusecsi-serving, vai ver um evento AnywhereCacheSyncSucceeded depois que a camada de cache estiver operacional.
Monitorar o status usando registros de driver CSI
O driver CSI do Cloud Storage FUSE registra decisões de configuração detalhadas e insights de desempenho. Para conferir esses registros no Cloud Logging, use a seguinte consulta:
resource.type="k8s_container"
resource.labels.pod_name=~"gcsfusecsi-node-.*"
Ver insights de recomendação
Para entender os indicadores de entrada e as decisões específicas tomadas pela lógica de ajuste automático, pesquise nos registros do driver CSI a string GCSFuseCSIRecommendation. O payload JSON resultante fornece métricas detalhadas, incluindo o seguinte:
inputSignals: a contagem de objetos do bucket, o tamanho total dos dados e os recursos de nó disponíveis (RAM e armazenamento efêmero).decision: os tamanhos finais calculados do cache e o meio de armazenamento selecionado (ramoulssd).
{
"insertId": "INSERT_ID",
"jsonPayload": {
"decision": {
"fileCacheBytes": 300000000,
"fileCacheMedium": "lssd",
"metadataStatCacheBytes": 4500,
},
"target": {
"nodeName": "NODE_NAME",
"pvName": "PV_NAME",
"podName": "POD_NAME"
},
"message": "GCSFuseCSIRecommendation: Recommended cache configs for PV PV_NAME and Pod POD_NAME: FileCache: 287MiB (lssd) | MetadataStatCache: 1MiB | Expand for full details",
"inputSignals": {
"requiredFileCacheBytes": 300000000,
"fuseBudgetMemoryBytes": 187904819,
"sidecarLimitMemoryBytes": 268435456,
"nodeType": "gpu",
"bucketTotalObjects": 3,
"nodeAllocatableMemoryBytes": 191291998208,
"bucketTotalDataSizeBytes": 300000000,
"bucketLocationType": "multi-region",
"bucketHNSEnabled": true,
"sidecarLimitEphemeralStorageBytes": 0,
"requiredMetadataStatCacheBytes": 4500,
"nodeAllocatableEphemeralStorageBytes": 1317908854882,
"nodeHasEphemeralStorageLSSD": true,
"fuseBudgetEphemeralStorageBytes": 1120222526649
}
},
...
}
Limpar
Para evitar cobranças na sua conta do Cloud de Confiance by S3NS pelos recursos criados neste guia, siga estas etapas:
Exclua a implantação:
kubectl delete deployment my-deployment -n NAMESPACESubstitua
NAMESPACEpelo namespace do Kubernetes em que você criou o Deployment.Exclua o PersistentVolumeClaim:
kubectl delete pvc my-pvc -n NAMESPACESubstitua
NAMESPACEpelo namespace do Kubernetes em que você criou a PVC.Exclua o PersistentVolume:
kubectl delete pv my-pvSe você usou o perfil
gcsfusecsi-servingou ativou manualmente o Rapid Cache, siga as instruções para desativar um cache e evitar cobranças por instâncias de cache.
A seguir
- Saiba mais sobre o driver CSI do Cloud Storage FUSE.
- Saiba como otimizar manualmente o driver CSI do Cloud Storage FUSE para performance.