Este guia descreve como se conectar a uma instância do Parallelstore com o driver CSI do Parallelstore do GKE usando o provisionamento estático. Isso permite acessar instâncias do Parallelstore totalmente gerenciadas como volumes para cargas de trabalho com estado, de maneira controlada e previsível.
Antes de começar
Antes de começar, veja se você realizou as seguintes tarefas:
- Ative a API Parallelstore 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 gcloud CLI anteriormente, instale a versão
mais recente executando
gcloud components update
.
- Consulte a visão geral do driver CSI para limitações e requisitos.
- Crie uma instância do Parallelstore, se ainda não tiver feito isso.
- Configurar uma rede VPC.
- Se você quiser usar um cluster padrão do GKE, ative o driver CSI.
Acessar uma instância do Parallelstore usando o driver CSI do Parallelstore
Se você já provisionou uma instância do Parallelstore na mesma rede do cluster do GKE, siga estas instruções para provisionar estaticamente um PersistentVolume que se refere à sua instância.
As seções a seguir descrevem o processo típico de acesso a uma instância do Parallelstore usando o driver CSI do Parallelstore:
- Crie um PersistentVolume que se refira à instância do Parallelstore.
- 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.
Criar um PersistentVolume
Esta seção mostra um exemplo de como criar um PersistentVolume que faz referência a uma instância do Parallelstore.
Execute o comando a seguir para localizar a instância do Parallelstore.
gcloud beta parallelstore instances list \ --project=PROJECT_ID \ --location=LOCATION
Substitua:
- PROJECT_ID: o ID do projeto do Google Cloud .
- LOCATION: a zona do Compute Engine que contém o cluster. É necessário especificar uma zona com suporte para o driver CSI do Parallelstore.
A saída será parecida com esta: Anote o nome da instância da Parallelstore e os pontos de acesso IP antes de prosseguir para a próxima etapa.
NAME capacity DESCRIPTION CREATE_TIME UPDATE_TIME STATE network RESERVED_IP_RANGE ACCESS_POINTS projects/my-project/locations/us-central1-a/instances/pvc-eff1ed02-a8ed-48d2-9902-bd70a2d60563 12000 2024-03-06T19:18:26.036463730Z 2024-03-06T19:24:44.561441556Z ACTIVE 10.51.110.2,10.51.110.4,10.51.110.3
Salve o manifesto em um arquivo chamado
parallelstore-pv.yaml
.apiVersion: v1 kind: PersistentVolume metadata: name: parallelstore-pv spec: storageClassName: "STORAGECLASS_NAME" capacity: storage: STORAGE_SIZE accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain volumeMode: Filesystem csi: driver: parallelstore.csi.storage.gke.io volumeHandle: "PROJECT_ID/LOCATION/INSTANCE_NAME/default-pool/default-container" volumeAttributes: accessPoints: ACCESS_POINTS network: NETWORK_NAME claimRef: name: parallelstore-pvc namespace: default
Substitua:
- PROJECT_ID: o ID do projeto do Google Cloud .
- LOCATION: o local da zona da sua instância do Parallelstore. É necessário especificar uma zona com suporte para o driver CSI do Parallelstore.
- INSTANCE_NAME: o nome da instância do Parallelstore. Um exemplo de valor
volumeHandle
válido é"my-project/us-central1-a/pvc-eff1ed02-a8ed-48d2-9902-bd70a2d60563/default-pool/default-container".
. - ACCESS_POINTS: os pontos de acesso da sua instância do Parallelstore, por exemplo,
10.51.110.2,10.51.110.4,10.51.110.3
. - NETWORK_NAME: a rede VPC em que a instância do Parallelstore pode ser acessada.
- STORAGECLASS_NAME: o nome do StorageClass. Pode ser uma string vazia, mas precisa corresponder à especificação no PersistentVolumeClaim.
- STORAGE_SIZE: o tamanho do armazenamento. Por exemplo,
12000Gi
.
Para conferir a lista completa de campos aceitos no objeto PersistentVolume, consulte a documentação de referência do CSI do Parallelstore.
Crie o PersistentVolume executando este comando:
kubectl apply -f parallelstore-pv.yaml
(Opcional) Montar a mesma instância do Parallelstore com opções de montagem diferentes
É possível montar a mesma instância do Parallelstore com diferentes opções de montagem. Por exemplo, é possível montar a mesma instância do Parallelstore com o armazenamento em cache ativado e desativado no mesmo pod.
Para montar a mesma instância do Parallelstore com opções de montagem diferentes, é necessário
criar um PersistentVolume para cada opção de montagem. Use a seguinte sintaxe para o campo volumeHandle
no
objeto PersistentVolume: "PROJECT_ID/LOCATION/INSTANCE_NAME/default-pool/default-container:RANDOM_SUFFIX",
em que RANDOM_SUFFIX é uma string aleatória de sua escolha.
Por exemplo: "my-project/us-central1-a/pvc-eff1ed02-a8ed-48d2-9902-bd70a2d60563/default-pool/default-container:xyz123"
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
.kind: PersistentVolumeClaim apiVersion: v1 metadata: name: parallelstore-pvc namespace: default spec: accessModes: - ReadWriteMany storageClassName: STORAGECLASS_NAME resources: requests: storage: STORAGE_SIZE
Substitua:
- STORAGECLASS_NAME: o nome do StorageClass. Ele precisa corresponder à especificação no PersistentVolume.
- STORAGE_SIZE: tamanho do armazenamento. Por exemplo,
12000Gi
. Ele precisa corresponder à especificação no PersistentVolume.
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 contêiner do sidecar é configurado com as seguintes solicitações de recursos, com os limites 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, o GKE vai definir ambos com o mesmo valor especificado.
- Aloque mais CPU para o contêiner 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 aguarda até que o GKE provisione o PersistentVolumeClaim antes de começar a ser executado. Essa operação pode levar 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.
- Saiba como usar o Populator de volume do GKE para automatizar a transferência de dados de um armazenamento de origem de bucket do Cloud Storage para um PersistentVolumeClaim de destino com suporte de uma instância do Parallelstore.
- Teste o tutorial para treinar um modelo do TensorFlow com o Keras no GKE.