Memigrasikan datastore ke SPBM

Dokumen ini menunjukkan cara memigrasikan datastore vSphere ke Storage Policy Based Management (SPBM).

Halaman ini ditujukan bagi spesialis Penyimpanan yang mengonfigurasi dan mengelola performa, penggunaan, dan biaya penyimpanan. Untuk mempelajari lebih lanjut peran umum dan contoh tugas yang kami referensikan dalam konten Google Cloud, lihat Peran dan tugas pengguna GKE Enterprise umum.

1.30: GA
1.29: Pratinjau
1.16 dan yang lebih lama: Tidak tersedia

Konteks

Ada empat tempat yang dapat Anda gunakan untuk menentukan datastore dalam file konfigurasi cluster:

Pewarisan untuk kolom ini adalah sebagai berikut:

adminCluster.vCenter.datastore ->
  userCluster.vCenter.datastore ->
    (userCluster.masterNode.vsphere.datastore and userCluster.nodePools[i].vsphere.datastore)

Contoh:

  • Jika kosong, userCluster.vCenter.datastore akan mewarisi nilai dari adminCluster.vCenter.datastore.

  • Jika kosong, userCluster.nodePools[i].vsphere.datastore akan mewarisi nilai dari userCluster.vCenter.datastore.

Demikian pula, ada empat tempat untuk menentukan kebijakan penyimpanan:

Pewarisan untuk kolom storagePolicyName sama dengan pewarisan untuk kolom datastore.

Sebelum memulai

  • Proses ini adalah migrasi satu arah. Kami tidak mendukung migrasi kembali ke status sebelumnya.
  • Datastore harus kompatibel dengan kebijakan penyimpanan baru yang akan Anda tetapkan.
  • Hanya cluster admin ketersediaan tinggi (HA) yang didukung. Jika cluster admin Anda adalah admin non-HA, Anda harus terlebih dahulu memigrasikan cluster admin ke HA.

Memigrasikan cluster pengguna

Langkah-langkah yang Anda gunakan untuk migrasi bergantung pada apakah Anda ingin memigrasikan seluruh cluster pengguna, atau jika Anda ingin memigrasikan node panel kontrol dan node pool pekerja secara terpisah. Opsi ini memungkinkan Anda memilih kebijakan penyimpanan yang berbeda untuk node bidang kontrol dan node pool pekerja.

Untuk membantu merencanakan periode pemeliharaan, perhatikan hal-hal berikut:

  • Memigrasikan seluruh cluster hanya memerlukan satu update cluster.

  • Memigrasikan node bidang kontrol dan kumpulan node pekerja secara terpisah memerlukan dua update cluster.

Seluruh cluster

Gunakan langkah-langkah ini jika Anda ingin memigrasikan seluruh cluster, termasuk semua node bidang kontrol dan kumpulan node pekerja. Versi cluster pengguna Anda harus berada di 1.30 atau yang lebih tinggi.

  1. Ubah file konfigurasi cluster pengguna, sebagai berikut:

    1. Tetapkan kolom vCenter.storagePolicyName dengan nama kebijakan penyimpanan.

    2. Hapus atau jadikan baris berikut sebagai komentar jika ditentukan:

      • Kolom vCenter.datastore
      • Bagian masterNode.vsphere
      • nodepools[i].vsphere.datastore
      • nodepools[i].vsphere.storagePolicyName

    Contoh konfigurasi berikut menunjukkan perubahan ini.

    Sebelum perubahan:

    vCenter:
      datastore: ds-1
    

    Setelah perubahan:

    vCenter:
      storagePolicyName: sp-1
      # datastore: ds-1
    
  2. Update cluster pengguna:

    gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
      --config USER_CLUSTER_CONFIG
    

    Ganti kode berikut:

    • ADMIN_CLUSTER_KUBECONFIG: jalur file kubeconfig cluster admin.

    • USER_CLUSTER_CONFIG: jalur file konfigurasi cluster pengguna.

Mengupdate StorageClass yang dipaketkan

