Google Distributed Cloud (GDC) air-gapped te permite crear copias de seguridad y restaurar datos del directorio principal de tus instancias de JupyterLab.
En esta página se describe cómo crear y restaurar copias de seguridad de los datos de los cuadernos de Vertex AI Workbench. Si no conoces Vertex AI, consulta más información sobre Vertex AI Workbench.
Antes de empezar
Para obtener los permisos que necesitas para copiar los datos restaurados, pide al administrador de gestión de identidades y accesos de tu organización que te asigne el rol de desarrollador de clúster de usuarios (user-cluster-developer).
Crear una copia de seguridad y restaurar los datos de una instancia de JupyterLab
Define las aplicaciones protegidas para crear una copia de seguridad del directorio principal de una instancia de JupyterLab o de los directorios principales de todas las instancias de JupyterLab de un proyecto a la vez.
Crea un recurso personalizado ProtectedApplication en el clúster en el que quieras programar copias de seguridad. Los planes de copia de seguridad y restauración usan aplicaciones protegidas para seleccionar recursos. Para obtener información sobre cómo crear aplicaciones protegidas, consulta Estrategias de aplicaciones protegidas.
El recurso personalizado ProtectedApplication contiene los siguientes campos:
| Campo | Descripción | |||
|---|---|---|---|---|
resourceSelection |
La forma en que el objeto ProtectedApplication selecciona los recursos para las copias de seguridad o las restauraciones. |
|||
type |
El método para seleccionar recursos. El tipo Selector indica que se deben seleccionar los recursos con etiquetas coincidentes. |
|||
selector |
Las reglas de selección. Este campo contiene los siguientes subcampos: | |||
matchLabels |
Las etiquetas que usa el objeto ProtectedApplication para asociar recursos. Este campo contiene los siguientes subcampos: |
|||
app.kubernetes.io/part-of |
Nombre de una aplicación de nivel superior de la que forma parte. Selecciona Vertex AI Workbench como aplicación de alto nivel para las instancias de JupyterLab. | |||
app.kubernetes.io/component |
El componente de la arquitectura. Selecciona recursos de Vertex AI Workbench que proporcionen almacenamiento para instancias de JupyterLab. | |||
app.kubernetes.io/instance |
Nombre único que identifica la instancia de una aplicación. Acota el ámbito para seleccionar una instancia de JupyterLab. El valor es el mismo que el nombre de la instancia de JupyterLab en la consola de GDC. | |||
Usa el recurso personalizado ProtectedApplication para seleccionar el almacenamiento de una sola instancia de JupyterLab o de todas las instancias de JupyterLab de un proyecto, como en los siguientes ejemplos:
Selecciona el almacenamiento de una sola instancia de JupyterLab:
En el siguiente ejemplo se muestra un recurso personalizado
ProtectedApplicationque selecciona el almacenamiento de una instancia de JupyterLab llamadamy-instance-nameen el espacio de nombresmy-project: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-nameSelecciona el almacenamiento de todas las instancias de JupyterLab:
En el siguiente ejemplo se muestra un recurso personalizado
ProtectedApplicationque selecciona el almacenamiento de todas las instancias de JupyterLab del espacio de nombresmy-project: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: storageEste ejemplo no contiene la etiqueta
app.kubernetes.io/instanceporque selecciona todas las instancias de JupyterLab.
Para crear una copia de seguridad y restaurar datos de una instancia de JupyterLab, planifica un conjunto de copias de seguridad y planifica un conjunto de restauraciones con el recurso personalizado ProtectedApplication que has definido.
Copiar los datos restaurados en una nueva instancia de JupyterLab
Sigue estos pasos para copiar los datos restaurados del recurso PersistentVolumeClaim
de una instancia de JupyterLab a una nueva instancia de JupyterLab:
- Cumple los requisitos previos.
- Crea un cuaderno de JupyterLab asociado a una instancia de JupyterLab para copiar los datos restaurados.
Obtén el nombre del pod de la instancia de JupyterLab en la que has creado el cuaderno:
kubectl get pods -l notebook-name=INSTANCE_NAME -n PROJECT_NAMESPACEHaz los cambios siguientes:
INSTANCE_NAME: el nombre de la instancia de JupyterLab que has configurado.PROJECT_NAMESPACE: el espacio de nombres del proyecto en el que has creado la instancia de JupyterLab.
Obtén el nombre de la imagen en la que se ejecuta la instancia de JupyterLab:
kubectl get pods POD_NAME -n PROJECT_NAMESPACE -o jsonpath="{.spec.containers[0].image}"Haz los cambios siguientes:
POD_NAME: el nombre del pod de la instancia de JupyterLab.PROJECT_NAMESPACE: el espacio de nombres del proyecto en el que has creado la instancia de JupyterLab.
Busca el nombre del recurso
PersistentVolumeClaimque se ha restaurado:kubectl get pvc -l app.kubernetes.io/part-of=vtxwb,app.kubernetes.io/component=storage,app.kubernetes.io/instance=RESTORED_INSTANCE_NAME -n PROJECT_NAMESPACEHaz los cambios siguientes:
RESTORED_INSTANCE_NAME: el nombre de la instancia de JupyterLab que has restaurado.PROJECT_NAMESPACE: el espacio de nombres del proyecto en el que has creado la instancia de JupyterLab.
Crea un archivo YAML llamado
vtxwb-data.yamlcon el siguiente contenido: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_NAMEHaz los cambios siguientes:
PROJECT_NAMESPACE: el espacio de nombres del proyecto en el que has creado la instancia de JupyterLab.IMAGE_NAME: el nombre de la imagen del contenedor en la que se ejecuta la instancia de JupyterLab.RESTORED_PVC_NAME: el nombre del recurso restaurado.PersistentVolumeClaim
Crea un nuevo pod para el recurso
PersistentVolumeClaimrestaurado:kubectl apply -f ./vtxwb-data --kubeconfig KUBECONFIG_PATHSustituye
KUBECONFIG_PATHpor la ruta del archivo kubeconfig del clúster.Espera a que el
vtxwb-datapod alcance el estadoRUNNING.Copia los datos restaurados en una nueva instancia de 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 ./restoreHaz los cambios siguientes:
PROJECT_NAMESPACE: el espacio de nombres del proyecto en el que has creado la instancia de JupyterLab.KUBECONFIG_PATH: la ruta del archivo kubeconfig del clúster.POD_NAME: el nombre del pod de la instancia de JupyterLab.
Después de copiar los datos, estos estarán disponibles en el directorio
/home/jovyan/restore.Elimina el pod que has creado para acceder a los datos restaurados:
kubectl delete pod vtxwb-data -n my-namespace` --kubeconfig KUBECONFIG_PATHSustituye
KUBECONFIG_PATHpor la ruta del archivo kubeconfig del clúster.