Lewati ke konten utama

Kubernetes Cluster: Velero Backups

Velero adalah alat open-source untuk backup dan pemulihan untuk pemulihan bencana cluster Kubernetes. Ini juga mendukung migrasi sumber daya cluster dan backup volume persisten. Backup manual atau terjadwal ke penyimpanan eksternal memastikan keamanan dan perlindungan data Anda.

Anda dapat memanfaatkan Velero untuk melakukan tugas-tugas berikut:

  • Backup cluster Kubernetes Anda atau sumber daya/volume persisten terpilih dan memulihkan jika terjadi kehilangan data cluster.
  • Mereplikasi seluruh cluster Kubernetes (misalnya membuat instance pengembangan/pengujian berdasarkan cluster produksi) atau memigrasikan sumber daya terpilih ke cluster lain.

Anda dapat dengan mudah mengintegrasikan Velero backup dengan cluster Kubernetes di platform. Cukup ikuti langkah-langkah sederhana di bawah ini:

1. Mulai dengan mengatur penyimpanan yang kompatibel dengan S3, yang akan digunakan Velero untuk menyimpan backup Anda. Misalnya, Anda dapat menggunakan AWS S3, VHI S3, atau MinIO cluster.

Dalam panduan kami, kami akan melanjutkan dengan opsi terakhir sehingga Anda dapat memiliki seluruh pengaturan di bawah platform yang sama. Anda dapat menginstal MinIO Cluster di platform dalam beberapa klik menggunakan Marketplace (ikuti langkah-langkah dalam panduan yang terhubung).

MinIO cluster installation

Setelah instalasi, Anda akan melihat kredensial instalasi MinIO Anda (juga dikirim melalui email). Anda akan memerlukan data ini nanti:

MinIO cluster installed

Menunggu server pertama untuk memformat disk.

2. Sambungkan ke panel admin cluster MinIO Anda dan buat bucket baru (misalnya, velero) di cluster penyimpanan.

MinIO create bucket

3. Temukan vmware-tanzu/velero rilis terbaru (v1.8.1 dalam kasus kami), klik tautan di bagian Download dan salin URL ke arsip linux amd64.

Velero versions
tip

Dalam contoh kami, kami akan mengunggah velero binary langsung ke server Cluster Kubernetes. Namun, Anda dapat menyimpannya di mana saja (misalnya, secara lokal) dengan akses API ke cluster.

4. Sambungkan ke control plane Cluster Kubernetes Anda melalui SSH (misalnya, Web SSH).
Unduh arsip menggunakan tautan dari langkah sebelumnya dan ekstrak velero biner ke direktori /usr/local/sbin.

wget https://github.com/vmware-tanzu/velero/releases/download/v1.8.1/velero-v1.8.1-linux-amd64.tar.gz
tar -zxvf velero-v1.8.1-linux-amd64.tar.gz -C /usr/local/sbin --strip-components=1 velero-v1.8.1-linux-amd64/velero
download Velero
peringatan

Jika mengunggah melalui pengelola file, Anda perlu menyesuaikan izin file:1chmod 755 /usr/local/sbin/velero

5. Buat file /root/credentials-velero dan masukkan kredensial penyimpanan S3 (lihat langkah pertama):

[default]
aws_access_key_id = {accessKey}
aws_secret_access_key = {secretKey}
Velero credentials

6. Sesuaikan perintah di bawah ini dengan memberikan nilai yang benar dan jalankan untuk mendeply Velero. Placeholder berikut perlu disesuaikan:

  • {bucket} - nama bucket (velero dalam kasus kami, lihat langkah kedua)
  • {s3Url} - tautan http:// ke penyimpanan S3 Anda (http://minio.vip.jelastic.cloud/ dalam kasus kami, lihat langkah pertama)
  • {image} - image container velero (velero/velero:v1.8.1 dalam kasus kami, lihat langkah ketiga)
velero install --provider aws --plugins velero/velero-plugin-for-aws:v1.4.1 --bucket {bucket} --secret-file ./credentials-velero --use-volume-snapshots=true --backup-location-config region=default,s3ForcePathStyle="true",s3Url={s3Url} --image {image} --snapshot-location-config region="default" --use-restic
Velero install

