สำรอง Kubernetes ด้วย Velero
คู่มือนี้เรียบเรียงสำหรับ Ruk-Com PaaS หน้าจอและตัวเลือกอาจแตกต่างตามเวอร์ชันและสิทธิ์ของบัญชี
ตรวจสอบ Environment, Region, สิทธิ์บัญชี และสำรองค่าปัจจุบันก่อนดำเนินการกับระบบจริง
คำสั่ง ชื่อเมนู Parameter และค่าตัวอย่างในกรอบ Code คงรูปแบบตามระบบเพื่อให้คัดลอกและตรวจสอบได้ถูกต้อง
เวเลโรเป็นเครื่องมือสำรองและกู้คืนโอเพ่นซอร์สสำหรับการกู้คืนความเสียหายของ Cluster Kubernetes นอกจากนี้ยังรองรับการโยกย้าย ResourceCluster และการสำรองข้อมูล Volume ถาวรการสำรองข้อมูลด้วยตนเองหรือตามกำหนดเวลาไปยังที่จัดเก็บข้อมูลภายนอกทำให้มั่นใจในความปลอดภัยและการปกป้องข้อมูลของคุณ
คุณสามารถใช้ประโยชน์จาก Velero เพื่อบรรลุภารกิจต่อไปนี้:
- สำรองข้อมูล Cluster Kubernetes หรือ Resource ที่เลือก / Volume ถาวรและกู้คืนในกรณีที่ข้อมูล Cluster สูญหาย
- จำลอง Cluster Kubernetes ทั้งหมด (เช่นสร้าง Instance การพัฒนา / การทดสอบตาม Cluster ที่ใช้งานจริง) หรือย้าย Resource ที่เลือกไปยัง Cluster อื่น
คุณสามารถรวมการสำรองข้อมูล Velero เข้ากับ Cluster Kubernetes บน Platform ได้อย่างง่ายดายเพียงทำตามขั้นตอนง่ายๆด้านล่าง:
- เริ่มต้นด้วยการจัดระเบียบพื้นที่จัดเก็บข้อมูลที่เข้ากันได้กับ S3 ซึ่ง Velero จะใช้จัดเก็บข้อมูลสำรองของคุณตัวอย่างเช่นคุณสามารถใช้AWS S3,รักคอมสตอเรจ, หรือCluster MiniIO.
ในคำแนะนำของเราเราจะดำเนินการตามตัวเลือกหลังเพื่อให้คุณตั้งค่าทั้งหมดได้ภายใต้ Platform เดียวกันคุณสามารถติดตั้งCluster MiniIOที่ Platform ด้วยการคลิกเพียงไม่กี่ครั้งโดยใช้ Marketplace (ทำตามขั้นตอนในคำแนะนำที่เชื่อมโยง)
หลังการติดตั้งคุณจะเห็นข้อมูลรับรองการติดตั้ง MiniIO ของคุณ (ส่งทางอีเมลด้วย) คุณจะต้องใช้ข้อมูลนี้ในภายหลัง:
กำลังรอให้ Server แรกทำการฟอร์แมตดิสก์
- เชื่อมต่อกับแผงผู้ดูแลระบบของ Cluster MiniIO ของคุณและสร้างบัคเก็ตใหม่ (เช่นเวเลโร) ใน Cluster การจัดเก็บข้อมูล
3. ค้นหาข้อมูลล่าสุดvmware-tanzu/veleroปล่อย(เวอร์ชัน 1.8.1ในกรณีของเรา) คลิกลิงก์ในดาวน์โหลดส่วนและคัดลอก URL ไปที่ลินุกซ์เอเอ็มดี 64คลังเก็บเอกสารสำคัญ.
เคล็ดลับ:ในตัวอย่างของเราเราจะอัปโหลดไฟล์เวเลโรไบนารีไปยัง Server Kubernetes Cluster โดยตรงอย่างไรก็ตามคุณสามารถเก็บไว้ที่ใดก็ได้ (เช่นในเครื่อง) ด้วยการเข้าถึง API ไปยัง Cluster
- เชื่อมต่อกับระนาบควบคุม Cluster Kubernetes ผ่าน SSH (เช่นเว็บ SSH). ดาวน์โหลดไฟล์เก็บถาวรโดยใช้ลิงก์จากขั้นตอนก่อนหน้าและแตกไฟล์เวเลโรไบนารี่ไปยัง/usr/local/sbinDirectory
สำเนา
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
บันทึก:หากอัพโหลดผ่านตัวจัดการไฟล์คุณจะต้องปรับการอนุญาตของไฟล์:
สำเนา
chmod 755 /usr/local/sbin/velero
- สร้าง/root/หนังสือรับรอง-veleroไฟล์และใส่ข้อมูลรับรองการจัดเก็บข้อมูล S3 (ดูขั้นตอนแรก):
สำเนา
[default]
aws_access_key_id = {accessKey}
aws_secret_access_key = {secretKey}
6. ปรับคำสั่งด้านล่างโดยระบุค่าที่ถูกต้องและดำเนินการเพื่อ Deploy Velero ตัวยึดตำแหน่งต่อไปนี้จำเป็นต้องปรับเปลี่ยน:
- {ถัง}- ชื่อของที่เก็บข้อมูล (เวเลโรในกรณีของเราโปรดดูขั้นตอนที่สอง)
- {s3Url}- หนึ่งhttp://ลิงก์ไปยังที่เก็บข้อมูล S3 ของคุณ (http://minio.vip.Ruk-Com PaaS.cloud/ในกรณีของเราให้ดูขั้นตอนแรก)
- {ภาพ}- Container Image velero (Velero/เวเลโร:v1.8.1ในกรณีของเราโปรดดูขั้นตอนที่สาม)
สำเนา
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
เราใช้การจำลอง AWS เพื่อทำงานกับ S3 และเรสติคส่วนเสริมเนื่องจากเรามีที่เก็บข้อมูล NFS ซึ่งเราไม่มีฟังก์ชันสแน็ปช็อตดั้งเดิม
- มา Deploy Application ทดสอบพร้อมพื้นที่จัดเก็บและการติดตั้งเพื่อทดสอบว่า Velero สามารถสำรองข้อมูลได้อย่างไรเราจะใช้ Application ตัวอย่างต่อไปนี้:
สำเนา
# ใช้ไฟล์ Manifest ที่ผ่านการตรวจสอบและจัดเตรียมโดยทีม Ruk-Com
คุณสามารถตรวจสอบ Application ด้วยคำสั่งต่อไปนี้:
สำเนา
kubectl get pods,pvc,pv -n test-nginx
ดำเนินการคำสั่งด้านล่างเพื่อสร้างข้อมูลสุ่มที่จะจำลองการใช้งาน Application
สำเนา
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. คุณต้องใส่คำอธิบายประกอบพ็อด Application ของคุณเพื่อให้แน่ใจว่าข้อมูลพื้นที่จัดเก็บ NFS จะรวมอยู่ในการสำรองข้อมูลคุณสามารถรับชื่อพื้นที่จัดเก็บข้อมูลที่ต้องการได้จาก Application ที่ Deploy (ที่เก็บข้อมูลลึกลับในกรณีของเรา)
บันทึก:หากไม่มีคำอธิบายประกอบพีวีและพีวีซีคำจำกัดความจะถูกคัดลอกแต่ไม่ใช่ข้อมูล
สำเนา
kubectl -n test-nginx annotate pod/nginx-test backup.velero.io/backup-volumes=mystorage
9. ตอนนี้มาสร้างข้อมูลสำรองของ Application ทดสอบของคุณกันดีกว่า:
สำเนา
velero backup create test-nginx-b4 --include-namespaces test-nginx --wait
10. ตรวจสอบของคุณมินิไอโอพื้นที่จัดเก็บ. ข้อมูลจากเวเลโรและเรสติคควรจะมีอยู่
ตรวจสอบด้วยว่ามีข้อมูลสำรองที่สร้างขึ้นอยู่และใช้ได้
สำเนา
velero get backups
11. เรามาลบ Application ตัวอย่างออกทั้งหมดเพื่อทดสอบกระบวนการกู้คืนอย่างถูกต้อง
สำเนา
kubectl delete ns test-nginx
ล้างข้อมูล Shared Storage (ในไฟล์/ข้อมูลDirectory) เช่นกัน
12. เมื่อพร้อมแล้วให้กู้คืน Application ของคุณจากข้อมูลสำรองด้วยคำสั่งต่อไปนี้:
สำเนา
velero restore create --from-backup test-nginx-b4
แค่นั้นแหละ! คุณสามารถตรวจสอบได้ว่าทุกอย่างรวมถึงข้อมูลที่เก็บไว้ได้รับการกู้คืนแล้ว
กำหนดการสำรอง
Velero รองรับกระบวนการสำรองข้อมูลอัตโนมัติผ่านการกำหนดเวลาคุณสามารถสร้าง Template กำหนดการที่ต้องการได้ผ่านทางครอนสัญกรณ์ (ใช้เขตเวลา UTC) ไวยากรณ์ทั่วไปมีดังต่อไปนี้:
สำเนา
velero schedule create {scheduleName} --schedule="{schedule}"
- ใช้ตารางด้านล่างเป็นข้อมูลอ้างอิงเพื่อกำหนดตารางเวลาที่ต้องการโดยใช้นิพจน์ cron มาตรฐาน:
| ตำแหน่งตัวละคร | ระยะเวลาของตัวละคร | ค่าที่ยอมรับได้ |
|---|---|---|
| 1 | นาที | 0-59,* |
| 2 | ชั่วโมง | 0-23,* |
| 3 | วันของเดือน | 1-31,* |
| 4 | เดือน | 1-12,* |
| 5 | วันของสัปดาห์ | 0-7,* |
ตัวอย่างเช่นหากต้องการสร้างข้อมูลสำรองทุกๆหกชั่วโมง:
สำเนา
velero schedule create myschedule --schedule="0 */6 * * *"
- กำหนดการยังสามารถแสดงได้โดยใช้@ทุก {ระยะเวลา}ไวยากรณ์ระยะเวลาสามารถระบุได้โดยใช้การรวมกันของวินาที,นาที (ม.), และชั่วโมง (ชม.).
ตัวอย่างเช่นหากต้องการสร้างข้อมูลสำรองทุกๆหกชั่วโมง:
สำเนา
velero schedule create myschedule --schedule="@every 6h"
- คุณสามารถเพิ่มตัวเลือกการตั้งเวลาเพิ่มเติมได้ (เพื่อสำรองข้อมูลเนมสเปซเฉพาะตั้งค่าอายุการใช้งานการสำรองข้อมูลฯลฯ) ผ่าน Parameter เฉพาะใช้ช่วยตั้งค่าสถานะเพื่อดูรายการ Parameter ทั้งหมด:
สำเนา
velero schedule create --help
ยินดีด้วย! ตอนนี้คุณรู้วิธีสำรองข้อมูลโปรเจ็กต์ Kubernetes ของคุณโดยอัตโนมัติด้วย Velero แล้ว


