建立備份及還原筆記本資料

Google Distributed Cloud (GDC) 實體隔離方案可讓您建立備份,並從 JupyterLab 執行個體的首頁目錄還原資料。

本頁說明如何建立及還原 Vertex AI Workbench 筆記本資料的備份。如果您是 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 執行個體。這個值與 GDC 控制台上的 JupyterLab 執行個體名稱相同。

使用 ProtectedApplication 自訂資源選取單一 JupyterLab 執行個體或專案中所有 JupyterLab 執行個體的儲存空間,如下列範例所示:

  • 選取單一 JupyterLab 執行個體的儲存空間

    以下範例顯示 ProtectedApplication 自訂資源,該資源會選取 my-project 命名空間中名為 my-instance-name 的 JupyterLab 執行個體儲存空間:

    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 自訂資源,該資源會選取 my-project 命名空間中所有 JupyterLab 執行個體的儲存空間:

    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 執行個體

請按照下列步驟,將還原的資料從 JupyterLab 執行個體的 PersistentVolumeClaim 資源複製到新的 JupyterLab 執行個體:

  1. 符合必要條件
  2. 建立與 JupyterLab 執行個體相關聯的 JupyterLab 筆記本,以複製還原的資料。
  3. 取得您建立筆記本的 JupyterLab 執行個體 pod 名稱:

    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:JupyterLab 執行個體的 Pod 名稱。
    • 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. 建立名為 vtxwb-data.yaml 的 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」資源建立新的 Pod:

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

    KUBECONFIG_PATH 替換為叢集中的 kubeconfig 檔案路徑。

  8. 等待 vtxwb-data pod 達到 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:JupyterLab 執行個體的 Pod 名稱。

    複製資料後,還原的資料會儲存在 /home/jovyan/restore 目錄中。

  10. 刪除您建立的 Pod,以存取還原的資料:

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

    請將 KUBECONFIG_PATH 改成叢集中的 kubeconfig 檔案路徑。