Setelah memperbarui setelan konfigurasi di cluster, Anda perlu memperbarui StorageClass yang dipaketkan.

  1. Dapatkan StorageClass default saat ini untuk vsphere-csi-driver yang dipaketkan, yang bernama standard-rwo, dan simpan ke file lokal bernama storage-class.yaml.

    kubectl get storageclass standard-rwo -oyaml \
        --kubeconfig USER_CLUSTER_KUBECONFIG > storage-class.yaml
    

    Ganti USER_CLUSTER_KUBECONFIG dengan jalur kubeconfig cluster pengguna.

  2. Buat salinan storage-class.yaml sebagai tindakan pencegahan karena Anda perlu melakukan perubahan pada file:

    cp storage-class.yaml storage-class.yaml-backup.yaml
    
  3. Hapus StorageClass default dari cluster:

    kubectl delete storageclass standard-rwo \
        --kubeconfig USER_CLUSTER_KUBECONFIG
    
  4. Update konfigurasi di storage-class.yaml sebagai berikut:

    1. Hapus atau jadikan kolom berikut sebagai komentar:

      • parameters.datastoreURL
      • resourceVersion
    2. Tambahkan kolom parameters.storagePolicyName dan tetapkan ke nama kebijakan penyimpanan.

    Contoh konfigurasi berikut menunjukkan perubahan ini.

    Sebelum perubahan:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
      name: standard-rwo
    Parameters:
      ...
      datastoreURL: ds//ds-1
    

    Setelah perubahan:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
      name: standard-rwo
    Parameters:
      ...
      storagePolicyName: sp-1
    
  5. Terapkan StorageClass yang diubah ke cluster pengguna:

    kubectl apply -f storage-class.yaml \
        --kubeconfig USER_CLUSTER_KUBECONFIG
    

Khusus cluster pengguna Kubeception

Untuk cluster pengguna Kubeception, Anda perlu mengupdate StorageClass untuk node panel kontrol cluster pengguna di cluster admin. Cluster Kubeception memiliki kolom konfigurasi enableControlplaneV2 yang ditetapkan ke false. Jika Controlplane V2 diaktifkan, bidang kontrol untuk cluster pengguna akan berjalan di cluster pengguna itu sendiri. Jika Controlplane V2 tidak diaktifkan, control plane untuk cluster pengguna akan berjalan di cluster admin, yang disebut sebagai kubeception.

Jalankan perintah berikut untuk menentukan apakah cluster telah mengaktifkan Controlplane V2:

kubectl get onpremuserclusters --kubeconfig USER_CLUSTER_KUBECONFIG \
  -n kube-system -o jsonpath='{.items[0].spec.enableControlplaneV2}' && echo

Jika outputnya adalah false, selesaikan langkah-langkah berikut untuk mengupdate StorageClass default untuk node control plane cluster pengguna di cluster admin:

  1. Dapatkan StorageClass default saat ini untuk vsphere-csi-driver yang dipaketkan, yang bernama USER_CLUSTER_NAME-csi, dan simpan ke file lokal bernama storage-class-kubeception.yaml.

    kubectl get storageclass USER_CLUSTER_NAME-csi -oyaml \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG > storage-class-kubeception.yaml
    

    Ganti ADMIN_CLUSTER_KUBECONFIG dengan jalur kubeconfig cluster admin.

  2. Buat salinan storage-class-kubeception.yaml sebagai tindakan pencegahan karena Anda perlu melakukan perubahan pada file:

    cp storage-class-kubeception.yaml storage-class-kubeception-backup.yaml
    
  3. Hapus StorageClass default dari cluster:

    kubectl delete storageclass USER_CLUSTER_NAME-csi \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    
  4. Update konfigurasi di storage-class-kubeception.yaml sebagai berikut:

    1. Hapus atau jadikan kolom berikut sebagai komentar:

      • parameters.datastoreURL
      • resourceVersion
    2. Tambahkan kolom parameters.storagePolicyName dan tetapkan ke nama kebijakan penyimpanan.

    Contoh konfigurasi berikut menunjukkan perubahan ini.

    Sebelum perubahan:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
      name: standard-rwo
    Parameters:
      ...
      datastoreURL: ds//ds-1
    

    Setelah perubahan:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
      name: standard-rwo
    Parameters:
      ...
      storagePolicyName: sp-1
    
  5. Terapkan StorageClass yang diubah ke cluster admin:

    kubectl apply -f storage-class-kubeception.yaml \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    

