ב-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 חדשה:
- עמידה בדרישות המוקדמות.
- יוצרים מסמך JupyterLab notebook שמשויך למכונת 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.
-
יוצרים pod חדש למשאב
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 PROJECT_NAMESPACE \ --kubeconfig KUBECONFIG_PATHמחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_NAMESPACE: מרחב השמות של הפרויקט. -
KUBECONFIG_PATH: הנתיב של קובץ kubeconfig באשכול.
-