Menggunakan Alat Migrasi CSI StatefulSet

Dokumen ini menjelaskan cara menggunakan StatefulSet CSI Migration Tool untuk memigrasikan workload stateful dari plugin volume vSphere dalam hierarki 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 dalam hierarki Kubernetes (atau "driver"), dan driver Container Storage Interface (CSI).

Dengan fitur migrasi Kubernetes CSI yang diaktifkan secara default di 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 ini masih didukung oleh plugin dalam hierarki. Kumpulan fitur yang tersedia sama dengan plugin volume in-tree.

Set lengkap fitur CSI, seperti Ekspansi Volume dan Snapshot Volume, tidak tersedia untuk volume tersebut. 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 set lengkap fitur CSI.

Alat ini menyediakan cara untuk melakukan migrasi PersistentVolume dan PersistentVolumeClaim StatefulSet ke CSI dan tidak melibatkan periode nonaktif aplikasi. Alat ini mengambil cadangan 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 versi VMware yang didukung sepenuhnya.

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

./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 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 dalam versi pratinjau.

Prosedur

Bagian ini memberikan langkah-langkah yang diperlukan untuk memigrasikan StatefulSet dari penyedia internal vCP vSphere in-tree (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 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 beserta Pod-nya, PersistentVolumeClaim, dan PersistentVolume. Nama direktori harus unik untuk setiap StatefulSet. Direktori ini harus kosong atau tidak ada. Sebaiknya jangan membuat direktori ini sehingga alat dapat membuatnya untuk Anda.

Perintah ini melakukan tugas-tugas berikut:

  1. Mengambil cadangan StatefulSet dan dependensinya seperti PersistentVolume, PersistentVolumeClaim, dan spesifikasi replika 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 (serupa 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 usang.