Lo strumento di migrazione CSI di StatefulSet consente di eseguire la migrazione degli StatefulSet dal plug-in del volume vSphere in-tree al driver CSI vSphere in Google Distributed Cloud. Lo strumento esegue la migrazione dei PersistentVolume senza tempi di inattività delle applicazioni o perdita di dati, in modo che i workload possano utilizzare l'insieme completo di funzionalità CSI, come l'espansione e lo snapshot dei volumi.
Lo strumento è supportato solo nelle versioni di Google Distributed Cloud completamente supportate.
Panoramica
Google Distributed Cloud si integra con sistemi di archiviazione a blocchi o file esterni tramite lo spazio di archiviazione VMware vSphere, i plug-in di volume in-tree di Kubernetes (o "driver") e i driver Container Storage Interface (CSI).
Con la funzionalità di migrazione CSI di Kubernetes abilitata per impostazione predefinita nella versione 1.15, un PersistentVolume supportato dal plug-in di volume vSphere integrato continua a funzionare in un ambiente solo CSI. La funzionalità di migrazione CSI reindirizza le chiamate alle operazioni del plug-in in-tree al driver CSI. Poiché la specifica PersistentVolume è immutabile, è ancora supportata dal plug-in in-tree. L'insieme di funzionalità disponibili è lo stesso del plug-in del volume in-tree.
Il set completo di funzionalità CSI, come l'espansione e lo snapshot del volume, non è disponibile per questi volumi. Per sfruttare queste funzionalità, i workload stateful devono essere completamente migrati a CSI ricreando i PersistentVolume supportati dal driver CSI vSphere. Puoi utilizzare lo strumento di migrazione CSI per eseguire la migrazione dei workload stateful a CSI e utilizzare l'insieme completo di funzionalità CSI.
Questo strumento consente di eseguire la migrazione in sequenza di PersistentVolume e PersistentVolumeClaim di un oggetto StatefulSet a CSI e non comporta tempi di inattività dell'applicazione. Questo strumento esegue il backup delle risorse Kubernetes in una directory locale e imposta ReclaimPolicy su Retain prima della migrazione. In questo modo non si verificheranno perdite di dati.
Limitazione
Gli strumenti automatici sono supportati solo nelle versioni di Google Distributed Cloud completamente supportate.
Funziona solo con StatefulSet. Puoi eseguire controlli preflight utilizzando lo strumento per eseguire alcuni controlli di sicurezza prima di utilizzare gli strumenti.
./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
Sostituisci quanto segue:
ADMIN_KUBECONFIG: il percorso del file kubeconfig del cluster di amministrazione.USER_CLUSTER_NAME: se lo StatefulSet è in esecuzione sul cluster utente, specifica il nome del cluster utente. Salta questo flag se il workload è in esecuzione sul cluster di amministrazione.STS_NAME: il nome dello StatefulSet.STS_NAMESPACE: lo spazio dei nomi dello StatefulSet.INTREE_STORAGECLASS: il nome della StorageClass in-tree che supporta il PersistentVolume dello StatefulSet.CSI_STORAGECLASS: il nome della classe StorageClass CSI che supporta il PersistentVolume dello StatefulSet dopo la migrazione.
Download
Scarica lo strumento all'indirizzo gs://gke-on-prem-release/statefulset-csi-migration-tool/v1.0/statefulset-csi-migration-tool.
Tieni presente che questo strumento è in anteprima.
Procedura
Questa sezione illustra i passaggi necessari per eseguire la migrazione di StatefulSet dal provisioner interno vCP in-tree di vSphere (kubernetes.io/vsphere-volume) al provisioner CSI di 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
Sostituisci quanto segue:
ADMIN_KUBECONFIG: il percorso del file kubeconfig del cluster di amministrazione.
USER_CLUSTER_NAME: se lo StatefulSet è in esecuzione sul cluster utente, specifica il nome del cluster utente. Salta questo flag se il workload è in esecuzione sul cluster di amministrazione.
STS_NAME: il nome dello StatefulSet.
STS_NAMESPACE: lo spazio dei nomi dello StatefulSet.
INTREE_STORAGECLASS: il nome della StorageClass in-tree che supporta il PersistentVolume dello StatefulSet.
CSI_STORAGECLASS: il nome della classe StorageClass CSI che supporta il PersistentVolume dello StatefulSet dopo la migrazione.
WORKING_DIRECTORY: la directory locale in cui salvare la specifica della risorsa Kubernetes di StatefulSet e del relativo pod, PersistentVolumeClaim e PersistentVolume. Il nome della directory deve essere univoco per ogni StatefulSet. Questa directory deve essere vuota o non esistere. L'ideale è non creare questa directory in modo che gli strumenti possano crearne una per te.
Questo comando esegue le seguenti attività:
Esegue il backup dello StatefulSet e delle relative dipendenze, come PersistentVolume, PersistentVolumeClaim e le specifiche delle repliche dei pod nella directory di lavoro locale.
Elimina lo StatefulSet con la politica di cancellazione orfana. Questo passaggio elimina solo lo StatefulSet, ma non le relative dipendenze come le repliche dei pod, PersistentVolume e PersistentVolumeClaim.
Esegue la migrazione di ogni pod ai driver CSI (simile all'opzione 1) e svolge le seguenti operazioni:
a. Imposta il campo ReclaimPolicy di PersistentVolume su Retain.
b. Elimina il pod, il PersistentVolume e il PersistentVolumeClaim.
c. Converte il VMDK esistente in FCD.
d. Crea nuovamente PersistentVolume, PersistentVolumeClaim e il pod.
Ricrea lo StatefulSet, ma il campo PVCTemplate nella sua specifica punta alla StorageClass CSI. Il controller StatefulSet dovrebbe mappare di nuovo le repliche orfane.