Setelah migrasi

Jika Anda membuat node pool baru setelah migrasi, kumpulan baru akan mengikuti aturan pewarisan sesuai dengan cluster yang diperbarui.

Misalnya, Anda memigrasikan vCenter.datastore ke kebijakan penyimpanan.

Sekarang, jika Anda membuat node pool baru dan membiarkan nodePools[i].vsphere.datastore dan nodePools[i].vsphere.storagePolicyName kosong, node pool baru akan mewarisi kebijakan penyimpanan yang ditentukan di vCenter.storagePolicyName.

Node secara terpisah

Gunakan langkah-langkah ini jika Anda ingin memigrasikan node bidang kontrol dan kumpulan node pekerja secara terpisah.

  1. Khusus versi 1.29: Mendapatkan konfigurasi cluster saat ini. Langkah ini tidak diperlukan jika cluster pengguna menggunakan versi 1.30 atau yang lebih tinggi.

    gkectl get-config cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
      --cluster-name USER_CLUSTER_NAME \
      --output-dir ./gen-files
    

    Ganti kode berikut:

    • ADMIN_CLUSTER_KUBECONFIG: jalur file kubeconfig untuk cluster admin.

    • USER_CLUSTER_NAME: nama cluster pengguna.

    Di ./gen-files, temukan user-cluster.yaml.

    Untuk mengetahui informasi selengkapnya tentang cara mendapatkan file konfigurasi, lihat Membuat file konfigurasi dari cluster.

    File konfigurasi yang dihasilkan memiliki nama datastore yang ditetapkan di setiap level: cluster, masterNode (untuk node bidang kontrol), dan nodepools (untuk node pekerja), seperti yang ditunjukkan dalam contoh berikut:

    apiVersion: v1
    kind: UserCluster
    ...
    # VCenter config in cluster level:
    vCenter:
      datastore: ds-1
    ...
    # VCenter config in master node level:
    masterNode:
      vsphere:
        datastore: ds-1
    ...
    # VCenter config in nodepool level:
    nodepools:
    - name: pool-1
      vsphere:
        datastore: ds-1
    - name: pool-2
      vsphere:
        datastore: ds-1
    

Memigrasikan node bidang kontrol

Lakukan langkah-langkah berikut untuk memigrasikan node panel kontrol:

  1. Buat perubahan berikut dalam file konfigurasi cluster pengguna:

    • Tetapkan kolom masterNode.vsphere.storagePolicyName dengan nama kebijakan penyimpanan.
    • Hapus atau jadikan kolom masterNode.vsphere.datastore sebagai komentar.

    Contoh konfigurasi berikut menunjukkan perubahan ini.

    Sebelum perubahan:

    masterNode:
      vsphere:
        datastore: ds-1
    

    Setelah perubahan:

    masterNode:
      vsphere:
        # datastore: ds-1
        storagePolicyName: sp-1
    
  2. Update cluster pengguna:

    gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
      --config USER_CLUSTER_CONFIG
    

    Ganti kode berikut:

    • ADMIN_CLUSTER_KUBECONFIG: jalur file kubeconfig cluster admin.

    • USER_CLUSTER_CONFIG: jalur file konfigurasi cluster pengguna.

    Tunggu hingga perintah update selesai sebelum memperbarui kumpulan node.

Memigrasikan node pool

