Menggunakan Alat Migrasi CSI StatefulSet

Alat Migrasi CSI StatefulSet memungkinkan Anda memigrasikan StatefulSet dari plugin volume vSphere in-tree ke Driver CSI vSphere di Google Distributed Cloud. Alat ini memigrasikan PersistentVolume Anda tanpa periode nonaktif aplikasi atau kehilangan data, sehingga workload Anda dapat menggunakan serangkaian fitur CSI lengkap, seperti Volume Expansion dan Volume Snapshot.

Alat ini hanya didukung pada versi Google Distributed Cloud yang didukung sepenuhnya.

Ringkasan

Google Distributed Cloud 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 CSI Kubernetes yang diaktifkan secara default di 1.15, PersistentVolume yang didukung oleh plugin volume vSphere dalam hierarki 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 masih didukung oleh plugin dalam hierarki. Kumpulan fitur yang tersedia sama dengan plugin volume dalam hierarki.

Set lengkap fitur CSI, seperti Volume Expansion dan Volume Snapshot, tidak tersedia untuk volume tersebut. Untuk memanfaatkan fitur ini, workload stateful harus dimigrasikan sepenuhnya ke CSI dengan membuat ulang PersistentVolume yang didukung oleh Driver CSI vSphere. Anda dapat menggunakan alat migrasi CSI untuk memigrasikan workload stateful ke CSI dan menggunakan kumpulan lengkap fitur CSI.

Alat ini menyediakan cara untuk memigrasikan PersistentVolume dan PersistentVolumeClaim StatefulSet secara bertahap ke CSI dan tidak melibatkan periode nonaktif aplikasi. Alat ini mencadangkan 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 versi Google Distributed Cloud yang didukung sepenuhnya.

  • Fitur ini hanya berfungsi dengan StatefulSet. Anda dapat menjalankan pemeriksaan preflight menggunakan alat ini untuk menjalankan beberapa pemeriksaan keamanan 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 workload 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 StorageClass CSI yang mendukung PersistentVolume StatefulSet setelah migrasi.

Download

Download alat di gs://gke-on-prem-release/statefulset-csi-migration-tool/v1.0/statefulset-csi-migration-tool. Perhatikan bahwa alat ini dalam versi pratinjau.

Prosedur

Bagian ini memberikan langkah-langkah yang diperlukan untuk memigrasikan StatefulSet dari penyedia internal vCP in-tree vSphere (kubernetes.io/vsphere-volume) ke penyedia CSI vSphere (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

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 workload 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 StorageClass CSI yang mendukung PersistentVolume StatefulSet setelah migrasi.

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

Perintah ini melakukan tugas-tugas berikut:

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

  2. Menghapus StatefulSet dengan kebijakan penghapusan tanpa induk. 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 PersistentVolume sebagai Retain.

    b. Menghapus Pod, PersistentVolume, dan PersistentVolumeClaim.

    c. Mengonversi VMDK yang ada menjadi FCD.

    d. Membuat PersistentVolume, PersistentVolumeClaim, dan Pod lagi.

  4. Membuat ulang StatefulSet, tetapi kolom PVCTemplate dalam spesifikasinya mengarah ke StorageClass CSI. Pengontrol StatefulSet harus memetakan ke replika tanpa induk lagi.