Utilizzo dello strumento di migrazione CSI StatefulSet

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:

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à:

  1. Esegue il backup di StatefulSet e delle relative dipendenze, come PersistentVolume, PersistentVolumeClaim e le specifiche delle repliche dei pod nella directory di lavoro locale.

  2. 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.

  3. 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.

  4. Ricrea StatefulSet, ma il campo PVCTemplate nella relativa specifica punta a StorageClass CSI. Il controller StatefulSet deve essere mappato di nuovo alle repliche orfane.