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 חדשה:
- עמידה בדרישות המוקדמות.
- יוצרים מחברת JupyterLab שמשויכת למכונת JupyterLab כדי להעתיק את הנתונים ששוחזרו.
מאחזרים את שם ה-pod של מופע JupyterLab שבו יצרתם את ה-notebook:
kubectl get pods -l notebook-name=INSTANCE_NAME -n PROJECT_NAMESPACEמחליפים את מה שכתוב בשדות הבאים:
-
INSTANCE_NAME: השם של מופע JupyterLab שהגדרתם. -
PROJECT_NAMESPACE: מרחב השמות של הפרויקט שבו יצרתם את מופע JupyterLab.
-
מקבלים את השם של קובץ האימג' שמופעל במכונת JupyterLab:
kubectl get pods POD_NAME -n PROJECT_NAMESPACE -o jsonpath="{.spec.containers[0].image}"מחליפים את מה שכתוב בשדות הבאים:
-
POD_NAME: שם ה-Pod של מכונת JupyterLab. -
PROJECT_NAMESPACE: מרחב השמות של הפרויקט שבו יצרתם את מופע JupyterLab.
-
מאתרים את השם של משאב
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.
-
יוצרים קובץ 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ששוחזר.
-
יוצרים פוד חדש בשביל משאב
PersistentVolumeClaimששוחזר:kubectl apply -f ./vtxwb-data --kubeconfig KUBECONFIG_PATHמחליפים את
KUBECONFIG_PATHבנתיב של קובץ ה-kubeconfig באשכול.מחכים עד שמצב ה-pod
vtxwb-dataיהיהRUNNING.מעתיקים את הנתונים ששוחזרו למופע חדש של 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.-
מוחקים את ה-pod שיצרתם כדי לגשת לנתונים המשוחזרים:
kubectl delete pod vtxwb-data -n my-namespace` --kubeconfig KUBECONFIG_PATHמחליפים את
KUBECONFIG_PATHבנתיב של קובץ ה-kubeconfig באשכול.