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 執行個體:
- 符合必要條件。
- 建立與 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 檔案路徑。