Utilizzo dello strumento di migrazione CSI StatefulSet

Questo documento spiega come utilizzare lo strumento di migrazione CSI StatefulSet per eseguire la migrazione dei carichi di lavoro stateful da un plug-in di volume vSphere in-tree al driver CSI vSphere in Google Distributed Cloud.

Panoramica

Google Distributed Cloud si integra con sistemi di archiviazione a blocchi o file esterni attraverso l'archiviazione VMware vSphere, i plug-in di volume (o "driver") di Kubernetes in-tree 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 di CSI reindirizza le chiamate delle 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.

Il set completo di funzionalità CSI, come l'espansione del volume e lo snapshot del volume, non è disponibile per questi volumi. Per sfruttare queste funzionalità, è necessario eseguire la migrazione completa dei carichi di lavoro stateful a CSI ricreando i PersistentVolume supportati dal driver CSI di vSphere. Puoi utilizzare lo strumento di migrazione di CSI per eseguire la migrazione dei carichi di lavoro stateful a CSI e utilizzare il set completo di funzionalità CSI.

Questo strumento offre un modo per eseguire la migrazione di oggetti PersistentVolume e PersistentVolumeClaim da StatefulSet a CSI e non prevede tempi di inattività dell'applicazione. Questo strumento prende il backup delle risorse Kubernetes in una directory locale e imposta ReclaimPolicy su Retain prima della migrazione. quindi non ci sarà alcuna perdita di dati.

Limitazione

  • Gli strumenti automatizzati sono supportati solo nelle versioni Google Distributed Cloud completamente supportate.

  • Funziona solo con gli StatefulSet. Puoi eseguire i controlli preflight usando lo strumento per eseguire alcuni controlli di sicurezza.

./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 tuo cluster di amministrazione.

  • USER_CLUSTER_NAME: se lo StatefulSet è in esecuzione sul cluster utente, indica il nome del cluster utente. Ignora questo flag se il carico di lavoro è in esecuzione sul cluster di amministrazione.

  • STS_NAME: nome dello StatefulSet.

  • STS_NAMESPACE: spazio dei nomi dello StatefulSet.

  • INTREE_STORAGECLASS: il nome StorageClass all'interno dell'oggetto PersistentVolume degli StatefulSet.

  • CSI_STORAGECLASS: il nome StorageClass di CSI che supporta l'oggetto PersistentVolume di StatefulSet dopo la migrazione.

Scarica

Scarica lo strumento all'indirizzo gs://gke-on-prem-release/statefulset-csi-migration-tool/v0.1/statefulset-csi-migration-tool. Tieni presente che questo strumento è in anteprima.

Procedura

Questa sezione fornisce i passaggi necessari per eseguire la migrazione di StatefulSet da vSphere in-tree vCP provisioner (kubernetes.io/vsphere-volume) a provisioner vSphere CSI (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 tuo cluster di amministrazione.

  • USER_CLUSTER_NAME: se lo StatefulSet è in esecuzione sul cluster utente, indica il nome del cluster utente. Ignora questo flag se il carico di lavoro è in esecuzione sul cluster di amministrazione.

  • STS_NAME: nome dello StatefulSet.

  • STS_NAMESPACE: spazio dei nomi dello StatefulSet.

  • INTREE_STORAGECLASS: il nome StorageClass all'interno dell'oggetto PersistentVolume degli StatefulSet.

  • CSI_STORAGECLASS: il nome StorageClass di CSI che supporta l'oggetto PersistentVolume di StatefulSet dopo la migrazione.

  • WORKING_DIRECTORY: la directory locale per salvare la specifica delle risorse 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 esistente. L'ideale è non creare questa directory in modo che gli strumenti possano crearne una per te.

Questo comando esegue le seguenti attività:

  1. Esegue un backup dello StatefulSet e delle sue dipendenze come PersistentVolume, PersistentVolumeClaim e delle specifiche di replica pod nella directory di lavoro locale.

  2. Elimina lo StatefulSet con criterio di eliminazione orfani. 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 dell'oggetto PersistentVolume come Retain.

    b. Elimina il pod, PersistentVolume e PersistentVolumeClaim.

    c. Converte il VMDK esistente in FCD.

    d. Crea di nuovo PersistentVolume, PersistentVolumeClaim e Pod.

  4. Ricrea lo StatefulSet, ma il campo PVCTemplate nelle sue specifiche punta a CSI StorageClass. Il controller StatefulSet dovrebbe essere mappato di nuovo alle repliche orfane.