ศูนย์คู่มือ Ruk-Com PaaS

คู่มือการพัฒนา Deploy และดูแล Application บนแพลตฟอร์ม

RUK-COM PAAS / KUBERNETES HOSTING

สำรอง Kubernetes ด้วย Velero

คู่มือนี้เรียบเรียงสำหรับ Ruk-Com PaaS หน้าจอและตัวเลือกอาจแตกต่างตามเวอร์ชันและสิทธิ์ของบัญชี

ตรวจสอบ Environment, Region, สิทธิ์บัญชี และสำรองค่าปัจจุบันก่อนดำเนินการกับระบบจริง

คู่มือภาษาไทย

คำสั่ง ชื่อเมนู พารามิเตอร์ และค่าตัวอย่างในกรอบ Code คงรูปแบบตามระบบเพื่อให้คัดลอกและตรวจสอบได้ถูกต้อง

เวเลโรเป็นเครื่องมือสำรองและกู้คืนโอเพ่นซอร์สสำหรับการกู้คืนความเสียหายของคลัสเตอร์ Kubernetes นอกจากนี้ยังรองรับการโยกย้ายทรัพยากรคลัสเตอร์และการสำรองข้อมูลวอลุ่มถาวรการสำรองข้อมูลด้วยตนเองหรือตามกำหนดเวลาไปยังที่จัดเก็บข้อมูลภายนอกทำให้มั่นใจในความปลอดภัยและการปกป้องข้อมูลของคุณ

คุณสามารถใช้ประโยชน์จาก Velero เพื่อบรรลุภารกิจต่อไปนี้:

  • สำรองข้อมูลคลัสเตอร์ Kubernetes หรือทรัพยากรที่เลือก / วอลุ่มถาวรและกู้คืนในกรณีที่ข้อมูลคลัสเตอร์สูญหาย
  • จำลองคลัสเตอร์ Kubernetes ทั้งหมด (เช่นสร้างอินสแตนซ์การพัฒนา / การทดสอบตามคลัสเตอร์ที่ใช้งานจริง) หรือย้ายทรัพยากรที่เลือกไปยังคลัสเตอร์อื่น

คุณสามารถรวมการสำรองข้อมูล Velero เข้ากับคลัสเตอร์ Kubernetes บนแพลตฟอร์มได้อย่างง่ายดายเพียงทำตามขั้นตอนง่ายๆด้านล่าง:

  1. เริ่มต้นด้วยการจัดระเบียบพื้นที่จัดเก็บข้อมูลที่เข้ากันได้กับ S3 ซึ่ง Velero จะใช้จัดเก็บข้อมูลสำรองของคุณตัวอย่างเช่นคุณสามารถใช้AWS S3,รักคอมสตอเรจ, หรือคลัสเตอร์ MiniIO.

ในคำแนะนำของเราเราจะดำเนินการตามตัวเลือกหลังเพื่อให้คุณตั้งค่าทั้งหมดได้ภายใต้แพลตฟอร์มเดียวกันคุณสามารถติดตั้งคลัสเตอร์ MiniIOที่แพลตฟอร์มด้วยการคลิกเพียงไม่กี่ครั้งโดยใช้ Marketplace (ทำตามขั้นตอนในคำแนะนำที่เชื่อมโยง)

Image 44: MinIO cluster installationหลังการติดตั้งคุณจะเห็นข้อมูลรับรองการติดตั้ง MiniIO ของคุณ (ส่งทางอีเมลด้วย) คุณจะต้องใช้ข้อมูลนี้ในภายหลัง:

Image 45: MinIO cluster installedกำลังรอให้เซิร์ฟเวอร์แรกทำการฟอร์แมตดิสก์

  1. เชื่อมต่อกับแผงผู้ดูแลระบบของคลัสเตอร์ MiniIO ของคุณและสร้างบัคเก็ตใหม่ (เช่นเวเลโร) ในคลัสเตอร์การจัดเก็บข้อมูล

Image 46: MinIO create bucket3. ค้นหาข้อมูลล่าสุดvmware-tanzu/veleroปล่อย(เวอร์ชัน 1.8.1ในกรณีของเรา) คลิกลิงก์ในดาวน์โหลดส่วนและคัดลอก URL ไปที่ลินุกซ์เอเอ็มดี 64คลังเก็บเอกสารสำคัญ.

Image 47: Velero versions

เคล็ดลับ:ในตัวอย่างของเราเราจะอัปโหลดไฟล์เวเลโรไบนารีไปยังเซิร์ฟเวอร์ Kubernetes Cluster โดยตรงอย่างไรก็ตามคุณสามารถเก็บไว้ที่ใดก็ได้ (เช่นในเครื่อง) ด้วยการเข้าถึง API ไปยังคลัสเตอร์

  1. เชื่อมต่อกับระนาบควบคุมคลัสเตอร์ 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

Image 48: download Velero

บันทึก:หากอัพโหลดผ่านตัวจัดการไฟล์คุณจะต้องปรับการอนุญาตของไฟล์:

สำเนา

chmod 755 /usr/local/sbin/velero
  1. สร้าง/root/หนังสือรับรอง-veleroไฟล์และใส่ข้อมูลรับรองการจัดเก็บข้อมูล S3 (ดูขั้นตอนแรก):

สำเนา

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

Image 49: Velero credentials6. ปรับคำสั่งด้านล่างโดยระบุค่าที่ถูกต้องและดำเนินการเพื่อปรับใช้ 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

