יצירת גיבוי ושחזור של נתוני מחברת

‫Google Distributed Cloud (GDC) air-gapped מאפשר ליצור גיבויים ולשחזר נתונים מהספרייה הראשית של מופעי JupyterLab.

בדף הזה מוסבר איך ליצור גיבויים של נתונים מ-notebooks ב-Vertex AI Workbench ואיך לשחזר אותם. אם אתם חדשים ב-Vertex AI, כדאי לקרוא מידע נוסף על Vertex AI Workbench.

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

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

יצירת גיבוי ושחזור של נתונים במכונת JupyterLab

אתם יכולים להגדיר אפליקציות מוגנות כדי ליצור גיבוי של ספריית הבית של מופע JupyterLab יחיד או של ספריות הבית של כל מופעי JupyterLab בפרויקט בבת אחת.

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

משאב מותאם אישית ProtectedApplication מכיל את השדות הבאים:

שדה תיאור
resourceSelection הדרך שבה אובייקט ProtectedApplication בוחר משאבים לגיבויים או לשחזורים.
type השיטה לבחירת משאבים. סוג Selector מציין שצריך לבחור משאבים עם תוויות תואמות.
selector כללי הבחירה. השדה הזה מכיל את שדות המשנה הבאים:
matchLabels התוויות שבהן משתמש האובייקט ProtectedApplication כדי להתאים משאבים. השדה הזה מכיל את שדות המשנה הבאים:
app.kubernetes.io/part-of השם של אפליקציה ברמה גבוהה יותר שהאפליקציה הזו היא חלק ממנה. בוחרים ב-Vertex AI Workbench כאפליקציה ברמה גבוהה למכונות JupyterLab.
app.kubernetes.io/component הרכיב בארכיטקטורה. בוחרים משאבים מ-Vertex AI Workbench שמספקים אחסון למכונות JupyterLab.
app.kubernetes.io/instance שם ייחודי שמזהה את המופע של האפליקציה. מצמצמים את ההיקף כדי לבחור מופע של JupyterLab. הערך זהה לשם של מופע JupyterLab במסוף GDC.

משתמשים במשאב המותאם אישית ProtectedApplication כדי לבחור את האחסון של מופע JupyterLab יחיד או של כל מופעי JupyterLab בפרויקט, כמו בדוגמאות הבאות:

  • בחירת האחסון של מופע יחיד של JupyterLab:

    בדוגמה הבאה מוצג משאב בהתאמה אישית ProtectedApplication שבו נבחר האחסון עבור מופע JupyterLab בשם my-instance-name במרחב השמות my-project:

    apiVersion: gkebackup.gke.io/v1
    kind: ProtectedApplication
    metadata:
      name: my-protected-application
      namespace: my-project
    spec:
      resourceSelection:
        type: Selector
        selector:
          matchLabels:
            app.kubernetes.io/part-of: vtxwb
            app.kubernetes.io/component: storage
            app.kubernetes.io/instance: my-instance-name
    
  • בחירת האחסון של כל מופעי JupyterLab:

    בדוגמה הבאה מוצג משאב מותאם אישית ProtectedApplication שבוחר את האחסון לכל המכונות של JupyterLab במרחב השמות my-project:

    apiVersion: gkebackup.gke.io/v1
    kind: ProtectedApplication
    metadata:
      name: my-protected-application
      namespace: my-project
    spec:
      resourceSelection:
        type: Selector
        selector:
          matchLabels:
            app.kubernetes.io/part-of: vtxwb
            app.kubernetes.io/component: storage
    

    הדוגמה הזו לא מכילה את התווית app.kubernetes.io/instance כי היא בוחרת את כל המופעים של JupyterLab.

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

העתקת נתונים ששוחזרו למכונת JupyterLab חדשה

