Menggunakan Alat Migrasi CSI StatefulSet

Dokumen ini menjelaskan cara menggunakan StatefulSet CSI Migration Tool untuk memigrasikan workload stateful dari plugin volume vSphere in-tree ke Driver CSI vSphere di GKE pada VMware.

Ringkasan

GKE di VMware terintegrasi dengan sistem penyimpanan file atau blok eksternal melalui penyimpanan VMware vSphere, plugin volume in-tree Kubernetes (atau "driver"), dan driver Container Storage Interface (CSI).

Dengan fitur migrasi Kubernetes CSI yang diaktifkan secara default di versi 1.15, PersistentVolume yang didukung oleh plugin volume vSphere in-tree akan terus berfungsi di lingkungan khusus CSI. Fitur migrasi CSI mengalihkan panggilan operasi plugin dalam hierarki ke driver CSI. Karena spesifikasi PersistentVolume tidak dapat diubah, spesifikasi tersebut tetap didukung oleh plugin in-tree. Rangkaian fitur yang tersedia sama seperti plugin volume dalam hierarki.

Kumpulan lengkap fitur CSI, seperti Ekspansi Volume dan Snapshot Volume, tidak tersedia untuk volume semacam itu. Untuk memanfaatkan fitur ini, workload stateful harus dimigrasikan sepenuhnya ke CSI dengan membuat ulang PersistentVolumes yang didukung oleh Driver CSI vSphere. Anda dapat menggunakan alat migrasi CSI untuk memigrasikan workload stateful ke CSI dan menggunakan fitur CSI lengkap.

Alat ini menyediakan dua cara untuk memigrasikan PersistentVolume dan PersistentVolumeClaim StatefulSet ke CSI. Sub-perintah pertama migration-with-downtime melibatkan periode nonaktif aplikasi dan migrasi ke CSI. Sub-perintah kedua rolling-migration melakukan migrasi berkelanjutan ke CSI dan tidak melibatkan periode nonaktif aplikasi. Alat ini mengambil pencadangan resource Kubernetes di direktori lokal dan menetapkan ReclaimPolicy ke Retain sebelum migrasi. Jadi tidak akan ada data yang hilang.

Batasan

  • Alat otomatis hanya didukung di GKE pada VMware versi 1.14 dan yang lebih baru.

  • Ini hanya berfungsi dengan StatefulSets. Anda dapat menjalankan pemeriksaan preflight menggunakan alat untuk menjalankan beberapa pemeriksaan keselamatan sebelum menggunakan alat tersebut.

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

Ganti kode berikut:

  • ADMIN_KUBECONFIG: jalur file kubeconfig cluster admin Anda.

  • USER_CLUSTER_NAME: Jika StatefulSet berjalan di cluster pengguna, berikan nama cluster pengguna. Lewati flag ini jika beban kerja berjalan di cluster admin.

  • STS_NAME: nama StatefulSet.

  • STS_NAMESPACE: namespace StatefulSet.

  • INTREE_STORAGECLASS: nama StorageClass dalam hierarki yang mendukung PersistentVolume StatefulSet.

  • CSI_STORAGECLASS: nama CSI StorageClass yang mendukung PersistentVolume StatefulSet setelah migrasi.

Download

Download alat ini di gs://gke-on-prem-release/statefulset-csi-migration-tool/v0.1/statefulset-csi-migration-tool. Perhatikan bahwa alat ini sedang dalam pratinjau.

Prosedur

Bagian ini menyediakan langkah-langkah yang diperlukan untuk memigrasikan StatefulSet dari penyedia internal vCP vSphere dalam hierarki (kubernetes.io/vsphere-volume) ke penyedia CSI vSphere (csi.vsphere.vmware.com). Kami menyediakan dua cara untuk melakukannya:

  1. Metode pertama melibatkan penurunan workload stateful serta pembuatan ulang PersistentVolume dan PersistentVolumeClaim dengan nilai kolom CSI.

  2. Metode kedua melibatkan migrasi berkelanjutan dengan satu replika StatefulSet dan volumenya dibuat ulang dengan nilai kolom CSI.

Memigrasikan StatefulSet ke CSI dengan periode nonaktif

./statefulset-csi-migration-tool migration-with-downtime 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