Lakukan langkah-langkah berikut untuk memigrasikan semua node pool:

  1. Buat perubahan berikut dalam file konfigurasi cluster pengguna:

    • Tetapkan setiap kolom nodePools[i].vsphere.storagePolicyName dengan nama kebijakan penyimpanan.
    • Hapus atau jadikan setiap kolom nodePools[i].vsphere.datastore sebagai komentar.

    Contoh konfigurasi berikut menunjukkan perubahan ini.

    Sebelum perubahan:

    nodepools:
    - name: pool-1
      vsphere:
        datastore: ds-1
    - name: pool-2
      vsphere:
        datastore: ds-1
    

    Setelah perubahan:

    nodepools:
    - name: pool-1
      vsphere:
        # datastore: ds-1
        storagePolicyName: sp-1
    - name: pool-2
      vsphere:
        # datastore: ds-1
        storagePolicyName: sp-1
    
  2. Update cluster pengguna:

    gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
      --config USER_CLUSTER_CONFIG
    

Atau, perbarui kebijakan penyimpanan di tingkat cluster

Untuk cluster pengguna, kolom datastore dan storagePolicyName di bagian vCenter tingkat cluster adalah nilai default yang digunakan oleh bagian masterNode dan nodepools. Setelah Anda melakukan langkah-langkah sebelumnya, setelan vCenter datastore dan storagePolicyName level cluster tidak akan digunakan oleh komponen cluster apa pun. Anda dapat membiarkan bagian vCenter level cluster seperti apa adanya atau memperbaruinya agar konsisten dengan masterNode dan nodepools.

Jika Anda membiarkan setelan seperti apa adanya, sebaiknya tambahkan komentar di atas bagian vCenter tingkat cluster yang menyatakan bahwa setelan tersebut diabaikan karena diganti oleh setelan di bagian masterNode dan nodepools.

Jika mau, Anda dapat mengubah bagian vCenter tingkat cluster agar cocok dengan bagian masterNode dan nodepools, lalu memperbarui cluster menggunakan langkah-langkah berikut:

  1. Ubah file konfigurasi cluster pengguna, sebagai berikut:

    • Tetapkan kolom vCenter.storagePolicyName dengan nama kebijakan penyimpanan.
    • Hapus atau jadikan kolom vCenter.datastore sebagai komentar.
  2. Update cluster pengguna:

    gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
      --config USER_CLUSTER_CONFIG
    

    Perintah pembaruan ini tidak akan membuat perubahan apa pun pada cluster, tetapi akan memperbarui kolom vCenter.datastore dan vCenter.storagePolicyName sisi server (OnPremUserCluster).

Mengupdate StorageClass yang dipaketkan

Setelah memperbarui setelan konfigurasi, Anda perlu mengupdate StorageClass yang dipaketkan.

  1. Dapatkan StorageClass default saat ini untuk vsphere-csi-driver yang dipaketkan, yang bernama standard-rwo, dan simpan ke file lokal bernama storage-class.yaml.

    kubectl get storageclass standard-rwo -oyaml \
        --kubeconfig USER_CLUSTER_KUBECONFIG > storage-class.yaml
    

    Ganti USER_CLUSTER_KUBECONFIG dengan jalur kubeconfig cluster pengguna.

  2. Buat salinan storage-class.yaml sebagai tindakan pencegahan karena Anda perlu melakukan perubahan pada file:

    cp storage-class.yaml storage-class.yaml-backup.yaml
    
  3. Hapus StorageClass default dari cluster:

    kubectl delete storageclass standard-rwo \
        --kubeconfig USER_CLUSTER_KUBECONFIG
    
  4. Update konfigurasi di storage-class.yaml sebagai berikut:

    1. Hapus atau jadikan kolom berikut sebagai komentar:

      • parameters.datastoreURL
      • resourceVersion
    2. Tambahkan kolom parameters.storagePolicyName dan tetapkan ke nama kebijakan penyimpanan.

    Contoh konfigurasi berikut menunjukkan perubahan ini.

    Sebelum perubahan:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
      name: standard-rwo
    Parameters:
      ...
      datastoreURL: ds//ds-1
    

    Setelah perubahan:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
      name: standard-rwo
    Parameters:
      ...
      storagePolicyName: sp-1
    
  5. Terapkan StorageClass yang diubah ke cluster pengguna:

    kubectl apply -f storage-class.yaml \
        --kubeconfig USER_CLUSTER_KUBECONFIG
    

