Membuat clone volume persisten


Dokumen ini menunjukkan cara menggunakan cloning volume Kubernetes untuk meng-clone volume persisten di cluster Google Kubernetes Engine (GKE).

Ringkasan

Clone adalah volume independen baru yang merupakan duplikat dari volume Kubernetes yang sudah ada. Clone mirip dengan snapshot volume karena merupakan salinan volume pada titik waktu tertentu. Namun, alih-alih membuat objek snapshot dari volume sumber, cloning volume akan menyediakan clone tersebut dengan semua data dari volume sumber.

Persyaratan

Untuk menggunakan cloning volume di GKE, Anda harus memenuhi persyaratan berikut:

Untuk memverifikasi versi Driver CSI persistent disk Compute Engine, jalankan perintah berikut di gcloud CLI:

kubectl describe daemonsets pdcsi-node --namespace=kube-system | grep "gke.gcr.io/gcp-compute-persistent-disk-csi-driver"

Jika output menampilkan versi yang lebih lama dari 1.4.0, upgrade bidang kontrol Anda secara manual untuk mendapatkan versi terbaru.

Batasan

  • Kedua volume harus menggunakan mode volume yang sama. Secara default, GKE menetapkan VolumeMode ke ext4.
  • Semua batasan untuk membuat clone disk dari disk yang ada di Compute Engine juga berlaku untuk GKE.
  • Anda dapat membuat clone disk regional dari disk zona, tetapi Anda harus mengetahui batasan pendekatan ini.
  • Cloning harus dilakukan di zona yang kompatibel. Gunakan allowedTopologies untuk membatasi topologi volume yang disediakan ke zona tertentu. Atau, nodeSelectors atau Afinitas dan anti-afinitas dapat digunakan untuk membatasi Pod sehingga dibatasi untuk berjalan pada node tertentu yang berjalan di zona yang kompatibel.
    • Untuk cloning zona ke zona, zona clone harus cocok dengan zona disk sumber.
    • Untuk cloning zona hingga regional, salah satu zona replika clone tersebut harus cocok dengan zona disk sumber.

Menggunakan cloning volume

Untuk menyediakan clone volume, Anda harus menambahkan referensi ke PersistentVolumeClaim yang ada dalam namespace yang sama ke kolom dataSource dari PersistentVolumeClaim baru. Latihan berikut menunjukkan cara menyediakan volume sumber dengan data, membuat clone volume, dan menggunakan clone tersebut.

Membuat volume sumber

Untuk membuat volume sumber, ikuti petunjuk di Menggunakan Driver CSI persistent disk Compute Engine untuk cluster Linux untuk membuat StorageClass, PersistentVolumeClaim, dan Pod untuk menggunakan volume baru. Anda akan menggunakan PersistentVolumeClaim yang dibuat sebagai sumber untuk clone volume.

Menambahkan file pengujian ke volume sumber

Tambahkan file pengujian ke volume sumber. Anda dapat mencari file pengujian ini di clone volume untuk memverifikasi bahwa cloning telah berhasil.

  1. Membuat file pengujian di Pod:

    kubectl exec POD_NAME \
        -- sh -c 'echo "Hello World!" > /var/lib/www/html/hello.txt'
    

    Ganti POD_NAME dengan nama Pod yang menggunakan volume sumber. Misalnya, jika Anda mengikuti petunjuk dalam Menggunakan Driver CSI persistent disk Compute Engine untuk cluster Linux, ganti POD_NAME dengan web-server.

  2. Verifikasi bahwa file tersebut ada:

    kubectl exec POD_NAME \
        -- sh -c 'cat /var/lib/www/html/hello.txt'
    

    Outputnya mirip dengan hal berikut ini:

    Hello World!
    

Meng-clone volume sumber

  1. Simpan manifes berikut sebagai podpvc-clone.yaml:

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: podpvc-clone
    spec:
      dataSource:
        name: PVC_NAME
        kind: PersistentVolumeClaim
      accessModes:
      - ReadWriteOnce
      storageClassName: STORAGE_CLASS_NAME
      resources:
        requests:
          storage: STORAGE
    

    Ganti kode berikut:

    • PVC_NAME: nama sumber PersistentVolumeClaim yang Anda buat di Membuat volume sumber.
    • STORAGE_CLASS_NAME: nama StorageClass yang akan digunakan, yang harus sama dengan StorageClass PersistentVolumeClaim sumber.
    • STORAGE: jumlah penyimpanan yang akan diminta, yang setidaknya harus sebesar ukuran PersistentVolumeClaim sumber.
  2. Terapkan manifes:

    kubectl apply -f podpvc-clone.yaml
    

Membuat Pod yang menggunakan volume yang di-clone

Contoh berikut membuat Pod yang menggunakan clone volume yang Anda buat.

  1. Simpan manifes berikut sebagai web-server-clone.yaml:

    apiVersion: v1
    kind: Pod
    metadata:
      name: web-server-clone
    spec:
      containers:
       - name: web-server-clone
         image: nginx
         volumeMounts:
           - mountPath: /var/lib/www/html
             name: mypvc
      volumes:
       - name: mypvc
         persistentVolumeClaim:
           claimName: podpvc-clone
           readOnly: false
    
  2. Terapkan manifes:

    kubectl apply -f web-server-clone.yaml
    
  3. Pastikan file pengujian ada:

    kubectl exec web-server-clone \
        -- sh -c 'cat /var/lib/www/html/hello.txt'
    

    Outputnya mirip dengan yang berikut ini:

    Hello World!
    

Pembersihan

Agar akun Google Cloud Anda tidak dikenai biaya untuk resource yang digunakan pada halaman ini, ikuti langkah-langkah berikut.

  1. Hapus objek Pod:

    kubectl delete pod POD_NAME web-server-clone
    
  2. Hapus objek PersistentVolumeClaim:

    kubectl delete pvc podpvc podpvc-clone