Ganti kode berikut:

  • ADMIN_KUBECONFIG: jalur file kubeconfig cluster admin Anda.

  • USER_CLUSTER_NAME: Jika StatefulSet berjalan di cluster pengguna, berikan nama cluster pengguna. Lewati flag ini jika beban kerja berjalan di cluster admin.

  • STS_NAME: nama StatefulSet.

  • STS_NAMESPACE: namespace StatefulSet.

  • INTREE_STORAGECLASS: nama StorageClass dalam hierarki yang mendukung PersistentVolume StatefulSet.

  • CSI_STORAGECLASS: nama CSI StorageClass yang mendukung PersistentVolume StatefulSet setelah migrasi.

  • WORKING_DIRECTORY: direktori lokal untuk menyimpan spesifikasi resource Kubernetes StatefulSet dan Pod-nya, PersistentVolumeClaim, serta PersistentVolume. Nama direktori harus unik untuk setiap StatefulSet. Direktori ini harus kosong atau tidak ada. Sebaiknya jangan membuat direktori ini sehingga alat tersebut dapat membuatnya untuk Anda.

Perintah ini melakukan tugas-tugas berikut:

  1. Mengambil cadangan StatefulSet dan dependensinya seperti replika Pod, spesifikasi PersistentVolumeClaim, dan PersistentVolume di direktori kerja lokal.

  2. Menetapkan kolom ReclaimPolicy di PersistentVolume ke Retain untuk mencegah penghapusan disk yang mendasarinya.

  3. Menghapus resource StatefulSet. Hal ini menyebabkan Pod StatefulSet dihapus dan menyebabkan periode nonaktif.

  4. Menghapus resource PersistentVolume dan PersistentVolumeClaim.

  5. Konversikan VMDK yang ada ke FCD untuk setiap pasangan PersistentVolume dan PersistentVolumeClaim. Membuat PV dan PVC dengan nama resource yang sama seperti sebelumnya, tetapi dengan kolom CSI dan CSI StorageClass.

  6. Membuat StatefulSet lagi, tetapi PVCTemplate dalam spesifikasinya mengarah ke CSI StorageClass.

Migrasi Berkelanjutan dari StatefulSet ke CSI tanpa periode nonaktif

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

Ganti kode berikut:

  • ADMIN_KUBECONFIG: jalur file kubeconfig cluster admin Anda.

  • USER_CLUSTER_NAME: Jika StatefulSet berjalan di cluster pengguna, berikan nama cluster pengguna. Lewati flag ini jika beban kerja berjalan di cluster admin.

  • STS_NAME: nama StatefulSet.

  • STS_NAMESPACE: namespace StatefulSet.

  • INTREE_STORAGECLASS: nama StorageClass dalam hierarki yang mendukung PersistentVolume StatefulSet.

  • CSI_STORAGECLASS: nama CSI StorageClass yang mendukung PersistentVolume StatefulSet setelah migrasi.

  • WORKING_DIRECTORY: direktori lokal untuk menyimpan spesifikasi resource Kubernetes StatefulSet dan Pod-nya, PersistentVolumeClaim, serta PersistentVolume. Nama direktori harus unik untuk setiap StatefulSet. Direktori ini harus kosong atau tidak ada. Sebaiknya jangan membuat direktori ini sehingga alat tersebut dapat membuatnya untuk Anda.

Perintah ini melakukan tugas-tugas berikut:

  1. Mengambil cadangan StatefulSet dan dependensinya seperti spesifikasi replika PersistentVolume, PersistentVolumeClaim, dan Pod di direktori kerja lokal.

  2. Menghapus StatefulSet dengan kebijakan penghapusan orphan. Langkah ini hanya menghapus StatefulSet, tetapi tidak menghapus dependensinya seperti replika Pod, PersistentVolume, dan PersistentVolumeClaim.

  3. Memigrasikan setiap Pod ke driver CSI (mirip dengan Opsi 1), dan melakukan hal berikut:

    a. Menetapkan kolom ReclaimPolicy di PersistentVolume sebagai Retain.

    b. Menghapus Pod, PersistentVolume, dan PersistentVolumeClaim.

    c. Mengonversi VMDK yang ada ke FCD.

    d. Membuat PersistentVolume, PersistentVolumeClaim, dan Pod lagi.

  4. Membuat ulang StatefulSet, tetapi kolom PVCTemplate dalam spesifikasinya mengarah ke CSI StorageClass. Pengontrol StatefulSet harus dipetakan lagi ke replika yang tidak memiliki induk.