Kami menggunakan emulasi AWS untuk bekerja dengan S3 dan add-on restic karena kami memiliki penyimpanan NFS untuk mana kami tidak memiliki fungsionalitas snapshot asli.

7. Mari kita deploy aplikasi uji dengan penyimpanan dan mount untuk menguji bagaimana Velero dapat melakukan backup. Kami akan menggunakan aplikasi contoh berikut:

wget https://docs.dewacloud.com/docs/kubernetes-velero-backups/test-instance.yaml
kubectl apply -f test-instance.yaml
Kubernetes install application

Anda dapat memeriksa aplikasi dengan perintah berikut:

kubectl get pods,pvc,pv -n test-nginx
Kubernetes check application

Jalankan perintah yang tercantum di bawah ini untuk menghasilkan beberapa data acak yang akan meniru penggunaan aplikasi.

kubectl -n test-nginx exec -it nginx-test -- /bin/bash
dd if=/dev/urandom of=/usr/share/nginx/html/test-file3.txt count=512000 bs=1024
ls -laSh /usr/share/nginx/html/
exit
Kubernetes generate data

8. Anda perlu memberi anotasi pada pod aplikasi Anda untuk memastikan data penyimpanan NFS disertakan dalam backup. Anda bisa mendapatkan nama penyimpanan yang diperlukan dari aplikasi yang telah dideploy (mystorage dalam kasus kami).

peringatan

Tanpa anotasi, definisi PV dan PVC disalin tetapi tidak pada datanya.

kubectl -n test-nginx annotate pod/nginx-test backup.velero.io/backup-volumes=mystorage
Kubernetes annotate application

9. Sekarang, mari buat backup aplikasi uji Anda:

velero backup create test-nginx-b4 --include-namespaces test-nginx --wait
Velero create backup

10. Periksa penyimpanan MinIO Anda. Data dari Velero dan restic harus ada.

MinIO backup data

Juga, periksa bahwa backup yang dibuat ada dan baik-baik saja.

velero get backups
Velero backup list

11. Mari hapus aplikasi contoh untuk menguji proses pemulihan dengan benar.

kubectl delete ns test-nginx
Kubernetes delete namespace

Bersihkan juga data Shared Storage (di direktori /data).

delete data in storage

12. Setelah siap, pulihkan aplikasi Anda dari backup dengan perintah berikut:

velero restore create --from-backup test-nginx-b4
velero restore from backup

Itu saja! Anda dapat memverifikasi bahwa semuanya, termasuk data yang disimpan, telah dipulihkan.

Backup Scheduling

Velero mendukung otomatisasi proses backup melalui penjadwalan. Anda dapat membuat template jadwal yang diperlukan melalui notasi cron (menggunakan zona waktu UTC). Sintaks umum adalah sebagai berikut:

velero schedule create {scheduleName} --schedule="{schedule}"

1. Gunakan tabel di bawah ini sebagai referensi untuk menyetel jadwal yang diperlukan menggunakan ekspresi cron standar:

Character PositionCharacter PeriodAcceptable Values
1Minute0-59,*
2Hour0-23,*
3Day of Month1-31,*
4Month1-12,*
5Day of Week0-7,*

Misalnya, untuk membuat backup setiap enam jam:

velero schedule create myschedule --schedule="0 */6 * * *"

2. Jadwal juga dapat dinyatakan menggunakan sintaks @every {duration}. Durasi dapat ditentukan menggunakan kombinasi seconds (s), minutes (m), dan hours (h).

Misalnya, untuk membuat backup setiap enam jam:

velero schedule create myschedule --schedule="@every 6h"

3. Anda dapat menambahkan opsi penjadwalan tambahan (untuk mencadangkan namespace tertentu, menetapkan umur backup, dll.) melalui parameter khusus. Gunakan flag help untuk melihat daftar lengkap parameter:

velero schedule create --help

Selamat! Sekarang Anda tahu cara mencadangkan proyek Kubernetes Anda secara otomatis dengan Velero.

Baca Juga