גיבוי Kubernetes עם Velero – הגדרה, מלכודות ולוחות זמנים

אובדן נתונים ב-StatefulSet לאחר deployment שנכשל עלול להפוך לשעות של שחזור ידני. אנחנו מגדירים גיבוי Kubernetes באמצעות Velero כך שתוכלו לשחזר כל namespace או PersistentVolume תוך דקות. הצוות שלנו מספק את הפרויקט במפתח מלא—מהסקר ועד היישום והתמיכה השוטפת—ומבטיח הגנה אמינה על נתונים ללא פשרות בלוחות זמנים.

היכולות שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1359
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

הגדרת גיבוי Kubernetes עם Velero – ניסיון ולוחות זמנים

אובדן נתונים ב-StatefulSet לאחר פריסה כושלת הוא תרחיש נפוץ באשכולות ייצור. ללא גיבויים ברמת namespace, השחזור אורך שעות: יצירה מחדש של ה-StatefulSet, חיפוש אחר snapshot ה-etcd האחרון, שחזור ידני של PersistentVolumes. נתקלנו בזה עשרות פעמים ואנחנו יודעים כיצד להימנע מתרחישים כאלה. Velero סוגר את הפער הזה: גיבוי ברמת namespace וברמת משאב עם תמיכה ב-PV באמצעות CSI snapshot או Kopia (לשעבר Restic). בשחזור בדיקה ל-namespace מבודד, הנתונים מתאוששים תוך 5–15 דקות – פי עשרה מהר יותר משחזור ידני, שאורך 2–3 שעות.

למה Velero על פני etcd Snapshots?

etcd מאחסן את מצב האשכול, אבל שחזור ממנו משמעותו החזרה של האשכול כולו לאחור. אם צריך להחזיר namespace בודד או PersistentVolume אחד לאחר פריסה פגומה, etcd לא יעזור. Velero מספק גרנולריות ברמת המשאב ותומך במדיניות שמירה גמישה.

בנוסף, Velero משתלב עם אחסון אובייקטים בענן (S3, GCS, Azure Blob), ומאפשר אחסון גיבויים באזור או בחשבון אחר – מרכיב מפתח בהתאוששות מאסון. לפי המדידות שלנו, זמן השחזור עבור יישום בודד קטן פי עשרה בהשוואה לתהליכים ידניים. באשכול טיפוסי עם 100 PVCs ו-50 עומסי עבודה, גיבוי מלא אורך כ-20 דקות.

כיצד להימנע מטעויות נפוצות בהגדרת Velero

הבעיה הראשונה: דרייבר CSI שאינו תומך ב-VolumeSnapshot API. אם דרייבר כזה לא רשם VolumeSnapshotClass, Velero ידלג בשקט על נתוני הנפח. הלוגים מציגים Included Volumes: 0. פתרון: הפעל את Node Agent (Kopia) לגיבוי ברמת קבצים או הוסף את ה-annotation velero.io/csi-volumesnapshot-class ל-PVC.

