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

