Usa el controlador de Container Storage Interface de vSphere

En este documento, se explica cómo usar el controlador de Container Storage Interface (CSI) de vSphere con GKE en VMware.

Descripción general

El controlador de CSI de vSphere se implementa de forma automática en GKE en VMware. Para obtener información sobre el uso de otros controladores de CSI, consulta Instala un controlador de CSI.

Requisitos de vSphere

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

Expansión de volumen

  • La expansión de volumen sin conexión requiere que la versión de vCenter Server y ESXi sea la 7.0, actualización 1, o una posterior.

  • La expansión de volumen en línea requiere que la versión de vCenter Server y ESXi sea la 7.0, actualización 2, o una posterior.

Resumen del volumen

La instantánea de volumen requiere que vCenter Server y ESXi tengan la versión 7.0 de la actualización 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 estás seguro de que tu cuenta cumple con los requisitos de CSI, ejecuta gkectl diagnose cluster antes de implementar cualquier carga de trabajo de CSI.

Verifica que el controlador esté instalado

Cuando el controlador de CSI de vSphere está instalado en tu clúster de usuarios, se crea una StorageClass llamada standard-rwo.

Genera una lista de los objetos StorageClass:

kubectl --kubeconfig CLUSTER_KUBECONFIG get storageclass

Reemplaza CLUSTER_KUBECONFIG por la ruta de acceso del archivo kubeconfig del clúster.

Verifica 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 de vSphere esté instalado:

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

El resultado debería 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

Aprovisiona vólumenes

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

Configurar la clase de almacenamiento predeterminada

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

Usa una instantánea para restablecer un volumen

Consulta Restablece un volumen a partir de una instantánea.

Crea StorageClass adicionales

Puedes crear StorageClass de CSI de vSphere adicionales en tu clúster con 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

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

Usa el valor de URL del resultado de datastoreurl. A continuación, encontrarás un resultado de ejemplo.

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 volumen

Los volúmenes aprovisionados por el controlador de CSI de vSphere no se borran cuando borras un clúster de usuario. Debes borrar todos los PVC y StatefulSets antes de borrar el clúster. Para borrar los volúmenes, ejecuta el siguiente comando:

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

Reemplaza MY_NAMESPACE por tu espacio de nombres de Kubernetes.

Si borraste un clúster de usuario sin borrar sus volúmenes, puedes encontrar los volúmenes en la interfaz de usuario de vSphere:

  1. Selecciona un almacén de datos.

  2. Navegue a Supervisa > Almacenamiento nativo de la nube > Volúmenes de contenedores.

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

Inhabilita el controlador de CSI de vSphere

Para quitar la compatibilidad con CSI de vSphere, agrega lo siguiente a la configuración de tu clúster de usuario:

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

¿Qué sigue?