כדי להעתיק נתונים ששוחזרו מהמשאב PersistentVolumeClaim של מכונת JupyterLab למכונת JupyterLab חדשה:

  1. עמידה בדרישות המוקדמות.
  2. יוצרים מחברת JupyterLab שמשויכת למכונת JupyterLab כדי להעתיק את הנתונים ששוחזרו.
  3. מאחזרים את שם ה-pod של מופע JupyterLab שבו יצרתם את ה-notebook:

    kubectl get pods -l notebook-name=INSTANCE_NAME -n PROJECT_NAMESPACE
    

    מחליפים את מה שכתוב בשדות הבאים:

    • INSTANCE_NAME: השם של מופע JupyterLab שהגדרתם.
    • PROJECT_NAMESPACE: מרחב השמות של הפרויקט שבו יצרתם את מופע JupyterLab.
  4. מקבלים את השם של קובץ האימג' שמופעל במכונת JupyterLab:

    kubectl get pods POD_NAME -n PROJECT_NAMESPACE -o jsonpath="{.spec.containers[0].image}"
    

    מחליפים את מה שכתוב בשדות הבאים:

    • POD_NAME: שם ה-Pod של מכונת JupyterLab.
    • PROJECT_NAMESPACE: מרחב השמות של הפרויקט שבו יצרתם את מופע JupyterLab.
  5. מאתרים את השם של משאב PersistentVolumeClaim ששוחזר:

    kubectl get pvc -l app.kubernetes.io/part-of=vtxwb,app.kubernetes.io/component=storage,app.kubernetes.io/instance=RESTORED_INSTANCE_NAME -n PROJECT_NAMESPACE
    

    מחליפים את מה שכתוב בשדות הבאים:

    • RESTORED_INSTANCE_NAME: השם של מופע JupyterLab ששוחזר.
    • PROJECT_NAMESPACE: מרחב השמות של הפרויקט שבו יצרתם את מופע JupyterLab.
  6. יוצרים קובץ YAML בשם vtxwb-data.yaml עם התוכן הבא:

    apiVersion: v1
    kind: Pod
    metadata:
      name: vtxwb-data
      namespace: PROJECT_NAMESPACE
      labels:
        aiplatform.gdc.goog/service-type: workbench
    spec:
      containers:
      - args:
        - sleep infinity
        command:
        - bash
        - -c
        image: IMAGE_NAME
        imagePullPolicy: IfNotPresent
        name: vtxwb-data
        resources:
          limits:
            cpu: "1"
            memory: 1Gi
          requests:
            cpu: "1"
            memory: 1Gi
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /home/jovyan
          name: restore-data
        workingDir: /home/jovyan
      volumes:
      - name: restore-data
        persistentVolumeClaim:
          claimName: RESTORED_PVC_NAME
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_NAMESPACE: מרחב השמות של הפרויקט שבו יצרתם את מופע JupyterLab.
    • IMAGE_NAME: השם של קובץ האימג' של קונטיינר שמופעל על ידי מופע JupyterLab.
    • RESTORED_PVC_NAME: השם של משאב PersistentVolumeClaim ששוחזר.
  7. יוצרים פוד חדש בשביל משאב PersistentVolumeClaim ששוחזר:

    kubectl apply -f ./vtxwb-data --kubeconfig KUBECONFIG_PATH
    

    מחליפים את KUBECONFIG_PATH בנתיב של קובץ ה-kubeconfig באשכול.

  8. מחכים עד שמצב ה-pod‏ vtxwb-data יהיה RUNNING.

  9. מעתיקים את הנתונים ששוחזרו למופע חדש של JupyterLab:

    kubectl cp PROJECT_NAMESPACE/vtxwb-data:/home/jovyan ./restore --kubeconfig KUBECONFIG_PATH
    
    kubectl cp ./restore PROJECT_NAMESPACE/POD_NAME:/home/jovyan/restore --kubeconfig KUBECONFIG_PATH
    
    rm ./restore
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_NAMESPACE: מרחב השמות של הפרויקט שבו יצרתם את מופע JupyterLab.
    • KUBECONFIG_PATH: הנתיב של קובץ ה-kubeconfig באשכול.
    • POD_NAME: שם ה-Pod של מכונת JupyterLab.

    אחרי העתקת הנתונים, הנתונים המשוחזרים יהיו זמינים בספרייה /home/jovyan/restore.

  10. מוחקים את ה-pod שיצרתם כדי לגשת לנתונים המשוחזרים:

    kubectl delete pod vtxwb-data -n my-namespace` --kubeconfig KUBECONFIG_PATH
    

    מחליפים את KUBECONFIG_PATH בנתיב של קובץ ה-kubeconfig באשכול.