Como usar o driver da interface de armazenamento de contêiner do vSphere

Neste documento, explicamos como usar o driver Interface do Container Storage (CSI) do vSphere com o GKE on VMware.

Visão geral

O driver CSI do vSphere é implantado automaticamente no GKE on VMware. Para informações sobre o uso de outros drivers CSI, consulte Como instalar um driver CSI.

Requisitos do vSphere

Para usar o driver CSI do vSphere, você precisa ter:

Expansão de volume

  • A expansão de volume off-line exige que o vCenter Server e o ESXi estejam na versão 7.0 da atualização 1 ou mais recente.

  • A expansão de volume on-line exige que o vCenter Server e o ESXi usem a versão 7.0 Update 2 ou mais recente.

Snapshot de volume

O snapshot do volume requer que o vCenter Server e o ESXi usem a versão 7.0 Update 3 ou mais recente.

Cns.Searchable

Sua conta de usuário do vCenter precisa ter o privilégio Cns.Searchable no objeto raiz do vCenter.

Se você não tiver certeza de que sua conta atende aos pré-requisitos do CSI, execute gkectl diagnose cluster antes de implantar as cargas de trabalho de CSI.

Verificar se o driver está instalado

Quando o driver CSI do vSphere é instalado no cluster do usuário, uma classe de armazenamento chamada standard-rwo é criada.

Liste os objetos StorageClass:

kubectl --kubeconfig CLUSTER_KUBECONFIG get storageclass

Substitua CLUSTER_KUBECONFIG pelo caminho do seu arquivo kubeconfig do cluster.

Verifique se standard-rwo aparece na saída. Exemplo:

standard                 kubernetes.io/vsphere-volume  Delete   Immediate     false      33m
standard-rwo (default)   csi.vsphere.vmware.com    Delete   Immediate     true       32m

Verifique se o driver CSI do vSphere está instalado:

kubectl --kubeconfig CLUSTER_KUBECONFIG get csinode \
    -o="custom-columns=NAME:metadata.name,DRIVERS:spec.drivers[].name"

A saída precisa indicar que o driver está disponível em todos os nós do cluster. Exemplo:

NAME     DRIVERS
node-0   csi.vsphere.vmware.com
node-1   csi.vsphere.vmware.com
node-2   csi.vsphere.vmware.com

Volume de provisionamento

Para provisionar volumes com o driver CSI do vSphere, defina o campo storageClassName de seu PersistentVolumeClaim como standard-rwo.

Como definir a classe de armazenamento padrão

Para definir standard-rwo como a classe de armazenamento padrão, consulte Classe de armazenamento padrão.

Como usar um snapshot para restaurar um volume

Consulte Restaurar um volume de um snapshot.

Como criar classes de armazenamento adicionais

É possível criar classes de armazenamento adicionais do CSI do vSphere no seu cluster usando os parâmetros datastoreurl ou storagepolicyname.

No exemplo a seguir, o parâmetro storagepolicyname é usado:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: gold
parameters:
  csi.storage.k8s.io/fstype: ext4
  storagepolicyname: "Gold Policy"
provisioner: csi.vsphere.vmware.com

Para encontrar o valor correto para o parâmetro datastoreurl, execute o seguinte comando:

govc datastore.info DATASTORE_NAME

Substitua DATASTORE_NAME pelo nome do seu repositório do vSphere.

Use o valor de URL da saída em datastoreurl. Veja abaixo um exemplo de saída:

Name:        DATASTORE_NAME
  Path:      /DATACENTER_NAME/datastore/DATASTORE_NAME
  Type:      VMFS
  URL:       ds:///vmfs/volumes/5d864fa0-7f2184d4-8eb4-3cfdfe0ce9a0/
  Capacity:  20479.8 GB
  Free:      10066.9 GB

Limpeza de volume

Os volumes provisionados pelo driver vSphere CSI não são excluídos quando você exclui um cluster de usuário. Exclua todos os PVCs e StatefulSets antes de excluir o cluster. Para excluir os volumes, execute o seguinte comando:

kubectl delete statefulsets,persistentvolumeclaims --namespace=MY_NAMESPACE --all

Substitua MY_NAMESPACE pelo namespace do Kubernetes.

Se você excluiu um cluster de usuário sem excluir os volumes, poderá encontrar os volumes na interface do usuário do vSphere:

  1. Selecione um repositório de dados.

  2. Navegue até Monitorar > Armazenamento nativo da nuvem > Volumes de contêiner.

  3. Na seção Detalhes de cada volume, é possível ver o nome do cluster do Kubernetes.

Como desativar o driver vSphere CSI

Para remover o suporte do vSphere CSI, adicione o seguinte à configuração do seu cluster de usuário:

# (Optional) Storage specification for the cluster storage:
# To disable the vSphere CSI driver, set this to true. The value is set to false by default and
# the vSphere CSI driver is enabled by default on vSphere version >= 6.7U3.
  vSphereCSIDisabled: true

A seguir