Membuat cadangan dan memulihkan data notebook

Dengan Google Distributed Cloud (GDC) air-gapped, Anda dapat membuat cadangan dan memulihkan data dari direktori beranda instance JupyterLab Anda.

Halaman ini menjelaskan cara membuat dan memulihkan cadangan data notebook Vertex AI Workbench. Jika Anda baru menggunakan Vertex AI, pelajari lebih lanjut Vertex AI Workbench.

Sebelum memulai

Untuk mendapatkan izin yang diperlukan guna menyalin data yang dipulihkan, minta Admin IAM Organisasi Anda untuk memberi Anda peran User Cluster Developer (user-cluster-developer).

Membuat cadangan dan memulihkan data instance JupyterLab

Tentukan aplikasi yang dilindungi untuk membuat cadangan direktori beranda dari instance JupyterLab individual atau direktori beranda semua instance JupyterLab dalam project sekaligus.

Buat resource kustom ProtectedApplication di cluster tempat Anda ingin menjadwalkan pencadangan. Paket pencadangan dan pemulihan menggunakan aplikasi yang dilindungi untuk memilih resource. Untuk mengetahui informasi tentang cara membuat aplikasi yang dilindungi, lihat Strategi aplikasi yang dilindungi.

Resource kustom ProtectedApplication berisi kolom berikut:

Kolom Deskripsi
resourceSelection Cara objek ProtectedApplication memilih resource untuk pencadangan atau pemulihan.
type Metode untuk memilih resource. Jenis Selector menunjukkan bahwa resource dengan label yang cocok harus dipilih.
selector Aturan pemilihan. Kolom ini berisi sub-kolom berikut:
matchLabels Label yang digunakan objek ProtectedApplication untuk mencocokkan resource. Kolom ini berisi sub-kolom berikut:
app.kubernetes.io/part-of Nama aplikasi tingkat yang lebih tinggi yang menjadi bagian dari aplikasi ini. Pilih Vertex AI Workbench sebagai aplikasi tingkat tinggi untuk instance JupyterLab.
app.kubernetes.io/component Komponen dalam arsitektur. Pilih resource dari Vertex AI Workbench yang menyediakan penyimpanan untuk instance JupyterLab.
app.kubernetes.io/instance Nama unik yang mengidentifikasi instance aplikasi. Persempit cakupan untuk memilih instance JupyterLab. Nilainya sama dengan nama instance JupyterLab di konsol GDC.

Gunakan resource kustom ProtectedApplication untuk memilih penyimpanan satu instance JupyterLab atau semua instance JupyterLab dalam project, seperti dalam contoh berikut:

  • Pilih penyimpanan satu instance JupyterLab:

    Contoh berikut menunjukkan resource kustom ProtectedApplication yang memilih penyimpanan untuk instance JupyterLab bernama my-instance-name di namespace 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
    
  • Pilih penyimpanan semua instance JupyterLab:

    Contoh berikut menunjukkan resource kustom ProtectedApplication yang memilih penyimpanan untuk semua instance JupyterLab di namespace 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
    

    Contoh ini tidak berisi label app.kubernetes.io/instance karena memilih semua instance JupyterLab.

Untuk membuat cadangan dan memulihkan data dari instance JupyterLab, rencanakan serangkaian pencadangan dan rencanakan serangkaian pemulihan menggunakan resource kustom ProtectedApplication yang Anda tentukan.

Menyalin data yang dipulihkan ke instance JupyterLab baru

Ikuti langkah-langkah berikut untuk menyalin data yang dipulihkan dari resource PersistentVolumeClaim instance JupyterLab ke instance JupyterLab baru:

  1. Memenuhi prasyarat.
  2. Buat notebook JupyterLab yang terkait dengan instance JupyterLab untuk menyalin data yang dipulihkan.
  3. Dapatkan nama pod instance JupyterLab tempat Anda membuat notebook:

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

    Ganti kode berikut:

    • INSTANCE_NAME: nama instance JupyterLab yang Anda konfigurasi.
    • PROJECT_NAMESPACE: namespace project tempat Anda membuat instance JupyterLab.
  4. Dapatkan nama image yang dijalankan instance JupyterLab:

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

    Ganti kode berikut:

    • POD_NAME: nama pod instance JupyterLab.
    • PROJECT_NAMESPACE: namespace project tempat Anda membuat instance JupyterLab.
  5. Temukan nama resource PersistentVolumeClaim yang dipulihkan:

    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
    

    Ganti kode berikut:

    • RESTORED_INSTANCE_NAME: nama instance JupyterLab yang Anda pulihkan.
    • PROJECT_NAMESPACE: namespace project tempat Anda membuat instance JupyterLab.
  6. Buat file YAML bernama vtxwb-data.yaml dengan konten berikut:

    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
    

    Ganti kode berikut:

    • PROJECT_NAMESPACE: namespace project tempat Anda membuat instance JupyterLab.
    • IMAGE_NAME: nama image container yang dijalankan oleh instance JupyterLab.
    • RESTORED_PVC_NAME: nama resource PersistentVolumeClaim yang dipulihkan.
  7. Buat pod baru untuk resource PersistentVolumeClaim yang dipulihkan:

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

    Ganti KUBECONFIG_PATH dengan jalur file kubeconfig di cluster.

  8. Tunggu hingga pod vtxwb-data mencapai status RUNNING.

  9. Menyalin data yang dipulihkan ke instance JupyterLab baru:

    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
    

    Ganti kode berikut:

    • PROJECT_NAMESPACE: namespace project tempat Anda membuat instance JupyterLab.
    • KUBECONFIG_PATH: jalur file kubeconfig di cluster.
    • POD_NAME: nama pod instance JupyterLab.

    Setelah menyalin data, data yang dipulihkan tersedia di direktori /home/jovyan/restore.

  10. Hapus pod yang Anda buat untuk mengakses data yang dipulihkan:

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

    Ganti KUBECONFIG_PATH dengan jalur file kubeconfig di cluster.