Utilizzo dello strumento di migrazione StatefulSet CSI

Questo documento spiega come utilizzare lo strumento di migrazione CSI StatefulSet per eseguire la migrazione dei carichi di lavoro 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 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 L'operazione del plug-in in-tree chiama il driver CSI. Poiché l'oggetto PersistentVolume è immutabile, è comunque supportata dal plug-in in-tree. L'insieme disponibili sono le stesse del plug-in "In-Tree Volume".

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 stateful a CSI e utilizzare l'insieme completo Funzionalità CSI.

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

Limitazione

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

  • 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 cluster di amministrazione kubeconfig.

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

  • STS_NAME: il nome dello StatefulSet.

  • STS_NAMESPACE: spazio dei nomi dello 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 dello StatefulSet da vSphere provisioner interno vCP (kubernetes.io/vsphere-volume) in-tree a vSphere Provisioner 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 cluster di amministrazione kubeconfig.

  • 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: il nome dello StatefulSet.

  • STS_NAMESPACE: spazio dei nomi dello StatefulSet.

  • INTREE_STORAGECLASS: il nome della classe di archiviazione in-tree che supporta il volume persistente del StatefulSet.

  • CSI_STORAGECLASS: il valore di StorageClass di CSI che supporta il PersistentVolume dello StatefulSet dopo la migrazione.

  • WORKING_DIRECTORY: la directory locale per la specifica della risorsa Kubernetes di StatefulSet e del relativo pod, e PersistentVolumeClaim e PersistentVolume. 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à:

  1. Richiede un backup dello StatefulSet e delle sue dipendenze come PersistentVolume, PersistentVolumeClaim e specifiche della replica di 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, da PersistentVolume a PersistentVolumeClaim.

  3. Esegue la migrazione di ogni pod a driver CSI (simile all'Opzione 1) seguenti:

    a. Imposta il campo ReclaimPolicy di PersistentVolume su Mantieni.

    b. Consente di eliminare il pod, il volume permanente e il relativo claim.

    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 rimanda a il oggetto StorageClass di CSI. Il controller StatefulSet deve essere mappato agli elementi orfani di nuovo.