Questo documento spiega come utilizzare lo strumento di migrazione CSI StatefulSet per eseguire la migrazione dei workload stateful da un plug-in del 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: versione GA
- v0.1: Anteprima
Versioni di Google Distributed Cloud supportate: 1.30 - 1.28.
Panoramica
Google Distributed Cloud si integra con sistemi di archiviazione di file o blocchi esterni tramite lo storage VMware vSphere, i plug-in dei volumi 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 volume permanente 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, è ancora supportata dal plug-in in-tree. L'insieme di funzionalità disponibili è lo stesso del plug-in di volume "in-tree".
L'intero insieme di funzionalità CSI, come l'espansione del volume e lo snapshot del volume, non è disponibile per questi volumi. Per sfruttare queste funzionalità, i carichi di lavoro stateful devono essere migrati completamente a CSI ricreando i volumi permanenti supportati dal driver CSI vSphere. Puoi utilizzare lo strumento di migrazione CSI per eseguire la migrazione dei carichi di lavoro con stato a CSI e utilizzare l'intero insieme di funzionalità CSI.
Questo strumento fornisce un modo per eseguire la migrazione graduale di PersistentVolume e
PersistentVolumeClaim di un StatefulSet a CSI e non comporta tempi di riposo dell'applicazione. Questo
strumento esegue il backup delle risorse Kubernetes in una directory locale e imposta
ReclaimPolicy
su Retain
prima della migrazione. Pertanto, non ci saranno perdite di dati.
Limitazione
Gli strumenti automatici sono supportati solo nelle versioni di Google Distributed Cloud che sono completamente supportate.
Funziona solo con i 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, fornisci il nome del cluster utente. Ignora questo flag se il workload è in esecuzione sul cluster di amministrazione.STS_NAME
: il nome dello StatefulSet.STS_NAMESPACE
: spazio dei nomi del StatefulSet.INTREE_STORAGECLASS
: il nome della classe di archiviazione in-tree che supporta il volume persistente del StatefulSet.CSI_STORAGECLASS
: il nome della classe di archiviazione CSI che supporta il volume permanente del StatefulSet dopo la migrazione.
Scarica
Scarica lo strumento da
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 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 lo 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: il nome dello StatefulSet.
STS_NAMESPACE: spazio dei nomi del StatefulSet.
INTREE_STORAGECLASS: il nome della classe di archiviazione in-tree che supporta il volume persistente del StatefulSet.
CSI_STORAGECLASS: il nome della classe di archiviazione CSI che supporta il volume permanente del StatefulSet dopo la migrazione.
WORKING_DIRECTORY: la directory locale in cui memorizzare la specifica della risorsa Kubernetes di StatefulSet e del relativo pod, della richiesta di volume permanente e del volume permanente. Il nome della directory deve essere univoco per ogni StatefulSet. Questa directory deve essere vuota o non esistere. È preferibile non creare questa directory in modo che gli strumenti possano crearne una per te.
Questo comando esegue le seguenti attività:
Esegue il backup del StatefulSet e delle relative dipendenze, come PersistentVolume, PersistentVolumeClaim e le specifiche delle repliche del pod nella directory di lavoro locale.
Elimina il StatefulSet con il criterio di eliminazione degli orfani. Questo passaggio elimina solo il StatefulSet, ma non le relative dipendenze come le repliche dei pod, PersistentVolume e PersistentVolumeClaim.
Esegue la migrazione di ciascun pod ai driver CSI (in modo simile all'opzione 1) ed esegue quanto segue:
a. Imposta il campo ReclaimPolicy di PersistentVolume su Retain.
b. Consente di eliminare il pod, il volume permanente e il relativo claim.
c. Converte il VMDK esistente in FCD.
d. Crea di nuovo PersistentVolume, PersistentVolumeClaim e Pod.
Ricrea il StatefulSet, ma il campo PVCTemplate nella relativa specifica fa riferimento al StorageClass CSI. Il controller StatefulSet dovrebbe mapparsi di nuovo alle repliche orfane.