Criar e usar um volume com suporte de uma instância do Parallelstore no Google Kubernetes Engine


O Parallelstore só está disponível por convite. Se você quiser solicitar acesso ao Parallelstore no seu projeto do Google Cloud, entre em contato com seu representante de vendas.

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.

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.

  1. (Opcional) Crie um StorageClass.
  2. Usar um PersistentVolumeClaim para acessar o volume.
  3. (Opcional) Configurar recursos para o contêiner de arquivo secundário.
  4. 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:

  1. 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.

  2. 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.

  1. 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-class
    

    Substitua 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).

  2. 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 o gke-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.

  1. 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
    
  2. 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