Khusus cluster pengguna Kubeception

Untuk cluster pengguna Kubeception, Anda perlu mengupdate StorageClass untuk node panel kontrol cluster pengguna di cluster admin. Cluster Kubeception memiliki kolom konfigurasi enableControlplaneV2 yang ditetapkan ke false. Jika Controlplane V2 diaktifkan, bidang kontrol untuk cluster pengguna akan berjalan di cluster pengguna itu sendiri. Jika Controlplane V2 tidak diaktifkan, control plane untuk cluster pengguna akan berjalan di cluster admin, yang disebut sebagai kubeception.

Jalankan perintah berikut untuk menentukan apakah cluster telah mengaktifkan Controlplane V2:

kubectl get onpremuserclusters --kubeconfig USER_CLUSTER_KUBECONFIG \
  -n kube-system -o jsonpath='{.items[0].spec.enableControlplaneV2}' && echo

Jika outputnya adalah false, selesaikan langkah-langkah berikut untuk mengupdate StorageClass default untuk node control plane cluster pengguna di cluster admin:

  1. Dapatkan StorageClass default saat ini untuk vsphere-csi-driver yang dipaketkan, yang bernama USER_CLUSTER_NAME-csi, dan simpan ke file lokal bernama storage-class-kubeception.yaml.

    kubectl get storageclass USER_CLUSTER_NAME-csi -oyaml \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG > storage-class-kubeception.yaml
    

    Ganti ADMIN_CLUSTER_KUBECONFIG dengan jalur kubeconfig cluster admin.

  2. Buat salinan storage-class-kubeception.yaml sebagai tindakan pencegahan karena Anda perlu melakukan perubahan pada file:

    cp storage-class-kubeception.yaml storage-class-kubeception-backup.yaml
    
  3. Hapus StorageClass default dari cluster:

    kubectl delete storageclass USER_CLUSTER_NAME-csi \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    
  4. Update konfigurasi di storage-class-kubeception.yaml sebagai berikut:

    1. Hapus atau jadikan kolom berikut sebagai komentar:

      • parameters.datastoreURL
      • resourceVersion
    2. Tambahkan kolom parameters.storagePolicyName dan tetapkan ke nama kebijakan penyimpanan.

    Contoh konfigurasi berikut menunjukkan perubahan ini.

    Sebelum perubahan:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
      name: standard-rwo
    Parameters:
      ...
      datastoreURL: ds//ds-1
    

    Setelah perubahan:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
      name: standard-rwo
    Parameters:
      ...
      storagePolicyName: sp-1
    
  5. Terapkan StorageClass yang diubah ke cluster admin:

    kubectl apply -f storage-class-kubeception.yaml \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    

Memigrasikan cluster admin

Pastikan cluster admin juga diperbarui dengan nama kebijakan penyimpanan.

  1. Buat perubahan berikut dalam file konfigurasi cluster admin:

    • Hapus atau jadikan kolom vCenter.datastore sebagai komentar.
    • Tetapkan kolom vCenter.storagePolicyName dengan nama kebijakan penyimpanan.
  2. Update cluster admin:

    gkectl update admin --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
      --config ADMIN_CLUSTER_CONFIG
    

    Ganti kode berikut:

    • ADMIN_CLUSTER_KUBECONFIG: jalur ke file kubeconfig cluster admin.
    • ADMIN_CLUSTER_CONFIG: jalur ke file konfigurasi cluster admin.

Migrasi penyimpanan dengan SPBM

Setelah migrasi datastore ke SPBM, cluster Anda kini menggunakan SPBM. Namun, migrasi tidak memindahkan workload penyimpanan apa pun (seperti disk data mesin atau volume penampung) dari datastore lama.

Untuk memindahkan workload penyimpanan, lihat Migrasi penyimpanan dengan Pengelolaan Berbasis Kebijakan Penyimpanan.