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

ב-Google Distributed Cloud (GDC)‎ עם air gap, אתם יכולים ליצור גיבויים ולשחזר נתונים מספריית הבית של מכונות Vertex AI Workbench JupyterLab. מכיוון ש-Vertex AI Workbench לא מגבה את ההגדרות במשאב המותאם אישית Notebook, צריך ליצור מכונה חדשה של JupyterLab ולהעביר אליה את הנתונים ששוחזרו.

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

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

כדי לקבל את ההרשאות שנדרשות להעתקת נתונים ששוחזרו, בקשו ממנהל החשבון הארגוני שלכם ב-IAM להקצות לכם את התפקיד 'מפתח אשכולות משתמשים' (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 notebook שמשויך למכונת 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. יוצרים pod חדש למשאב 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 PROJECT_NAMESPACE \
        --kubeconfig KUBECONFIG_PATH
    

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

    • ‫PROJECT_NAMESPACE: מרחב השמות של הפרויקט.
    • ‫KUBECONFIG_PATH: הנתיב של קובץ kubeconfig באשכול.