Este guia descreve como se pode ligar a uma instância do Parallelstore existente com o controlador CSI do Parallelstore do GKE com aprovisionamento estático. Isto permite-lhe aceder a instâncias do Parallelstore totalmente geridas existentes como volumes para as suas cargas de trabalho com estado, de uma forma controlada e previsível.
Antes de começar
Antes de começar, certifique-se de que realizou as seguintes tarefas:
- Ative a API Parallelstore e a API Google Kubernetes Engine. Ativar APIs
- Se quiser usar a CLI gcloud para esta tarefa,
instale-a e, em seguida,
inicialize-a. Se instalou anteriormente a CLI gcloud, execute
gcloud components update
para obter a versão mais recente.
- Consulte a vista geral do controlador CSI para ver as limitações e os requisitos.
- Crie uma instância da Parallelstore se ainda não o tiver feito.
- Configure uma rede de VPC.
- Se quiser usar um cluster padrão do GKE, certifique-se de que ativa o controlador CSI.
Aceda a uma instância do Parallelstore existente através do controlador CSI do Parallelstore
Se já aprovisionou uma instância do Parallelstore na mesma rede que o seu cluster do GKE, pode seguir estas instruções para aprovisionar estaticamente um PersistentVolume que se refere à sua instância.
As secções seguintes descrevem o processo típico de acesso a uma instância do Parallelstore existente através do controlador CSI do Parallelstore:
- Crie um PersistentVolume que faça referência à instância do Parallelstore..
- Use um PersistentVolumeClaim para aceder ao volume.
- (Opcional) Configure recursos para o contentor auxiliar.
- Crie uma carga de trabalho que consuma o volume.
Crie um PersistentVolume
Esta secção mostra um exemplo de como pode criar um PersistentVolume que faça referência a uma instância do Parallelstore existente.
Execute o seguinte comando para localizar a sua instância do Parallelstore.
gcloud beta parallelstore instances list \ --project=PROJECT_ID \ --location=LOCATION
Substitua o seguinte:
- PROJECT_ID: o Google Cloud ID do projeto.
- LOCATION: a zona do Compute Engine que contém o cluster. Tem de especificar uma zona suportada para o controlador CSI Parallelstore.
O resultado deve ser semelhante ao seguinte. Certifique-se de que anota o nome da instância do Parallelstore e os pontos de acesso IP antes de avançar para o passo seguinte.
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
Guarde o seguinte manifesto num ficheiro com o nome
parallelstore-pv.yaml
:Montagem de agrupamento
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 o seguinte:
- PROJECT_ID: o Google Cloud ID do projeto.
- LOCATION: a localização zonal da sua instância do Parallelstore. Tem de especificar uma zona suportada para o controlador CSI Parallelstore.
- INSTANCE_NAME: o nome da sua instância do Parallelstore. Um exemplo de um 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 onde a sua instância do Parallelstore pode ser acedida.
- STORAGECLASS_NAME: o nome da sua StorageClass. O valor pode ser uma string vazia, mas tem de corresponder à especificação no seu PersistentVolumeClaim.
- STORAGE_SIZE: o tamanho do armazenamento; por exemplo,
12000Gi
.
Para ver a lista completa de campos suportados no objeto PersistentVolume, consulte a documentação de referência da CSI Parallelstore.
Montagem de nós
O controlador CSI Parallelstore permite-lhe montar volumes diretamente nos seus nós. A montagem de nós é suportada em clusters do GKE na versão 1.32.3 e posteriores.
A montagem ao nível do nó permite que todos os pods num nó partilhem o mesmo ponto de montagem. A partilha do ponto de montagem melhora a escalabilidade porque o número de montagens aumenta com o número de nós e não com o número de pods (como no modo sidecar).
Como resultado, pode executar mais pods enquanto partilha a mesma instância do Parallelstore.
Nota: esta funcionalidade é ativada especificando o atributo de volume mountLocality: node. O valor predefinido para a localidade de montagem do pod é mountLocality: pod. A CPU, os pedidos de memória e os flags de limite do dfuse só funcionam com a definição mountLocality: node.
Se o valor do pedido ou do limite estiver definido e o outro não estiver definido, ambos são definidos com o mesmo valor especificado.
Pode usar "0" como valor para anular a definição de quaisquer limites de recursos. Por exemplo, dfuseMemoryLimit: '0' remove o limite de memória para o processo dfuse.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 mountLocality: node dfuseCPURequest: DFUSE_CPU_REQUEST dfuseMemoryRequest: DFUSE_MEMORY_REQUEST dfuseCPULimit: DFUSE_CPU_LIMIT dfuseMemoryLimit: DFUSE_MEMORY_LIMIT claimRef: name: parallelstore-pvc namespace: default
Substitua o seguinte:
- PROJECT_ID: o Google Cloud ID do projeto.
- LOCATION: a localização zonal da sua instância do Parallelstore. Tem de especificar uma zona suportada para o controlador CSI Parallelstore.
- INSTANCE_NAME: o nome da sua instância do Parallelstore. Um exemplo de um 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 onde a sua instância do Parallelstore pode ser acedida.
- STORAGECLASS_NAME: o nome da sua StorageClass. O valor pode ser uma string vazia, mas tem de corresponder à especificação no seu PersistentVolumeClaim.
- STORAGE_SIZE: o tamanho do armazenamento; por exemplo,
12000Gi
. - DFUSE_CPU_REQUEST: o pedido de CPU para o processo dfuse. A predefinição é
250m
. - DFUSE_MEMORY_REQUEST: o pedido de memória para o processo dfuse. A predefinição é
512Mi
. - DFUSE_CPU_LIMIT: o limite da CPU para o processo dfuse. Por predefinição, o valor não está definido.
- DFUSE_MEMORY_LIMIT: o limite de memória para o processo dfuse. A predefinição é
10Gi
.
Para ver a lista completa de campos suportados no objeto PersistentVolume, consulte a documentação de referência da CSI Parallelstore.
Execute este comando para criar o PersistentVolume:
kubectl apply -f parallelstore-pv.yaml
(Opcional) Monte a mesma instância do Parallelstore com diferentes opções de montagem
Pode montar a mesma instância do Parallelstore com diferentes opções de montagem. Por exemplo, pode montar a mesma instância do Parallelstore com a colocação em cache ativada e com a colocação em cache desativada no mesmo pod.
Para montar a mesma instância do Parallelstore com diferentes opções de montagem, tem de
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 à sua escolha.
Por exemplo: "my-project/us-central1-a/pvc-eff1ed02-a8ed-48d2-9902-bd70a2d60563/default-pool/default-container:xyz123"
Use um PersistentVolumeClaim para aceder ao volume
Pode criar um recurso PersistentVolumeClaim que faça referência à StorageClass do controlador CSI Parallelstore.
O ficheiro de manifesto seguinte mostra um exemplo de como criar um
PersistentVolumeClaim no ReadWriteMany
modo de acesso
que faz referência à StorageClass que criou anteriormente.
Guarde o seguinte manifesto num ficheiro com o nome
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 o seguinte:
- STORAGECLASS_NAME: o nome da sua StorageClass. Tem de corresponder à especificação no seu PersistentVolume.
- STORAGE_SIZE: tamanho do armazenamento; por exemplo,
12000Gi
. Tem de corresponder à especificação no seu PersistentVolume.
Execute este comando para criar o PersistentVolumeClaim:
kubectl create -f parallelstore-pvc.yaml
(Opcional) Configure recursos para o contentor sidecar
Quando cria um pod de carga de trabalho que usa volumes suportados por Parallelstore, o controlador CSI determina se o seu volume se baseia em instâncias do Parallelstore.
Se o controlador detetar que o seu volume se baseia no Parallelstore ou se especificar a anotação gke-parallelstore/volumes: "true"
, o controlador CSI injeta automaticamente um contentor sidecar denominado gke-parallelstore-sidecar
no seu pod. Este contentor auxiliar monta a instância do Parallelstore na sua carga de trabalho.
Por predefinição, o contentor auxiliar é configurado com os seguintes pedidos de recursos, com os limites de recursos não definidos:
- 250 m CPU
- 512 MiB de memória
- 10 MiB de armazenamento temporário
Para substituir estes valores, pode especificar opcionalmente a anotação
gke-parallelstore/[cpu-request|memory-request|cpu-limit|memory-limit|ephemeral-storage-request]
conforme mostrado no exemplo seguinte:
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 quando decidir a quantidade de recursos a atribuir:
- Se um dos valores de pedido ou limite estiver definido e outro não estiver definido, o GKE define ambos com o mesmo valor especificado.
- Atribua mais CPU ao contentor auxiliar se as suas cargas de trabalho precisarem de um débito mais elevado. A CPU insuficiente causa a limitação de E/S.
- Pode usar
"0"
como valor para anular a definição de quaisquer limites de recursos em clusters padrão; por exemplo,gke-parallelstore/memory-limit: "0"
remove o limite de memória para o contentor sidecar. Isto é útil quando não consegue decidir a quantidade de recursos que ogke-parallelstore-sidecar
precisa para as suas cargas de trabalho e quer permitir que o sidecar consuma todos os recursos disponíveis num nó.
Crie uma carga de trabalho que consuma o volume
Esta secção mostra um exemplo de como criar um Pod que consuma o recurso PersistentVolumeClaim que criou anteriormente.
Vários pods podem partilhar o mesmo recurso PersistentVolumeClaim.
Guarde o seguinte manifesto num ficheiro com o nome
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 seguinte comando para aplicar o manifesto ao cluster:
kubectl apply -f my-pod.yaml
O pod aguarda até que o GKE aprovisione o PersistentVolumeClaim antes de começar a ser executado. Esta operação pode demorar vários minutos a ser concluída.
Faça a gestão do controlador CSI do Parallelstore
Esta secção aborda como pode ativar e desativar o controlador CSI Parallelstore, se necessário.
Ative o controlador CSI Parallelstore num novo cluster
Para ativar o controlador CSI Parallelstore quando criar um novo cluster Standard, execute o seguinte comando com a CLI gcloud:
gcloud container clusters create CLUSTER_NAME \
--location=LOCATION \
--network=NETWORK_NAME \
--addons=ParallelstoreCsiDriver \
--cluster-version=VERSION
Substitua o seguinte:
- CLUSTER_NAME: o nome do cluster.
- LOCATION: a zona do Compute Engine que contém o cluster. Tem de especificar uma zona suportada para o controlador CSI Parallelstore.
- NETWORK_NAME: nome da rede VPC que criou em Configure uma rede VPC.
- VERSION: o número da versão do GKE.
Tem de especificar um número de versão suportado para usar esta funcionalidade, como a versão 1.29 ou posterior do GKE. Em alternativa, pode usar a flag
--release-channel
e especificar um canal de lançamento.
Ative o controlador CSI Parallelstore num cluster existente
Para ativar o controlador num cluster padrão do GKE existente, execute o seguinte comando com a CLI do Google Cloud:
gcloud container clusters update CLUSTER_NAME \
--location=LOCATION \
--update-addons=ParallelstoreCsiDriver=ENABLED
Substitua o seguinte:
- CLUSTER_NAME : o nome do seu cluster.
- LOCATION: a zona do Compute Engine que contém o cluster. Tem de especificar uma zona suportada para o controlador CSI Parallelstore.
Certifique-se de que o cluster do GKE está a ser executado na mesma rede de VPC
que configurou em Configure uma rede de VPC. Para validar a rede VPC de um cluster do GKE, pode verificar naGoogle Cloud consola ou através do comando gcloud container clusters describe $(CLUSTER) --format="value(networkConfig.network)" --location=$(LOCATION)
.
Desative o controlador CSI Parallelstore
Pode desativar o controlador CSI Parallelstore num cluster do Autopilot ou Standard existente através da Google Cloud CLI.
gcloud container clusters update CLUSTER_NAME \
--location=LOCATION \
--update-addons=ParallelstoreCsiDriver=DISABLED
Substitua o seguinte:
- CLUSTER_NAME : o nome do seu cluster.
- LOCATION: a zona do Compute Engine que contém o cluster. Tem de especificar uma zona suportada para o controlador CSI Parallelstore.
Use fsGroup com volumes Parallelstore
O controlador CSI Parallelstore suporta a alteração da propriedade do grupo do diretório de nível raiz do sistema de ficheiros montado para corresponder a um fsGroup pedido pelo utilizador especificado no SecurityContext do pod. Esta funcionalidade só é suportada em clusters do GKE com a versão 1.29.5 ou posterior, ou a versão 1.30.1 ou posterior.
Resolução de problemas
Para orientações de resolução de problemas, consulte a página Resolução de problemas na documentação do Parallelstore.
O que se segue?
- Explore a documentação de referência da CSI Parallelstore.
- Saiba como usar a biblioteca de interceção Parallelstore para melhorar o desempenho da carga de trabalho.
- Saiba como transferir dados para o Parallelstore a partir do Cloud Storage.
- Saiba como usar o GKE Volume Populator para automatizar a transferência de dados de um armazenamento de origem de contentor do Cloud Storage para um PersistentVolumeClaim de destino suportado por uma instância do Parallelstore.
- Experimente o tutorial para formar um modelo do TensorFlow com o Keras no GKE.