Usar o controlador da interface de armazenamento de contentores do vSphere

Este documento explica como usar o controlador da interface de armazenamento de contentores (CSI) do vSphere com o Google Distributed Cloud.

Vista geral

O controlador CSI do vSphere é implementado automaticamente quando instala o Google Distributed Cloud (apenas software) para VMware. Para ver informações sobre a utilização de outros controladores CSI, consulte o artigo Instalar um controlador CSI.

Requisitos do vSphere

Para usar o controlador CSI do vSphere, tem de ter:

Expansão do volume

  • A expansão de volume offline requer que o vCenter Server e o ESXi sejam a versão 7.0 Update 1 ou posterior

  • A expansão de volume online requer que o vCenter Server e o ESXi sejam a versão 7.0 Update 2 ou posterior.

Instantâneo de volume

A captura instantânea de volume requer que o vCenter Server e o ESXi sejam a versão 7.0 Update 3 ou posterior.

Cns.Searchable

A sua conta de utilizador do vCenter tem de ter o privilégio Cns.Searchable no objeto vCenter raiz.

Se não tiver a certeza de que a sua conta cumpre os pré-requisitos da CSI, execute o comando gkectl diagnose cluster antes de implementar quaisquer cargas de trabalho da CSI.

Confirme se o controlador está instalado

Quando o controlador CSI do vSphere é instalado no cluster de utilizador, é criada uma StorageClass denominada standard-rwo.

Liste os objetos StorageClass:

kubectl --kubeconfig CLUSTER_KUBECONFIG get storageclass

Substitua CLUSTER_KUBECONFIG pelo caminho do ficheiro kubeconfig do cluster.

Verifique se standard-rwo é apresentado no resultado. Por exemplo:

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

Verifique se o controlador CSI do vSphere está instalado:

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

O resultado deve indicar que o controlador está disponível em todos os nós do cluster. Por exemplo:

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

Volumes de aprovisionamento

Para aprovisionar volumes com o controlador CSI do vSphere, defina o campo storageClassName do seu PersistentVolumeClaim para standard-rwo.

Definir a classe de armazenamento predefinida

Para definir standard-rwo como a classe de armazenamento predefinida, consulte o artigo Classe de armazenamento predefinida.

Usar um instantâneo para restaurar um volume

Consulte o artigo Restaure um volume a partir de um instantâneo.

Criar StorageClasses adicionais

Pode criar StorageClasses CSI do vSphere adicionais no cluster através dos parâmetros datastoreurl ou storagepolicyname.

O exemplo seguinte usa o parâmetro storagepolicyname:

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 do parâmetro datastoreurl, execute o seguinte comando:

govc datastore.info DATASTORE_NAME

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

Use o valor de URL do resultado de datastoreurl. Um exemplo de resultado tem o seguinte aspeto:

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 aprovisionados pelo controlador CSI do vSphere não são eliminados quando elimina um cluster de utilizador. Deve eliminar todos os PVCs e StatefulSets antes de eliminar o cluster. Para eliminar os volumes, execute o seguinte comando:

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

Substitua MY_NAMESPACE pelo espaço de nomes do Kubernetes.

Se eliminou um cluster de utilizadores sem eliminar os respetivos volumes, pode encontrar os volumes na interface do utilizador do vSphere:

  1. Selecione um arquivo de dados.

  2. Navegue para Monitor > Armazenamento nativo da nuvem > Volumes de contentores.

  3. Na secção Detalhes de cada volume, pode ver o nome do cluster do Kubernetes.

A desativar o controlador CSI do vSphere

Para remover o suporte do CSI do vSphere, adicione o seguinte à configuração do cluster de utilizadores:

# (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

O que se segue?