יצירת תמונות מצב של נפח אחסון

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

המסמך הזה מיועד למפתחים בקבוצת מפעילים של אפליקציות, שאחראים ליצירת עומסי עבודה של אפליקציות בארגון שלהם. מידע נוסף זמין במאמר בנושא קהלים ב-GDC עם air gap.

לפני שמתחילים

כדי להשלים את המשימות שמתוארות במאמר הזה, צריך לבקש את ההרשאות הנדרשות ולהכין את הסביבה.

שליחת בקשה לתפקידי IAM

כדי לקבל את ההרשאות שדרושות ליצירת תמונות מצב של נפח אחסון, צריך להיות לכם תפקידים ספציפיים. התפקידים שנדרשים לכם תלויים בסוג האשכול שבו אתם עובדים: אשכול שיתופי בהיקף הארגון או אשכול רגיל בהיקף הפרויקט. למידע נוסף, קראו את המאמר הגדרות של אשכול Kubernetes.

תפקידים משותפים באשכול

כדי ליצור, למחוק, לערוך או להציג תמונות מצב של נפח באשכול משותף, צריך לבקש מאדמין IAM בפרויקט להקצות לכם את התפקיד אדמין של מרחב שמות (namespace-admin). התפקיד הזה משויך למרחב השמות של הפרויקט.

תפקידים סטנדרטיים באשכול

כדי ליצור, למחוק, לערוך או להציג תמונות מצב של נפח באשכול רגיל, צריך לבקש מאדמין IAM של הפרויקט להקצות לכם את התפקיד מפתח אשכול (cluster-developer). התפקיד הזה משויך למרחב השמות של הפרויקט.

הכנת הסביבה

כדי להריץ פקודות מול אשכול Kubernetes באמצעות ה-API, צריך לוודא שיש לכם את המשאבים הבאים:

  • מאתרים את שם אשכול Kubernetes או שואלים את אחד מחברי קבוצת האדמינים של הפלטפורמה מה שם האשכול.

  • נכנסים לחשבון ויוצרים את קובץ ה-kubeconfig לאשכול Kubernetes.

  • משתמשים בנתיב kubeconfig של אשכול Kubernetes כדי להחליף את KUBERNETES_CLUSTER_KUBECONFIG בהוראות האלה.

יצירת תמונת מצב של נפח

כדי לצלם תמונה של אובייקט PersistentVolumeClaim, צריך ליצור אובייקט VolumeSnapshot. המערכת לא מבטיחה עקביות של הנתונים. להשהות את האפליקציה ולנקות את הנתונים לפני שמצלמים תמונת מצב.

  1. יוצרים 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.

  2. פעולת יצירת התמונה תסתיים כשהערך של השדה .status.readyToUse יהפוך ל-true. כדי לבדוק את הסטטוס, אפשר להשתמש בפקודה הבאה:

      kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG get volumesnapshot \
        -o custom-columns='NAME:.metadata.name,READY:.status.readyToUse'
    
  3. מעדכנים את המניפסט של ה-PVC עם תמונת מצב של נפח האחסון שצוינה כמקור נתונים:

    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: השם של תמונת המצב של אמצעי האחסון.

המאמרים הבאים