Utilizzo dello strumento di migrazione StatefulSet CSI

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

Panoramica

Google Distributed Cloud si integra con sistemi di archiviazione di file o blocchi esterni tramite l'archiviazione VMware vSphere, plug-in di volume "in-tree" di Kubernetes (o "driver") e driver Container Storage Interface (CSI).

Con la funzionalità di migrazione Kubernetes CSI abilitata per impostazione predefinita in 1.15, un PersistentVolume supportato dal plug-in di volume vSphere integrato continua a funzionare in un ambiente solo CSI. La funzionalità di migrazione di CSI reindirizza le chiamate delle operazioni dei plug-in in-tree al driver CSI. Poiché la specifica PersistentVolume è immutabile, è comunque supportata dal plug-in integrato. Il set di funzionalità disponibili è lo stesso del plug-in del 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 gli oggetti PersistentVolume supportati dal driver CSI vSphere. Puoi utilizzare lo strumento di migrazione CSI per eseguire la migrazione dei carichi di lavoro stateful a CSI e utilizzare il set completo di funzionalità CSI.

Questo strumento fornisce un modo per eseguire in sequenza la migrazione di oggetti PersistentVolume e PersistentVolumeClaim di 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. senza alcuna perdita di dati.

Limitazione

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

  • Funziona solo con gli oggetti StatefulSet. Puoi eseguire controlli preflight usando lo strumento per eseguire alcuni controlli di sicurezza prima di usare 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. Salta 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 nella struttura a supporto dell'oggetto PersistentVolume dello StatefulSet.

  • CSI_STORAGECLASS: il nome StorageClass del CSI a supporto del PersistentVolume dello 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 illustra i passaggi necessari per eseguire la migrazione dello StatefulSet dal provisioner interno vCP di vSphere in-tree (kubernetes.io/vsphere-volume) 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 lo StatefulSet è in esecuzione sul cluster utente, fornisci il nome del cluster utente. Salta 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 nella struttura a supporto dell'oggetto PersistentVolume dello StatefulSet.

  • CSI_STORAGECLASS: il nome StorageClass del CSI a supporto del PersistentVolume dello StatefulSet dopo la migrazione.

  • WORKING_DIRECTORY: la directory locale per salvare le specifiche 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 esistere. Conviene 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 Replica Pod nella directory di lavoro locale.

  2. Elimina lo StatefulSet con criterio di eliminazione orfano. Questo passaggio elimina solo lo StatefulSet, ma non elimina le sue dipendenze come le repliche dei pod, i PersistentVolume e PersistentVolumeClaim.

  3. Esegue la migrazione di ogni pod a driver CSI (simile all'opzione 1) e svolge le seguenti operazioni:

    a. Imposta il campo ReclaimPolicy del PersistentVolume su Conserva.

    b. Elimina il pod, PersistentVolume e PersistentVolumeClaim.

    c. Converte il VMDK esistente in FCD.

    d. Crea di nuovo l'oggetto PersistentVolume, PersistentVolumeClaim e il pod.

  4. Ricrea lo StatefulSet, ma il campo PVCTemplate nella specifica punta al CSI StorageClass. Il controller StatefulSet deve essere nuovamente mappato alle repliche orfane.