הטעות השנייה: מדיניות IAM לאחסון אובייקטים ללא הרשאות כתיבה לאובייקטים. ב-AWS זה נפוץ: לחשבון השירות יש גישה ל-bucket אבל לא לנתיב /*. גיבוי המטא-דאטה עובר, אבל הנתונים נכשלים. השגיאה בלוגים: AccessDenied על s3:PutObject עבור backups/*. פתרון: הוסף הצהרה נפרדת על arn:aws:s3:::velero-bucket/*.

השלישית: שחזור לאשכול עם StorageClass שונה. Velero לא ישנה אוטומטית את שם ה-StorageClass. יש צורך ב---namespace-mappings או ב-ConfigMap עם modifier למשאבים למיפוי שמות. ללא זה, ה-PVCs יישארו במצב Pending.

ארכיטקטורת גיבוי נכונה

עבור אשכול ייצור, התכנית נראית כך: אחסון אובייקטים: bucket S3 ייעודי (או GCS/Azure Blob) באזור או בחשבון אחר.

מדיניות גיבוי: שני לוחות זמנים באמצעות Schedule CR:

  • גיבוי מלא יומי של האשכול כולו עם TTL של 30 יום
  • גיבוי שעתי של namespaces קריטיים (מסדי נתונים, עומסי עבודה עם מצב) עם TTL של 7 ימים
דוגמה ללוח זמנים לגיבויים שעתיים
---
apiVersion: velero.io/v1
kind: Schedule
metadata:
  name: hourly-databases
  namespace: velero
spec:
  schedule: "0 * * * *"
  template:
    includedNamespaces:
      - postgres
      - redis
    storageLocation: default
    volumeSnapshotLocations:
      - default
    ttl: 168h0m0s
---

ודא שה-Node Agent (Kopia) מופעל אם כל PVs משתמשים ב-hostPath או NFS – snapshots של CSI לא יעבדו שם.

בדיקת שחזור היא חלק חובה מההגדרה. אנחנו מריצים שחזור ל-namespace נפרד עם הסיומת apiVersion: velero.io/v1 kind: Schedule metadata: name: hourly-databases namespace: velero spec: schedule: "0 * * * *" template: includedNamespaces: - postgres - redis storageLocation: default volumeSnapshotLocations: - default ttl: 168h0m0s כל שבועיים. אמת אוטומטית שהיישום מתחיל והנתונים שלמים.

השוואה: Velero לעומת etcd Snapshots

קריטריון Velero etcd Snapshot
גרנולריות namespace, משאב האשכול כולו
שחזור PV CSI/Kopia ידני + שחזור PV ידני
אחסון אחסון אובייקטים (S3/GCS) קובץ מקומי
זמן שחזור ליישום אחד 5–15 דקות 1–2 שעות
תמיכה בין-אזורית מובנה לא

ניטור גיבוי

Velero חושף מדדים של Prometheus בפורט 8085. העיקריים:

  • -restore-test
  • velero_backup_success_total
  • velero_backup_failure_total
  • velero_backup_duration_seconds

התראה על velero_restore_success_total למשך שעתיים היא חובה. יש לוח מחוונים מוכן של Grafana (ID 11055) שמציג סטטוסים ומשך זמן. השירות שלנו כולל אוטומציה של גיבוי כחלק מפרקטיקות DevOps.

תהליך הגדרה סוהר

  1. סקר – בדיקת StorageClass, דרייבר CSI, נוכחות velero_backup_failure_total > 0, רשימת יישומים.
  2. בחירת אחסון אובייקטים והגדרת IAM/חשבון שירות עם הרשאות מינימליות.
  3. התקנת Velero באמצעות Helm chart (VolumeSnapshotClass), הגדרת vmware-tanzu/velero ו-BackupStorageLocation.
  4. יצירת לוחות זמנים – עבור האשכול כולו ועבור namespaces קריטיים.
  5. הגדרת ניטור – מדדים, התראות, לוח מחוונים.
  6. שחזור ניסיון – ל-namespace נפרד עם בדיקת שלמות נתונים.
  7. תיעוד – תיאור כל Schedule CRs, נהלי שחזור מלא וחלקי.

מה כלול

  • ביקורת תשתית
  • התקנה והגדרה של Velero עבור הענן שלך
  • גיבוי ברמת קבצים באמצעות Kopia במידת הצורך
  • אינטגרציה עם Prometheus ו-Grafana (3 התראות)
  • ביצוע שחזור בדיקה
  • תיעוד והדרכה לצוות
  • שבועיים של תמיכה לאחר ההשקה

לוחות זמנים משוערים

תרחיש לוח זמנים
אשכול יחיד, CSI snapshot, S3 החל מיום אחד
אשכולות מרובים, שחזור בין-אזורי 2–3 ימים
+ הגדרת ניטור והתראות +0.5 יום
+ בדיקת התאוששות מאסון +יום אחד

התמחור נקבע באופן אישי לאחר ביקורת. צור קשר להערכה חינמית של התשתית שלך. למהנדסי ה-DevOps שלנו יש ניסיון של עשור בגיבוי Kubernetes; השלמנו מעל 200 פרויקטים של העברת K8s וגיבוי. אנחנו מבטיחים שההגדרה עובדת ויכולים להכשיר את הצוות שלך. הזמן הגדרת Velero לאשכול שלך עוד היום.

תיעוד Velero ב-GitHub