Utiliser l'outil de migration CSI StatefulSet

Ce document explique comment utiliser l'outil de migration CSI StatefulSet pour migrer des charges de travail avec état d'un plug-in de volume vSphere dans l'arborescence vers le pilote CSI vSphere dans Google Distributed Cloud.

La liste suivante indique l'étape de lancement de cet outil par version :

Versions de Google Distributed Cloud compatibles : 1.30 à 1.28.

Présentation

Google Distributed Cloud s'intègre aux systèmes externes de stockage de blocs ou de fichiers via le stockage VMware vSphere, les plug-ins de volume "in-tree" Kubernetes (ou "pilotes") et les pilotes Container Storage Interface (CSI).

La fonctionnalité de migration CSI de Kubernetes étant activée par défaut dans la version 1.15, un PersistentVolume soutenu par le plug-in de volume vSphere "in-tree" continue de fonctionner dans un environnement CSI uniquement. La fonctionnalité de migration CSI redirige les appels d'opération de plug-in dans l'arborescence vers le pilote CSI. Étant donné que la spécification PersistentVolume est immuable, elle est toujours prise en charge par le plug-in dans l'arborescence. L'ensemble des fonctionnalités disponibles est identique à celui du plug-in de volume "in-tree".

L'ensemble complet des fonctionnalités CSI, comme l'extension de volume et l'instantané de volume, n'est pas disponible pour ces volumes. Pour profiter de ces fonctionnalités, les charges de travail avec état doivent être entièrement migrées vers CSI en recréant les PersistentVolumes sauvegardés par le pilote CSI vSphere. Vous pouvez utiliser l'outil de migration CSI pour migrer des charges de travail avec état vers CSI et utiliser l'ensemble des fonctionnalités CSI.

Cet outil permet de migrer progressivement les PersistentVolume et PersistentVolumeClaim d'un StatefulSet vers CSI, sans temps d'arrêt de l'application. Cet outil prend la sauvegarde des ressources Kubernetes dans un répertoire local et définit ReclaimPolicy sur Retain avant la migration. Il n'y aura donc aucune perte de données.

Limite

  • Les outils automatisés ne sont compatibles qu'avec les versions de Google Distributed Cloud entièrement compatibles.

  • Ils ne fonctionnent qu'avec les StatefulSets. Vous pouvez effectuer des vérifications préliminaires à l'aide de l'outil pour effectuer quelques vérifications de sécurité avant d'utiliser les outils.

./statefulset-csi-migration-tool preflight \
      --kubeconfig ADMIN_KUBECONFIG \
      --cluster-name USER_CLUSTER_NAME \
      --sts-name STS_NAME \
      --sts-namespace STS_NAMESPACE \
      --intree-storageclass INTREE_STORAGECLASS \
      --csi-storageclass CSI_STORAGECLASS

Remplacez les éléments suivants :

  • ADMIN_KUBECONFIG : chemin d'accès au fichier kubeconfig du cluster d'administrateur

  • USER_CLUSTER_NAME : si le StatefulSet s'exécute sur le cluster d'utilisateur, indiquez le nom du cluster d'utilisateur. Ignorez cette option si la charge de travail s'exécute sur le cluster d'administrateur.

  • STS_NAME : nom du StatefulSet

  • STS_NAMESPACE : espace de noms du StatefulSet

  • INTREE_STORAGECLASS : nom de StorageClass dans l'arborescence qui assure la sauvegarde du PersistentVolume du StatefulSet

  • CSI_STORAGECLASS : nom du StorageClass CSI qui gère le PersistentVolume du StatefulSet après la migration

Télécharger

Téléchargez l'outil sur gs://gke-on-prem-release/statefulset-csi-migration-tool/v1.0/statefulset-csi-migration-tool. Notez que cet outil est en version preview.

Procédure

Cette section décrit la procédure à suivre pour migrer StatefulSet du provisionneur interne vCP vSphere in-tree (kubernetes.io/vsphere-volume) vers le provisionneur CSI vSphere (csi.vsphere.vmware.com).

./statefulset-csi-migration-tool rolling-migration all \
      --kubeconfig ADMIN_KUBECONFIG \
      --cluster-name USER_CLUSTER_NAME \
      --sts-name STS_NAME \
      --sts-namespace STS_NAMESPACE \
      --intree-storageclass INTREE_STORAGECLASS \
      --csi-storageclass CSI_STORAGECLASS \
      --working-directory WORKING_DIRECTORY

Remplacez les éléments suivants :

  • ADMIN_KUBECONFIG : chemin d'accès au fichier kubeconfig du cluster d'administrateur

  • USER_CLUSTER_NAME : si le StatefulSet s'exécute sur le cluster d'utilisateur, indiquez le nom du cluster d'utilisateur. Ignorez cette option si la charge de travail s'exécute sur le cluster d'administrateur.

  • STS_NAME : nom du StatefulSet

  • STS_NAMESPACE : espace de noms du StatefulSet

  • INTREE_STORAGECLASS : nom de StorageClass dans l'arborescence qui assure la sauvegarde du PersistentVolume du StatefulSet

  • CSI_STORAGECLASS : nom du StorageClass CSI qui gère le PersistentVolume du StatefulSet après la migration

  • WORKING_DIRECTORY : répertoire local pour enregistrer la spécification de ressource Kubernetes de StatefulSet et de son Pod, PersistentVolumeClaim et PersistentVolume. Le nom du répertoire doit être unique pour chaque StatefulSet. Ce répertoire doit être vide ou inexistant. Il est préférable de ne pas créer ce répertoire afin que l'outil puisse en créer un pour vous.

Cette commande effectue les tâches suivantes :

  1. Effectue une sauvegarde du StatefulSet et de ses dépendances, telles que les spécifications d'instances répliquées de PersistentVolume, PersistentVolumeClaim et de pod dans le répertoire de travail local.

  2. Supprime le StatefulSet avec le règlement concernant la suppression des orphelins. Cette étape ne supprime que le StatefulSet, mais pas ses dépendances, comme les instances de répliquées de pod, PersistentVolume et PersistentVolumeClaim.

  3. Permet de migrer chaque pod vers des pilotes CSI (comme pour l'option 1) et d'effectuer les opérations suivantes :

    a. Définit le champ ReclaimPolicy du PersistentVolume sur "Retain".

    b. Supprime le pod, le PersistentVolume et le PersistentVolumeClaim.

    c. Convertit le fichier VMDK existant en FCD.

    d. Crée à nouveau le PersistentVolume, le PersistentVolumeClaim et le Pod.

  4. Recrée le StatefulSet, mais le champ PVCTemplate de sa spécification pointe vers la StorageClass CSI. Le contrôleur StatefulSet devrait à nouveau mapper les instances répliquées orphelines.