במאמר הזה מוסבר איך ליצור עותק, או קובץ snapshot, של נפח אחסון בנקודת זמן ספציפית לאפליקציית הקונטיינר. תמונת מצב של אמצעי אחסון מאפשרת להחזיר את אמצעי האחסון למצב קודם או להקצות אמצעי אחסון חדש.
המסמך הזה מיועד למפתחים בקבוצת מפעילי האפליקציות, שאחראים על יצירת עומסי עבודה של אפליקציות בארגון. מידע נוסף זמין במאמר קהלי היעד של GDC עם air gap.
לפני שמתחילים
כדי להשלים את המשימות שבמסמך הזה, צריך לבקש את ההרשאות הנדרשות ולהכין את הסביבה.
בקשת תפקידים ב-IAM
כדי לקבל את ההרשאות שנדרשות ליצירת קובצי snapshot של נפח אחסון, צריך תפקידים ספציפיים. התפקידים שאתם צריכים תלויים בשאלה אם אתם עובדים באשכול משותף ברמת הארגון או באשכול רגיל ברמת הפרויקט. למידע נוסף, קראו את המאמר הגדרות של אשכולות Kubernetes.
תפקידים משותפים באשכול
כדי ליצור, למחוק, לערוך או להציג תמונות מצב של נפחים באשכול משותף, צריך לבקש מאדמין הפרויקט ב-IAM להקצות לכם את התפקיד אדמין של מרחב שמות (namespace-admin).
התפקיד הזה קשור למרחב השמות של הפרויקט.
תפקידים רגילים באשכול
כדי ליצור, למחוק, לערוך או להציג תמונות מצב של נפחים באשכול רגיל, בקשו מהאדמין של הפרויקט ב-IAM להקצות לכם את התפקיד מפתח אשכולות (cluster-developer). התפקיד הזה קשור למרחב השמות של הפרויקט.
הכנת הסביבה
כדי להריץ פקודות באשכול Kubernetes באמצעות ה-API, צריך לוודא שיש לכם את המשאבים הבאים:
מאתרים את שם האשכול של Kubernetes, או שואלים חבר בקבוצת האדמינים של הפלטפורמה מה שם האשכול.
נכנסים לחשבון ויוצרים את קובץ kubeconfig לאשכול Kubernetes.
בהוראות הבאות, מחליפים את
KUBERNETES_CLUSTER_KUBECONFIGבנתיב kubeconfig של אשכול Kubernetes.
צילום תמונת מצב של אמצעי אחסון
כדי לצלם תמונת מצב של אובייקט PersistentVolumeClaim, יוצרים אובייקט VolumeSnapshot. המערכת לא מבטיחה עקביות בנתונים. לפני שיוצרים קובץ snapshot, צריך להשהות את האפליקציה ולמחוק את הנתונים.
יוצרים משאב בהתאמה אישית של
VolumeSnapshot:kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG \ --namespace NAMESPACE apply -f - <<EOF apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: VOLUME_SNAPSHOT_NAME spec: source: persistentVolumeClaimName: PVC_NAME EOFמחליפים את מה שכתוב בשדות הבאים:
KUBERNETES_CLUSTER_KUBECONFIG: קובץ ה-kubeconfig של האשכול.
NAMESPACE: מרחב השמות שבו יוצרים את קובץ ה-snapshot של אמצעי האחסון. באשכולות משותפים, צריך להשתמש במרחב שמות של פרויקט. באשכולות רגילים, זה יכול להיות כל מרחב שמות.
VOLUME_SNAPSHOT_NAME: שם האובייקט ב-VolumeSnapshot.
PVC_NAME: השם של ה-PVC שאתם יוצרים לו קובץ snapshot.
פעולת קובץ ה-snapshot מסתיימת כשהערך של השדה
.status.readyToUseהופך ל-true. כדי לבדוק את הסטטוס, אפשר להשתמש בפקודה הבאה:kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG get volumesnapshot \ -o custom-columns='NAME:.metadata.name,READY:.status.readyToUse'מעדכנים את המניפסט של ה-PVC עם קובץ ה-snapshot של אמצעי האחסון שצוין כמקור נתונים:
kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG \ --namespace NAMESPACE apply -f - <<EOF apiVersion: v1 kind: PersistentVolumeClaim metadata: name: PVC_NAME spec: dataSource: name: VOLUME_SNAPSHOT_NAME kind: VolumeSnapshot apiGroup: snapshot.storage.k8s.io storageClassName: standard-rwo accessModes: - ReadWriteOnce resources: requests: storage: 10Gi EOFמחליפים את מה שכתוב בשדות הבאים:
KUBERNETES_CLUSTER_KUBECONFIG: קובץ ה-kubeconfig של האשכול.
NAMESPACE: מרחב השמות שבו נמצא משאב ה-PVC. באשכולות משותפים, צריך להשתמש במרחב שמות של פרויקט. באשכולות רגילים, זה יכול להיות כל מרחב שמות.
PVC_NAME: השם של ה-PVC שאתם יוצרים לו קובץ snapshot.
VOLUME_SNAPSHOT_NAME: השם של קובץ ה-snapshot של אמצעי האחסון.