Questo documento spiega come utilizzare lo strumento di migrazione CSI di StatefulSet per eseguire la migrazione dei workload stateful da un plug-in di volume vSphere in-tree al driver CSI vSphere in Google Distributed Cloud.
Il seguente elenco mostra la fase di lancio di questo strumento per versione:
- v1.0: GA
- v0.1: anteprima
Versioni di Google Distributed Cloud supportate: 1.30 - 1.28.
Panoramica
Google Distributed Cloud si integra con i sistemi di archiviazione a blocchi o file esterni tramite l'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 in-tree continua a funzionare in un ambiente solo CSI. La funzionalità di migrazione CSI reindirizza le chiamate di operazioni del plug-in in-tree al driver CSI. Poiché la specifica PersistentVolume è immutabile, è comunque supportata dal plug-in in-tree. L'insieme di funzionalità disponibili è lo stesso del plug-in di volume in-tree.
L'insieme completo di funzionalità CSI, come l'espansione del volume e lo snapshot del volume, non è disponibile per questi volumi. Per usufruire di queste funzionalità, i workload stateful devono essere migrati completamente 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 graduale di PersistentVolume e PersistentVolumeClaim di uno 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. Pertanto, non si verificherà alcuna perdita di dati.
Limitazione
Lo strumento automatizzato è supportato solo nelle versioni di Google Distributed Cloud che sono completamente supportate.
Funziona solo con StatefulSet. Puoi eseguire controlli preliminari 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 StatefulSet è in esecuzione sul cluster utente, fornisci il nome del cluster utente. Ignora questo flag se il workload è in esecuzione sul cluster di amministrazione.STS_NAME: nome di StatefulSet.STS_NAMESPACE: spazio dei nomi di StatefulSet.INTREE_STORAGECLASS: il nome di StorageClass in-tree che supporta PersistentVolume di StatefulSet.CSI_STORAGECLASS: il nome di StorageClass CSI che supporta PersistentVolume di StatefulSet dopo la migrazione.
Scarica
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 fornisce i passaggi necessari per la migrazione di StatefulSet dal provisioning interno vCP in-tree di vSphere (kubernetes.io/vsphere-volume) al provisioning 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 StatefulSet è in esecuzione sul cluster utente, fornisci il nome del cluster utente. Ignora questo flag se il workload è in esecuzione sul cluster di amministrazione.
STS_NAME: nome di StatefulSet.
STS_NAMESPACE: spazio dei nomi di StatefulSet.
INTREE_STORAGECLASS: il nome di StorageClass in-tree che supporta PersistentVolume di StatefulSet.
CSI_STORAGECLASS: il nome di StorageClass CSI che supporta PersistentVolume di StatefulSet dopo la migrazione.
WORKING_DIRECTORY: la directory locale in cui salvare la specifica della risorsa Kubernetes di StatefulSet e dei relativi pod, PersistentVolumeClaim e PersistentVolume. Il nome della directory deve essere univoco per ogni StatefulSet. Questa directory deve essere vuota o non esistere. È ideale non creare questa directory in modo che lo strumento possa crearne una per te.
Questo comando esegue le seguenti attività:
Esegue il backup di StatefulSet e delle relative dipendenze, come le specifiche di PersistentVolume, PersistentVolumeClaim e replica del pod, nella directory di lavoro locale.
Elimina StatefulSet con la politica di cancellazione orfana. Questo passaggio elimina solo StatefulSet, ma non le relative dipendenze, come le repliche del pod, PersistentVolume e PersistentVolumeClaim.
Esegue la migrazione di ogni pod ai driver CSI (simile all'opzione 1) ed esegue le seguenti operazioni:
a. Imposta il campo ReclaimPolicy di PersistentVolume su Retain.
b. Elimina il pod, PersistentVolume e PersistentVolumeClaim.
c. Converte il VMDK esistente in FCD.
d. Crea di nuovo PersistentVolume, PersistentVolumeClaim e il pod.
Ricrea StatefulSet, ma il campo PVCTemplate nella relativa specifica punta a StorageClass CSI. Il controller StatefulSet deve eseguire di nuovo il mapping alle repliche orfane.