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:
- PersistentVolumeClaim sumber harus berada dalam namespace yang sama dengan PersistentVolumeClaim tujuan.
- Gunakan driver CSI yang mendukung cloning volume. Driver persistent disk dalam hierarki tidak mendukung cloning volume.
- Driver CSI persistent disk Compute Engine versi 1.4.0 dan yang lebih baru mendukung cloning volume, dan diinstal secara default pada cluster Linux baru yang menjalankan GKE versi 1.22 atau yang lebih baru. Anda juga dapat mengaktifkan Driver CSI persistent disk Compute Engine pada cluster yang ada.
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.
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, gantiPOD_NAME
denganweb-server
.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
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.
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.
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
Terapkan manifes:
kubectl apply -f web-server-clone.yaml
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.
Hapus objek
Pod
:kubectl delete pod POD_NAME web-server-clone
Hapus objek
PersistentVolumeClaim
:kubectl delete pvc podpvc podpvc-clone