הערה: כאשר קלאסטר פרודקשן נופל עקב טעות של מפעיל או כשל בתשתית, כל שעת השבתה מתורגמת להפסדים. ללא גיבוי, השחזור יכול לקחת ימים. Disaster Recovery עבור Kubernetes הוא יותר מסתם גיבויים—זוהי אסטרטגיית שחזור מלאה. Velero (לשעבר Heptio Ark) הוא כלי קוד פתוח שהפך לסטנדרט לגיבוי ושחזור ב-Kubernetes. הוא תומך בכל ספקי אחסון הענן המרכזיים ומאפשר מדיניות גיבוי גמישה. למהנדסים שלנו עם ניסיון של 10+ שנים ב-Kubernetes יש מעל 50 פרויקטי גיבוי מוצלחים. להלן מדריך מעשי להגדרת Velero עם מקרי שימוש אמיתיים.
למה Velero עדיף על תמונות ענן מובנות?
תמונות ענן מובנות (EBS Snapshots, GCP Snapshots) קשורות לספק ספציפי ואינן ניידות. Velero מאחסן נתונים באחסון אובייקטים נייד—ניתן לשחזר את הקלאסטר בענן אחר או באתר מקומי. יתרה מכך, Velero מגבה לא רק PVs אלא גם את כל אובייקטי Kubernetes: ConfigMaps, Secrets, RBAC, CRDs. בפועל, זה מזרז את השחזור פי 3-4 בהשוואה ליצירה ידנית. לפי התיעוד הרשמי של Velero, שימוש ב-CSI VolumeSnapshots מגדיל את האמינות ב-40%, ועלות האחסון ב-S3 נמוכה פי 2 מתמונות מקומיות. זה נותן לך Disaster Recovery עם RTO של עד 30 דקות וחיסכון משמעותי.
התקנה ודרישות מוקדמות
Velero דורש גישה לאחסון אובייקטים, ולגיבוי PersistentVolume, לתמונות או למערכת קבצים דרך Node Agent (Kopia). התקנה בסיסית עבור AWS S3 כוללת את השלבים הבאים:
- צור תפקיד IAM עם הרשאות מינימליות: גישה ל-EC2 לתמונות ו-S3 לאחסון גיבויים.
- התקן את ה-CLI של Velero.
- הרץ את פקודת ההתקנה:
velero install \
--provider aws \
--plugins velero/velero-plugin-for-aws:v1.9.0 \
--bucket velero-backups-prod \
--backup-location-config region=us-east-1 \
--snapshot-location-config region=us-east-1 \
--secret-file ./credentials-velero \
--use-node-agent \
--features=EnableCSIvelero install \ --provider aws \ --plugins velero/velero-plugin-for-aws:v1.9.0 \ --bucket velero-backups-prod \ --backup-location-config region=us-east-1 \ --snapshot-location-config region=us-east-1 \ --secret-file ./credentials-velero \ --use-node-agent \ --features=EnableCSI מאפשר תמיכה ב-CSI VolumeSnapshots—השיטה המועדפת לתמונות PV בקלאסטרים מודרניים. חשוב להגדיר את תפקיד ה-IAM עם הרשאות מינימליות כולל גישה ל-EC2 ליצירת תמונות ו-S3 לאחסון גיבויים.
מידע נוסף על הרשאות גישה
עבור AWS: המדיניות צריכה לכלול פעולות --features=EnableCSI, ec2:CreateSnapshot, ec2:DescribeSnapshots, ec2:DeleteSnapshot, s3:PutObject, s3:GetObject. דוגמה arn: s3:ListBucket.
אסטרטגיית גיבוי: מה ובאיזו תדירות
אנחנו לא מגבים הכל ללא הבחנה. אנו מזהים namespaces ומשאבים קריטיים. גישה טיפוסית:
| רמה | אובייקטים | לוח זמנים | שמירה |
|---|---|---|---|
| פרודקשן | Namespaces עסקיים (פרודקשן, מסדי נתונים) | יומי בשעה 01:00 | 14 ימים |
| מערכת | ClusterRoles, StorageClasses, CRDs | יומי בשעה 02:00 | 30 ימים |
| ניסיוני | Pre-prod, dev | שבועי | 7 ימים |
לוח זמנים לדוגמה לפרודקשן:
---
apiVersion: velero.io/v1
kind: Schedule
metadata:
name: production-full
namespace: velero
spec:
schedule: "0 1 * * *"
template:
includedNamespaces:
- production
- databases
- monitoring
excludedResources:
- events
- endpointslices
labelSelector:
matchLabels:
backup: "true"
storageLocation: aws-s3
volumeSnapshotLocations:
- aws-snapshots
ttl: 336h
snapshotMoveData: true
---
arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy מעביר נתוני תמונות לאחסון אובייקטים דרך Kopia. זה קריטי לנדידה בין עננים. השוואה בין גישות אחסון גיבוי:
| קריטריון | אחסון אובייקטים (S3) | תמונה מקומית |
|---|---|---|
| ניידות בין עננים | כן | לא |
| עלות אחסון | ~$0.023/GB/חודש | ~$0.05/GB/חודש |
| זמן שחזור | 5-10 דקות | 2-5 דקות |
| עמידות | 99.999999999% | 99.99% |
איך לגבות StatefulSets עם מסדי נתונים?
עבור עומסי עבודה stateful (PostgreSQL, MySQL, Elasticsearch), תמונת PV פשוטה אינה מספיקה—נדרשת עקביות ברמת מסד הנתונים. אנו משתמשים ב-pre- ו-post-hooks של Velero:
---
spec:
hooks:
pre:
- exec:
container: db
command:
- /bin/sh
- -c
- "pg_dumpall > /tmp/backup.sql"
post:
- exec:
container: db
command:
- /bin/sh
- -c
- "rm /tmp/backup.sql"
---זה מבטיח שהנתונים עקביים במהלך הגיבוי. לאחרונה נתקלנו בתרחיש: לקוח איבד קלאסטר עקב טעות של מפעיל. בזכות Velero עם pre-hook של dump מסד נתונים, שחזרנו PostgreSQL תוך 15 דקות. ללא hooks, הנתונים היו לא עקביים והשחזור היה לוקח שעות. Hooks מאפשרים לחבר כל סקריפט: מ-dumps ועד ניקוי קבצים זמניים.
איך לשחזר קלאסטר מגיבוי?
שחזור מלא של namespace או חלקי—לפי משאבים ותוויות. לבדיקת גיבויים, אנו משחזרים ל-namespace מבודד עם מיפוי שמות. פקודות לדוגמה:
# Полное восстановление namespace
velero restore create --from-backup production-backup-latest --include-namespaces production --wait
# Частичное восстановление по меткам
velero restore create --from-backup production-backup-latest --include-resources deployments,services --selector app=orders-service
# В изолированный namespace для теста
velero restore create --from-backup production-backup-latest --namespace-mappings production:production-testכך אתה מאמת שלמות ללא סיכון לקלאסטר החי. הלקוח יכול לבצע שחזורי בדיקה בעצמו באמצעות ה-runbook שלנו. Velero תומך בנדידה בין קלאסטרים: צור גיבוי בקלאסטר הישן, פרוס חדש, שחזר את הגיבוי. בפועל, נדדנו מחסנית ELK פרודקשן תוך 40 דקות.
ניטור סטטוס גיבוי
Velero מייצא מדדים ל-Prometheus. התראות מרכזיות:
---
- alert: VeleroBackupFailed
expr: velero_backup_last_status{schedule!=""} == 1
for: 1m
labels:
severity: critical
annotations:
summary: "Бэкап {{ $labels.schedule }} провален"
---אנו מגדירים לוחות מחוונים של Grafana עם זמן הגיבוי המוצלח האחרון ונפח הנתונים. זה כלול בחבילת הבדיקה הסטנדרטית. אנו גם מוסיפים התראה על "גיבוי ישן מ-N ימים". רוצה לראות ניטור גיבוי בזמן אמת? צור קשר—נראה לך על קלאסטר חי.
טעויות נפוצות בהגדרת Velero
בעיות נפוצות כוללות הרשאות גישה לאחסון אובייקטים: שכחת לציין את האזור הנכון או מדיניות IAM. השנייה הנפוצה ביותר היא הגדרת CSI driver שגויה: אם ה-driver לא תומך ב-VolumeSnapshots, Velero נכשל עם שגיאה. זה נפתר על ידי התקנת CSI Driver והפעלת apiVersion: velero.io/v1 kind: Schedule metadata: name: production-full namespace: velero spec: schedule: "0 1 * * *" template: includedNamespaces: - production - databases - monitoring excludedResources: - events - endpointslices labelSelector: matchLabels: backup: "true" storageLocation: aws-s3 volumeSnapshotLocations: - aws-snapshots ttl: 336h snapshotMoveData: true . כמו כן, ודא של-kubelet בצמתים יש גישה למערכת הקבצים עבור Node Agent.
היקף העבודה להקמת Velero סוהר
- ביקורת קלאסטר: namespaces, PVCs, CSI drivers, RBAC
- יצירת חשבון שירות עם הרשאות מינימליות (IAM / ספק ענן)
- התקנת Velero עם תוספים לאחסון שלך (S3, GCS, Azure Blob)
- הגדרת לוחות זמנים לגיבוי ומדיניות שמירה
- Pre- ו-post-hooks עבור יישומים stateful
- בדיקת שחזור בסביבה מבודדת
- הגדרת התראות Prometheus (גיבוי נכשל, גיבוי ישן מדי)
- תיעוד ו-runbook
משך: 2-4 ימים. העלות מחושבת באופן אישי. אנו מבטיחים שחזור נכון: אם לא, נתקן ללא עלות. הזמן ביקורת קלאסטר עכשיו. קבל ייעוץ על הגדרת Velero—המהנדסים המוסמכים שלנו מוכנים לעזור.







