借助 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 实例,请按以下步骤操作:
- 满足前提条件。
- 创建与 JupyterLab 实例关联的 JupyterLab 笔记本,以复制恢复的数据。
获取您创建笔记本的 JupyterLab 实例的 pod 名称:
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
:JupyterLab 实例的 pod 名称。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 实例的项目命名空间。
创建一个名为
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
资源的名称。
为恢复的
PersistentVolumeClaim
资源创建新的 pod:kubectl apply -f ./vtxwb-data --kubeconfig KUBECONFIG_PATH
将
KUBECONFIG_PATH
替换为集群中 kubeconfig 文件的路径。等待
vtxwb-data
pod 达到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
:JupyterLab 实例的 pod 名称。
复制数据后,恢复的数据会显示在
/home/jovyan/restore
目录中。删除您创建的用于访问恢复数据的 pod:
kubectl delete pod vtxwb-data -n my-namespace` --kubeconfig KUBECONFIG_PATH
将
KUBECONFIG_PATH
替换为集群中 kubeconfig 文件的路径。