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

Google Distributed Cloud (GDC) 實體隔離方案可讓您建立備份,並從 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 執行個體。這個值與 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 PROJECT_NAMESPACE \
        --kubeconfig KUBECONFIG_PATH
    

    更改下列內容:

    • PROJECT_NAMESPACE:專案的命名空間。
    • KUBECONFIG_PATH:叢集中的 kubeconfig 檔案路徑。