Halaman ini menunjukkan cara mencadangkan dan memulihkan penyimpanan Filestore menggunakan snapshot volume Kubernetes.
Membuat snapshot volume Kubernetes sama dengan membuat pencadangan Filestore. Untuk mengetahui informasi selengkapnya, lihat Tentang snapshot volume Kubernetes.
Persyaratan
Untuk menggunakan snapshot volume di GKE, Anda harus memenuhi persyaratan berikut:
Anda harus men-deploy driver CSI Filestore yang mendukung tingkat layanan Filestore berikut:
- HDD dasar dengan GKE versi 1.21 atau yang lebih baru
- SSD dasar dengan GKE versi 1.21 atau yang lebih baru
- Enterprise dengan GKE versi 1.25 atau yang lebih baru
Gunakan control plane versions 1.17 atau yang lebih baru. Untuk menggunakan driver CSI Filestore di
VolumeSnapshot
, gunakan GKE versi 1.21 atau yang lebih baru.
- Memiliki
PersistentVolumeClaim
yang ada untuk digunakan untuk snapshot.PersistentVolume
yang Anda gunakan untuk sumber snapshot harus dikelola oleh driver CSI. Anda dapat memverifikasi bahwa Anda menggunakan driver CSI dengan memeriksa apakah spesifikasiPersistentVolume
memiliki bagiancsi
dengandriver: pd.csi.storage.gke.io
ataufilestore.csi.storage.gke.io
. JikaPersistentVolume
disediakan secara dinamis oleh driver CSI seperti dijelaskan di bagian berikut, driver tersebut dikelola oleh driver CSI.
Batasan
Volume snapshot memiliki batasan ukuran yang sama dengan volume reguler. Misalnya, snapshot Filestore harus berukuran lebih besar dari atau sama dengan 1 TiB untuk tingkat HDD dasar.
Driver Filestore CSI tidak mendukung alur kerja penyediaan atau pencadangan dinamis untuk tingkat layanan Filestore berikut:
- Zonal dengan band kapasitas lebih tinggi (sebelumnya SSD skala tinggi)
- Zonal dengan pita kapasitas lebih rendah
Anda hanya dapat mencadangkan satu saham per instance dalam satu waktu. Terkait dengan kumpulan penyimpanan, permintaan pencadangan yang dikeluarkan dari dua bagian yang berbeda dari dua instance Filestore yang berbeda akan dijalankan secara bersamaan.
Cadangan singleshare hanya dapat dipulihkan ke volume singleshare. Dengan menggunakan driver CSI Filestore, Anda hanya dapat memulihkan volume singleshare ke instance Filestore baru.
- Instance baru harus menggunakan tingkat layanan yang sama dengan cadangan.
- Instance baru harus memiliki kapasitas minimum yang sama dengan cadangan.
Operasi
backup restore
Filestore ke sumber atau ke instance Filestore yang ada tidak didukung. Untuk daftar lengkap batasan fitur, lihat Batasan fitur pencadangan Filestore.Pencadangan multi-berbagi tidak didukung.
Sebelum memulai
Sebelum memulai, pastikan Anda telah menjalankan tugas berikut:
- Aktifkan Google Kubernetes Engine API. Aktifkan Google Kubernetes Engine API
- Jika ingin menggunakan Google Cloud CLI untuk tugas ini,
instal lalu
initialize
gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan
gcloud components update
.
Membuat dan menggunakan snapshot volume
Contoh dalam dokumen ini menunjukkan cara melakukan tugas berikut:
- Buat
PersistentVolumeClaim
danDeployment
. - Tambahkan file ke
PersistentVolume
yang digunakanDeployment
. - Buat
VolumeSnapshotClass
untuk mengonfigurasi snapshot. - Buat snapshot volume
PersistentVolume
. - Hapus file pengujian.
- Pulihkan
PersistentVolume
ke snapshot yang Anda buat. - Verifikasi bahwa pemulihan berfungsi.
Untuk menggunakan snapshot volume, Anda harus menyelesaikan langkah-langkah berikut:
- Buat objek
VolumeSnapshotClass
untuk menentukan driver CSI dan kebijakan penghapusan untuk snapshot Anda. - Buat objek
VolumeSnapshot
untuk meminta snapshotPersistentVolumeClaim
yang ada. - Referensikan
VolumeSnapshot
diPersistentVolumeClaim
untuk memulihkan volume ke snapshot tersebut atau membuat volume baru menggunakan snapshot.
Membuat PersistentVolumeClaim
dan Deployment
Untuk membuat objek
PersistentVolumeClaim
, simpan manifes berikut sebagaimy-pvc.yaml
:Filestore
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-pvc spec: storageClassName: enterprise-rwx accessModes: - ReadWriteMany resources: requests: storage: 1Ti
Contoh ini membuat PVC Filestore tingkat perusahaan. Untuk mempelajari lebih lanjut, lihat Mengakses instance Filestore dengan driver Filestore CSI.
Untuk
spec.storageClassName
, Anda dapat menentukan class penyimpanan apa pun yang menggunakan driver CSI yang didukung.Terapkan manifes:
kubectl apply -f my-pvc.yaml
Untuk membuat
Deployment
, simpan manifes berikut sebagaimy-deployment.yaml
:apiVersion: apps/v1 kind: Deployment metadata: name: hello-app spec: selector: matchLabels: app: hello-app template: metadata: labels: app: hello-app spec: containers: - name: hello-app image: google/cloud-sdk:slim args: [ "sleep", "3600" ] volumeMounts: - name: sdk-volume mountPath: /usr/share/hello/ volumes: - name: sdk-volume persistentVolumeClaim: claimName: my-pvc
Terapkan manifes:
kubectl apply -f my-deployment.yaml
Periksa status
Deployment
:kubectl get deployment hello-app
Mungkin perlu waktu beberapa saat sampai
Deployment
siap. Anda dapat menjalankan perintah sebelumnya hingga melihat output yang mirip dengan berikut ini:NAME READY UP-TO-DATE AVAILABLE AGE hello-app 1/1 1 1 2m55s
Menambahkan file pengujian ke volume
Cantumkan
Pods
dalamDeployment
:kubectl get pods -l app=hello-app
Outputnya mirip dengan hal berikut ini:
NAME READY STATUS RESTARTS AGE hello-app-6d7b457c7d-vl4jr 1/1 Running 0 2m56s
Buat file pengujian di
Pod
:kubectl exec POD_NAME \ -- sh -c 'echo "Hello World!" > /usr/share/hello/hello.txt'
Ganti
POD_NAME
dengan namaPod
.Verifikasi bahwa file tersebut ada:
kubectl exec POD_NAME \ -- sh -c 'cat /usr/share/hello/hello.txt'
Outputnya mirip dengan hal berikut ini:
Hello World!
Membuat objek VolumeSnapshotClass
.
Buat objek VolumeSnapshotClass
untuk menentukan driver CSI dan
deletionPolicy
untuk snapshot volume Anda. Anda dapat mereferensikan
objek VolumeSnapshotClass
saat membuat objek VolumeSnapshot
.
Simpan manifes berikut sebagai
volumesnapshotclass.yaml
.Filestore
apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotClass metadata: name: my-snapshotclass driver: filestore.csi.storage.gke.io parameters: type: backup deletionPolicy: Delete
Dalam contoh ini:
- Kolom
driver
digunakan oleh driver CSI untuk menyediakan snapshot. Dalam contoh ini,filestore.csi.storage.gke.io
menggunakan driver CSI Filestore. - Kolom
deletionPolicy
memberi tahu GKE apa yang harus dilakukan dengan objekVolumeSnapshotContent
dan snapshot yang mendasarinya saat objekVolumeSnapshot
terikat dihapus. TentukanDelete
untuk menghapus objekVolumeSnapshotContent
dan snapshot yang mendasarinya. TentukanRetain
jika Anda ingin mempertahankanVolumeSnapshotContent
dan snapshot yang mendasarinya.
- Kolom
Terapkan manifes:
kubectl apply -f volumesnapshotclass.yaml
Membuat VolumeSnapshot
Objek VolumeSnapshot
adalah permintaan untuk snapshot objek
PersistentVolumeClaim
yang sudah ada. Saat Anda membuat objek VolumeSnapshot
,
GKE otomatis membuat dan mengikatnya dengan
objek VolumeSnapshotContent
, yang merupakan resource di cluster Anda seperti
objek PersistentVolume
.
Simpan manifes berikut sebagai
volumesnapshot.yaml
.apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: my-snapshot spec: volumeSnapshotClassName: my-snapshotclass source: persistentVolumeClaimName: my-pvc
Terapkan manifes:
kubectl apply -f volumesnapshot.yaml
Setelah Anda membuat snapshot
Volume
, GKE akan membuat objekVolumeSnapshotContent
yang sesuai dalam cluster. Objek ini menyimpan snapshot dan binding objekVolumeSnapshot
. Anda tidak berinteraksi dengan objekVolumeSnapshotContents
secara langsung.Konfirmasi bahwa GKE membuat objek
VolumeSnapshotContents
:kubectl get volumesnapshotcontents
Outputnya mirip dengan hal berikut ini:
NAME AGE snapcontent-cee5fb1f-5427-11ea-a53c-42010a1000da 55s
Setelah konten snapshot Volume
dibuat, driver CSI yang Anda tentukan dalam
VolumeSnapshotClass
akan membuat snapshot pada sistem penyimpanan
yang sesuai. Setelah GKE membuat snapshot di sistem penyimpanan dan
mengikatnya ke objek VolumeSnapshot
di cluster, snapshot siap
digunakan. Anda dapat memeriksa status dengan menjalankan perintah berikut:
kubectl get volumesnapshot \
-o custom-columns='NAME:.metadata.name,READY:.status.readyToUse'
Jika snapshot siap digunakan, outputnya akan mirip dengan berikut ini:
NAME READY
my-snapshot true
Menghapus file pengujian
Hapus file pengujian yang Anda buat:
kubectl exec POD_NAME \ -- sh -c 'rm /usr/share/hello/hello.txt'
Verifikasi bahwa file sudah tidak ada:
kubectl exec POD_NAME \ -- sh -c 'cat /usr/share/hello/hello.txt'
Outputnya mirip dengan hal berikut ini:
cat: /usr/share/hello/hello.txt: No such file or directory
Memulihkan snapshot volume
Anda dapat mereferensikan VolumeSnapshot
dalam PersistentVolumeClaim
untuk menyediakan volume baru dengan data dari volume yang ada.
Untuk mereferensikan VolumeSnapshot
dalam PersistentVolumeClaim
, tambahkan
kolom dataSource
ke PersistentVolumeClaim
Anda.
Dalam contoh ini, Anda mereferensikan VolumeSnapshot
yang Anda buat di
PersistentVolumeClaim
baru dan memperbarui Deployment
untuk menggunakan klaim baru tersebut.
Simpan manifes berikut sebagai
pvc-restore.yaml
:Filestore
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-restore spec: dataSource: name: my-snapshot kind: VolumeSnapshot apiGroup: snapshot.storage.k8s.io storageClassName: enterprise-rwx accessModes: - ReadWriteMany resources: requests: storage: 1Ti
Terapkan manifes:
kubectl apply -f pvc-restore.yaml
Perbarui file
my-deployment.yaml
untuk menggunakanPersistentVolumeClaim
yang baru:... volumes: - name: my-volume persistentVolumeClaim: claimName: pvc-restore
Terapkan manifes yang diupdate:
kubectl apply -f my-deployment.yaml
Pastikan snapshot berhasil dipulihkan
Dapatkan nama
Pod
baru yang dibuat GKE untukDeployment
yang telah diupdate:kubectl get pods -l app=hello-app
Pastikan file pengujian ada:
kubectl exec NEW_POD_NAME \
-- sh -c 'cat /usr/share/hello/hello.txt'
Ganti NEW_POD_NAME
dengan nama Pod
baru
yang dibuat GKE.
Outputnya mirip dengan hal 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
VolumeSnapshot
.kubectl delete volumesnapshot my-snapshot
Hapus
VolumeSnapshotClass
.kubectl delete volumesnapshotclass my-snapshotclass
Hapus
Deployment
.kubectl delete deployments hello-app
Hapus objek
PersistentVolumeClaim
:kubectl delete pvc my-pvc pvc-restore
Langkah selanjutnya
- Baca dokumentasi Snapshot Volume Kubernetes.
- Pelajari ekspansi volume.
- Pelajari cara menginstal driver CSI secara manual.
- Pelajari penyimpanan file (Filestore) untuk GKE.