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).
Setelah instalasi, Anda akan melihat kredensial instalasi MinIO Anda (juga dikirim melalui email). Anda akan memerlukan data ini nanti:
Menunggu server pertama untuk memformat disk.
2. Sambungkan ke panel admin cluster MinIO Anda dan buat bucket baru (misalnya, velero) di cluster penyimpanan.
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.
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
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}
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
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
Anda dapat memeriksa aplikasi dengan perintah berikut:
kubectl get pods,pvc,pv -n test-nginx
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
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).
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
9. Sekarang, mari buat backup aplikasi uji Anda:
velero backup create test-nginx-b4 --include-namespaces test-nginx --wait
10. Periksa penyimpanan MinIO Anda. Data dari Velero dan restic harus ada.
Juga, periksa bahwa backup yang dibuat ada dan baik-baik saja.
velero get backups
11. Mari hapus aplikasi contoh untuk menguji proses pemulihan dengan benar.
kubectl delete ns test-nginx
Bersihkan juga data Shared Storage (di direktori /data).
12. Setelah siap, pulihkan aplikasi Anda dari backup dengan perintah berikut:
velero restore create --from-backup test-nginx-b4
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 Position | Character Period | Acceptable Values |
---|---|---|
1 | Minute | 0-59,* |
2 | Hour | 0-23,* |
3 | Day of Month | 1-31,* |
4 | Month | 1-12,* |
5 | Day of Week | 0-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.