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 :
- v1.0 : DG
- v0.1 : preview
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'administrateurUSER_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 StatefulSetSTS_NAMESPACE
: espace de noms du StatefulSetINTREE_STORAGECLASS
: nom de StorageClass dans l'arborescence qui assure la sauvegarde du PersistentVolume du StatefulSetCSI_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 :
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.
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.
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.
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.