Este guia descreve como criar um novo volume do Kubernetes com suporte de um driver CSI do Parallelstore no GKE com provisionamento dinâmico. Isso permite criar armazenamento com instâncias do Parallelstore totalmente gerenciadas sob demanda e acessá-las como volumes para cargas de trabalho com estado.
Antes de começar
Antes de começar, verifique se você realizou as tarefas a seguir:
- Ativar a API Google Kubernetes Engine. Ativar a API Google Kubernetes Engine
- 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
gcloud components update
.
- Consulte a visão geral do driver CSI para limitações e requisitos.
- Configurar uma rede VPC.
- Se você quiser usar um cluster padrão do GKE, ative o driver CSI.
Criar um novo volume usando o driver CSI do Parallelstore
As seções a seguir descrevem o processo típico de uso de um volume do Kubernetes compatível com um driver CSI do Parallelstore no GKE.
- (Opcional) Crie um StorageClass.
- Usar um PersistentVolumeClaim para acessar o volume.
- (Opcional) Configurar recursos para o contêiner de arquivo secundário.
- Criar uma carga de trabalho que consuma o volume.
(Opcional) Criar uma classe de armazenamento
Quando o driver CSI do Parallelstore está ativado, o GKE cria automaticamente
um StorageClass chamado parallelstore-rwx
para provisionar instâncias do
Parallelstore. Esse StorageClass direciona o driver CSI a provisionar instâncias do Parallelstore
na mesma região do cluster do GKE para garantir
o desempenho ideal de E/S.
Como alternativa, é possível criar um StorageClass personalizado com uma topologia específica. Para fazer isso, siga estas etapas:
Salve o manifesto StorageClass em um arquivo chamado
parallelstore-class.yaml
.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: parallelstore-class provisioner: parallelstore.csi.storage.gke.io volumeBindingMode: Immediate reclaimPolicy: Delete allowedTopologies: - matchLabelExpressions: - key: topology.gke.io/zone values:
LOCATION Substitua:
- LOCATION: a zona do Compute Engine que contém o cluster. É necessário especificar uma zona com suporte para o driver CSI do Parallelstore.
Para conferir a lista completa de campos aceitos no StorageClass, consulte a documentação de referência do CSI do Parallelstore.
Crie o StorageClass executando este comando:
kubectl create -f parallelstore-class.yaml
Usar um PersistentVolumeClaim para acessar o volume
É possível criar um recurso PersistentVolumeClaim que faz referência ao StorageClass do driver CSI do Parallelstore.
O arquivo de manifesto a seguir mostra um exemplo de como criar um
PersistentVolumeClaim no ReadWriteMany
modo de acesso
que faz referência ao StorageClass criado anteriormente.
Salve o manifesto em um arquivo chamado
parallelstore-pvc.yaml
.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: parallelstore-pvc spec: accessModes: - ReadWriteMany resources: requests: storage:
STORAGE_SIZE storageClassName: parallelstore-classSubstitua STORAGE_SIZE pelo tamanho de armazenamento. Por exemplo,
12000Gi
. O valor precisa estar no intervalo de 12.000 GiB a 100.000 GiB (em múltiplos de 4.000 GiB).Execute este comando para criar o PersistentVolumeClaim:
kubectl create -f parallelstore-pvc.yaml
(Opcional) Configurar recursos para o contêiner de arquivo secundário
Quando você cria um pod de carga de trabalho que usa volumes com suporte da Parallelstore, o driver CSI determina se o volume é baseado em instâncias da Parallelstore.
Se o driver detectar que o volume é baseado em Parallelstore ou se você
especificar a anotação gke-parallelstore/volumes: "true"
, o driver CSI
vai injetar automaticamente um contêiner de arquivo secundário chamado gke-parallelstore-sidecar
no
pod. Esse contêiner de arquivo secundário monta a instância do Parallelstore na sua carga de trabalho.
Por padrão, o GKE configura o contêiner do sidecar com as seguintes solicitações de recursos, com os limites de recursos não definidos:
- 250 m CPU
- 512 MiB de memória
- Armazenamento temporário de 10 MiB
Para substituir esses valores, é possível especificar a anotação gke-parallelstore/[cpu-request|memory-request|cpu-limit|memory-limit|ephemeral-storage-request]
, conforme mostrado no exemplo a seguir:
apiVersion: v1
kind: Pod
metadata:
annotations:
gke-parallelstore/volumes: "true"
gke-parallelstore/cpu-request: 500m
gke-parallelstore/memory-request: 1Gi
gke-parallelstore/ephemeral-storage-request: 500Mi
gke-parallelstore/cpu-limit: 1000m
gke-parallelstore/memory-limit: 2Gi
gke-parallelstore/ephemeral-storage-limit: 1Gi
Use as seguintes considerações ao decidir a quantidade de recursos para alocar:
- Se um dos valores de solicitação ou limite for definido e outro não, ambos serão definidos com o mesmo valor especificado.
- Aloque mais CPU para o contêiner de arquivo secundário se as cargas de trabalho precisarem de maior capacidade de processamento. CPU insuficiente causará limitação de E/S.
- É possível usar o valor "0" para cancelar a definição de qualquer limite de recursos em clusters padrão.
Por exemplo,
gke-parallelstore/memory-limit: "0"
remove o limite de memória do contêiner sidecar. Isso é útil quando não é possível decidir a quantidade de recursos que ogke-parallelstore-sidecar
precisa para as cargas de trabalho, e você quer permitir que o sidecar consuma todos os recursos disponíveis em um nó.
Criar uma carga de trabalho que consuma o volume
Esta seção mostra um exemplo de como criar um pod que consome o recurso PersistentVolumeClaim criado anteriormente.
Vários pods podem compartilhar o mesmo recurso PersistentVolumeClaim.
Salve o manifesto em um arquivo chamado
my-pod.yaml
.apiVersion: v1 kind: Pod metadata: name: my-pod spec: containers: - name: nginx image: nginx volumeMounts: - name: parallelstore-volume mountPath: /data volumes: - name: parallelstore-volume persistentVolumeClaim: claimName: parallelstore-pvc
Execute o comando a seguir para aplicar o manifesto ao cluster.
kubectl apply -f my-pod.yaml
O pod vai esperar até que o PersistentVolumeClaim seja provisionado antes de começar a ser executado. Essa operação pode demorar vários minutos para ser concluída.
Gerenciar o driver CSI do Parallelstore
Esta seção aborda como ativar e desativar o driver CSI do Parallelstore, se necessário.
Ativar o driver CSI do Parallelstore em um novo cluster
Para ativar o driver CSI do Parallelstore ao criar um novo cluster padrão, execute o comando a seguir com a CLI do Google Cloud:
gcloud container clusters create CLUSTER_NAME \
--location=LOCATION \
--network=NETWORK_NAME \
--addons=ParallelstoreCsiDriver \
--cluster-version=VERSION
Substitua:
- CLUSTER_NAME: o nome do cluster.
- LOCATION: a zona do Compute Engine que contém o cluster. É necessário especificar uma zona com suporte para o driver CSI do Parallelstore.
- NETWORK_NAME: o nome da rede VPC que você criou em Configurar uma rede VPC.
- VERSION: o número da versão do GKE.
É necessário especificar um número de versão com suporte para usar esse recurso, como
GKE versão 1.29 ou mais recente. Como alternativa, é possível usar a sinalização
--release-channel
e especificar um canal de lançamento.
Ativar o driver CSI do Parallelstore em um cluster atual
Para ativar o driver em um cluster padrão do GKE, execute o seguinte comando com a CLI do Google Cloud:
gcloud container clusters update CLUSTER_NAME \
--location=LOCATION \
--update-addons=ParallelstoreCsiDriver=ENABLED
Substitua:
- CLUSTER_NAME: o nome do cluster.
- LOCATION: a zona do Compute Engine que contém o cluster. É necessário especificar uma zona com suporte para o driver CSI do Parallelstore.
Verifique se o cluster do GKE está em execução na mesma rede VPC
configurada em Configurar uma rede VPC. Para verificar
a rede VPC de um cluster do GKE, acesse o
Console do Google Cloud ou use o comando gcloud container clusters describe $(CLUSTER) --format="value(networkConfig.network)" --location=$(LOCATION)
.
Desativar o driver CSI do Parallelstore
É possível desativar o driver CSI do Parallelstore em um cluster atual do Autopilot ou padrão usando a Google Cloud CLI.
gcloud container clusters update CLUSTER_NAME \
--location=LOCATION \
--update-addons=ParallelstoreCsiDriver=DISABLED
Substitua:
- CLUSTER_NAME: o nome do cluster.
- LOCATION: a zona do Compute Engine que contém o cluster. É necessário especificar uma zona com suporte para o driver CSI do Parallelstore.
Usar fsGroup com volumes do Parallelstore
O driver CSI do Parallelstore oferece suporte à alteração da propriedade do grupo do diretório raiz do sistema de arquivos montado para corresponder a um fsGroup solicitado pelo usuário e especificado no SecurityContext do pod. Esse recurso só tem suporte para clusters do GKE da versão 1.29.5 ou mais recente ou da versão 1.30.1 ou mais recente.
Solução de problemas
Para orientações sobre solução de problemas, consulte a página Solução de problemas na documentação do Parallelstore.
A seguir
- Confira a documentação de referência do CSI do Parallelstore.
- Aprenda a usar a biblioteca de interceptação do Parallelstore para melhorar a performance da carga de trabalho.
- Aprenda a transferir dados do Cloud Storage para o Parallelstore.
- Teste o tutorial para treinar um modelo do TensorFlow com o Keras no GKE.