Questo documento spiega come utilizzare lo strumento di migrazione CSI StatefulSet per migrare i 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: GA
- v0.1: Anteprima
Versioni di Google Distributed Cloud supportate: 1.30 - 1.28.
Panoramica
Google Distributed Cloud si integra con sistemi di archiviazione a blocchi o file esterni tramite l'archiviazione VMware vSphere, i plug-in del 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 di operazioni del plug-in integrato 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'insieme completo di funzionalità CSI, come l'espansione del volume 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 StatefulSet a CSI e non comporta tempi di inattività dell'applicazione. Questi
strumenti eseguono il backup delle risorse Kubernetes in una directory locale e impostano
ReclaimPolicy su Retain prima della migrazione. Pertanto, non si verificherà alcuna perdita di dati.
Limitazione
- Gli strumenti automatizzati sono supportati solo nelle versioni di Google Distributed Cloud che sono completamente supportate. 
- Funziona solo con StatefulSet. Puoi eseguire i 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 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 di StatefulSet.
- STS_NAMESPACE: lo spazio dei nomi di StatefulSet.
- INTREE_STORAGECLASS: il nome di StorageClass in-tree che supporta PersistentVolume di StatefulSet.
- CSI_STORAGECLASS: il nome di CSI StorageClass che supporta PersistentVolume di 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 fornisce i passaggi necessari per la migrazione di StatefulSet dal provisioner interno vCP (kubernetes.io/vsphere-volume) in-tree di vSphere al provisioner CSI (csi.vsphere.vmware.com) di vSphere.
./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: il nome di StatefulSet. 
- STS_NAMESPACE: lo spazio dei nomi di StatefulSet. 
- INTREE_STORAGECLASS: il nome di StorageClass in-tree che supporta PersistentVolume di StatefulSet. 
- CSI_STORAGECLASS: il nome di CSI StorageClass che supporta PersistentVolume di 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 lo strumento possa crearne una per te. 
Questo comando esegue le seguenti attività:
- Esegue il backup di StatefulSet e delle relative dipendenze, come PersistentVolume, PersistentVolumeClaim e le specifiche delle repliche dei pod nella directory di lavoro locale. 
- Elimina StatefulSet con la norma di eliminazione orfana. Questo passaggio elimina solo lo StatefulSet, ma non le sue dipendenze come le repliche dei 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 file VMDK esistente in FCD. - d. Crea di nuovo PersistentVolume, PersistentVolumeClaim e Pod. 
- Ricrea StatefulSet, ma il campo PVCTemplate nella relativa specifica punta a StorageClass CSI. Il controller StatefulSet deve essere mappato di nuovo alle repliche orfane.