Utiliser le pilote Container Storage Interface (CSI) vSphere

Ce document explique comment utiliser le pilote CSI (Container Storage Interface) vSphere avec Google Distributed Cloud.

Présentation

Le pilote CSI vSphere est déployé automatiquement dans GKE sur VMware. Pour en savoir plus concernant l'utilisation d'autres pilotes CSI, consultez la section Installer un pilote CSI.

Exigences concernant vSphere

Pour utiliser le pilote CSI vSphere, vous devez avoir :

Expansion de volume

  • L'expansion de volume hors connexion nécessite que vCenter Server et ESXi soient en version 7.0 Mise à jour 1 ou une version ultérieure.

  • L'expansion de volume en ligne nécessite que vCenter Server et ESXi soient en version 7.0 Mise à jour 2 ou une version ultérieure.

Instantané de volume

L'instantané de volume nécessite que vCenter Server et ESXi soient à la version 7.0, mise à jour 3 ou ultérieure.

Cns.Searchable

Votre compte utilisateur vCenter doit disposer du droit Cns.Searchable sur l'objet vCenter racine.

Si vous ne savez pas si votre compte remplit ou non les conditions préalables liées au pilote CSI, exécutez gkectl diagnose cluster avant de déployer des charges de travail CSI.

Vérifier que le pilote est installé

Lorsque le pilote CSI vSphere est installé dans votre cluster d'utilisateur, un objet StorageClass appelé standard-rwo est créé.

Répertoriez les objets StorageClass:

kubectl --kubeconfig CLUSTER_KUBECONFIG get storageclass

Remplacez CLUSTER_KUBECONFIG par le chemin d'accès du fichier kubeconfig de votre cluster.

Vérifiez que standard-rwo apparaît dans le résultat. Exemple :

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

Vérifiez que le pilote CSI vSphere est installé:

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

Le résultat doit indiquer que le pilote est disponible sur tous vos nœuds de cluster. Exemple :

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

Provisionner des volumes

Pour provisionner des volumes avec le pilote CSI vSphere, définissez le champ storageClassName de votre PersistentVolumeClaim sur standard-rwo.

Définir la classe de stockage par défaut

Pour définir standard-rwo comme classe de stockage par défaut, consultez la section Classe de stockage par défaut.

Utiliser un instantané pour restaurer un volume

Consultez Restaurer un volume à partir d'un instantané.

Créer des StorageClass supplémentaires

Vous pouvez créer des StorageClass CSI vSphere supplémentaires dans votre cluster à l'aide des paramètres datastoreurl ou storagepolicyname.

L'exemple suivant utilise le paramètre 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

Pour trouver la valeur correcte du paramètre datastoreurl, exécutez la commande suivante:

govc datastore.info DATASTORE_NAME

Remplacez DATASTORE_NAME par le nom de votre datastore vSphere.

Utilisez la valeur de URL à partir de la sortie pour datastoreurl. Voici un exemple de sortie :

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

Nettoyage des volumes

Les volumes provisionnés par le pilote CSI vSphere ne sont pas supprimés lorsque vous supprimez un cluster d'utilisateur. Vous devez supprimer tous les objets PVC et StatefulSets avant de supprimer le cluster. Pour supprimer vos volumes, exécutez la commande suivante :

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

Remplacez MY_NAMESPACE par votre espace de noms Kubernetes.

Si vous avez supprimé un cluster d'utilisateur sans supprimer ses volumes, vous pouvez trouver les volumes dans l'interface utilisateur vSphere:

  1. Sélectionnez un datastore.

  2. Accédez à Surveiller > Stockage cloud natif > Volumes de conteneurs.

  3. Dans la section Détails de chaque volume, vous pouvez voir le nom du cluster Kubernetes.

Désactiver le pilote CSI vSphere

Pour supprimer la compatibilité avec CSI vSphere, ajoutez les éléments suivants à la configuration de votre cluster d'utilisateur :

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

Étapes suivantes