Usar el controlador de interfaz de almacenamiento de contenedor de vSphere

En este documento se explica cómo usar el controlador de interfaz de almacenamiento de contenedores (CSI) de vSphere con Google Distributed Cloud.

Información general

El controlador CSI de vSphere se despliega automáticamente al instalar Google Distributed Cloud (solo software) para VMware. Para obtener información sobre cómo usar otros controladores de CSI, consulta Instalar un controlador de CSI.

Requisitos de vSphere

Para usar el controlador de CSI para vSphere, debes tener lo siguiente:

Expansión de volumen

  • Para ampliar el volumen sin conexión, vCenter Server y ESXi deben tener la versión 7.0 Update 1 o una posterior.

  • Para ampliar el volumen online, tanto vCenter Server como ESXi deben tener la versión 7.0 Update 2 o una posterior.

Captura de volumen

Para crear una copia de seguridad de un volumen, tanto vCenter Server como ESXi deben tener la versión 7.0 Update 3 o una posterior.

Cns.Searchable

Tu cuenta de usuario de vCenter debe tener el privilegio Cns.Searchable en el objeto raíz de vCenter.

Si no sabes si tu cuenta cumple los requisitos previos de CSI, ejecuta gkectl diagnose cluster antes de implementar cualquier carga de trabajo de CSI.

Verificar que el controlador está instalado

Cuando el controlador de CSI para vSphere se instala en el clúster de usuarios, se crea un objeto StorageClass llamado standard-rwo.

Lista los objetos StorageClass:

kubectl --kubeconfig CLUSTER_KUBECONFIG get storageclass

Sustituye CLUSTER_KUBECONFIG por la ruta del archivo kubeconfig de tu clúster.

Comprueba que standard-rwo aparezca en el resultado. Por ejemplo:

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

Verifica que el controlador de CSI para vSphere esté instalado:

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

El resultado debe indicar que el controlador está disponible en todos los nodos del clúster. Por ejemplo:

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

Aprovisionar volúmenes

Para aprovisionar volúmenes con el controlador de CSI para vSphere, define el campo storageClassName de tu PersistentVolumeClaim como standard-rwo.

Configurar la clase de almacenamiento predeterminada

Para definir standard-rwo como clase de almacenamiento predeterminada, consulta Clase de almacenamiento predeterminada.

Usar una captura para restaurar un volumen

Consulta Restaurar un volumen a partir de una captura.

Crear StorageClasses adicionales

Puede crear StorageClasses de CSI de vSphere adicionales en su clúster mediante los parámetros datastoreurl o storagepolicyname.

En el siguiente ejemplo se usa el 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 el valor correcto del parámetro datastoreurl, ejecuta el siguiente comando:

govc datastore.info DATASTORE_NAME

Sustituye DATASTORE_NAME por el nombre de tu almacén de datos de vSphere.

Usa el valor de URL de la salida de datastoreurl. Un ejemplo de salida sería el siguiente:

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

Limpieza de volúmenes

Los volúmenes aprovisionados por el controlador CSI de vSphere no se eliminan cuando se elimina un clúster de usuario. Debes eliminar todos los PVCs y los StatefulSets antes de eliminar el clúster. Para eliminar tus volúmenes, ejecuta el siguiente comando:

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

Sustituye MY_NAMESPACE por tu espacio de nombres de Kubernetes.

Si has eliminado un clúster de usuarios sin eliminar sus volúmenes, puedes encontrar los volúmenes en la interfaz de usuario de vSphere:

  1. Selecciona un almacén de datos.

  2. Vaya a Monitor > Almacenamiento nativo de la nube > Volúmenes de contenedor.

  3. En la sección Detalles de cada volumen, puedes ver el nombre del clúster de Kubernetes.

Inhabilitar el controlador de CSI para vSphere

Para quitar la compatibilidad con vSphere CSI, añade lo siguiente a la configuración del clúster de usuarios:

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

Siguientes pasos