Image 50: Velero installเราใช้การจำลอง AWS เพื่อทำงานกับ S3 และเรสติคส่วนเสริมเนื่องจากเรามีที่เก็บข้อมูล NFS ซึ่งเราไม่มีฟังก์ชันสแน็ปช็อตดั้งเดิม

  1. มาปรับใช้แอปพลิเคชันทดสอบพร้อมพื้นที่จัดเก็บและการติดตั้งเพื่อทดสอบว่า Velero สามารถสำรองข้อมูลได้อย่างไรเราจะใช้แอปพลิเคชันตัวอย่างต่อไปนี้:

สำเนา

# ใช้ไฟล์ Manifest ที่ผ่านการตรวจสอบและจัดเตรียมโดยทีม Ruk-Com

Image 51: Kubernetes install applicationคุณสามารถตรวจสอบแอปพลิเคชันด้วยคำสั่งต่อไปนี้:

สำเนา

kubectl get pods,pvc,pv -n test-nginx

Image 52: Kubernetes check 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

Image 53: Kubernetes generate data8. คุณต้องใส่คำอธิบายประกอบพ็อดแอปพลิเคชันของคุณเพื่อให้แน่ใจว่าข้อมูลพื้นที่จัดเก็บ NFS จะรวมอยู่ในการสำรองข้อมูลคุณสามารถรับชื่อพื้นที่จัดเก็บข้อมูลที่ต้องการได้จากแอปพลิเคชันที่ปรับใช้ (ที่เก็บข้อมูลลึกลับในกรณีของเรา)

บันทึก:หากไม่มีคำอธิบายประกอบพีวีและพีวีซีคำจำกัดความจะถูกคัดลอกแต่ไม่ใช่ข้อมูล

สำเนา

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

Image 54: Kubernetes anotate application9. ตอนนี้มาสร้างข้อมูลสำรองของแอปพลิเคชันทดสอบของคุณกันดีกว่า:

สำเนา

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

Image 55: Velero create backup10. ตรวจสอบของคุณมินิไอโอพื้นที่จัดเก็บ. ข้อมูลจากเวเลโรและเรสติคควรจะมีอยู่

Image 56: MinIO backup dataตรวจสอบด้วยว่ามีข้อมูลสำรองที่สร้างขึ้นอยู่และใช้ได้

สำเนา

velero get backups

Image 57: Velero backup list11. เรามาลบแอปพลิเคชันตัวอย่างออกทั้งหมดเพื่อทดสอบกระบวนการกู้คืนอย่างถูกต้อง

สำเนา

kubectl delete ns test-nginx

Image 58: Kubernetes delete namespaceล้างข้อมูล Shared Storage (ในไฟล์/ข้อมูลไดเร็กทอรี) เช่นกัน

Image 59: delete data in storage12. เมื่อพร้อมแล้วให้กู้คืนแอปพลิเคชันของคุณจากข้อมูลสำรองด้วยคำสั่งต่อไปนี้:

สำเนา

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

Image 60: velero restore from backupแค่นั้นแหละ! คุณสามารถตรวจสอบได้ว่าทุกอย่างรวมถึงข้อมูลที่เก็บไว้ได้รับการกู้คืนแล้ว

กำหนดการสำรอง

Velero รองรับกระบวนการสำรองข้อมูลอัตโนมัติผ่านการกำหนดเวลาคุณสามารถสร้างเทมเพลตกำหนดการที่ต้องการได้ผ่านทางครอนสัญกรณ์ (ใช้เขตเวลา UTC) ไวยากรณ์ทั่วไปมีดังต่อไปนี้:

สำเนา

velero schedule create {scheduleName} --schedule="{schedule}"
  1. ใช้ตารางด้านล่างเป็นข้อมูลอ้างอิงเพื่อกำหนดตารางเวลาที่ต้องการโดยใช้นิพจน์ cron มาตรฐาน:
ตำแหน่งตัวละคร ระยะเวลาของตัวละคร ค่าที่ยอมรับได้
1 นาที 0-59,*
2 ชั่วโมง 0-23,*
3 วันของเดือน 1-31,*
4 เดือน 1-12,*
5 วันของสัปดาห์ 0-7,*

ตัวอย่างเช่นหากต้องการสร้างข้อมูลสำรองทุกๆหกชั่วโมง:

สำเนา

velero schedule create myschedule --schedule="0 */6 * * *"
  1. กำหนดการยังสามารถแสดงได้โดยใช้@ทุก {ระยะเวลา}ไวยากรณ์ระยะเวลาสามารถระบุได้โดยใช้การรวมกันของวินาที,นาที (ม.), และชั่วโมง (ชม.).

ตัวอย่างเช่นหากต้องการสร้างข้อมูลสำรองทุกๆหกชั่วโมง:

สำเนา

velero schedule create myschedule --schedule="@every 6h"
  1. คุณสามารถเพิ่มตัวเลือกการตั้งเวลาเพิ่มเติมได้ (เพื่อสำรองข้อมูลเนมสเปซเฉพาะตั้งค่าอายุการใช้งานการสำรองข้อมูลฯลฯ) ผ่านพารามิเตอร์เฉพาะใช้ช่วยตั้งค่าสถานะเพื่อดูรายการพารามิเตอร์ทั้งหมด:

สำเนา

velero schedule create --help

ยินดีด้วย! ตอนนี้คุณรู้วิธีสำรองข้อมูลโปรเจ็กต์ Kubernetes ของคุณโดยอัตโนมัติด้วย Velero แล้ว