创建备份并恢复笔记本数据

借助 Google Distributed Cloud (GDC) 网闸隔离配置,您可以创建备份并从 JupyterLab 实例的主目录恢复数据。

本页面介绍了如何创建和恢复 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 实例。该值与 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 文件的路径。