O Google Distributed Cloud (GDC) com isolamento físico permite criar backups e restaurar dados do diretório inicial das instâncias do JupyterLab.
Nesta página, descrevemos como criar e restaurar backups de dados de notebooks do Vertex AI Workbench. Se você é iniciante na Vertex AI, saiba mais sobre o Vertex AI Workbench.
Antes de começar
Para receber as permissões necessárias para copiar dados restaurados, peça ao
administrador da organização do IAM para conceder a você o papel de desenvolvedor de cluster de usuário (user-cluster-developer).
Criar um backup e restaurar dados da instância do JupyterLab
Defina aplicativos protegidos para criar um backup do diretório inicial de uma instância individual do JupyterLab ou dos diretórios iniciais de todas as instâncias do JupyterLab em um projeto de uma só vez.
Crie um recurso personalizado ProtectedApplication no cluster em que você quer
programar backups. Os planos de backup e restauração usam aplicativos protegidos para selecionar
recursos. Para saber como criar aplicativos protegidos, consulte
Estratégias de aplicativos protegidos.
O recurso personalizado ProtectedApplication contém os seguintes campos:
| Campo | Descrição | |||
|---|---|---|---|---|
resourceSelection |
A maneira como o objeto ProtectedApplication seleciona recursos para backups ou restaurações. |
|||
type |
O método para selecionar recursos. Um tipo Selector indica que os recursos com rótulos correspondentes precisam ser selecionados. |
|||
selector |
As regras de seleção. Esse campo contém os seguintes subcampos: | |||
matchLabels |
Os rótulos que o objeto ProtectedApplication usa para corresponder aos recursos. Esse campo contém os seguintes subcampos: |
|||
app.kubernetes.io/part-of |
O nome de um aplicativo de nível superior do qual este faz parte. Selecione o Vertex AI Workbench como o aplicativo de alto nível para instâncias do JupyterLab. | |||
app.kubernetes.io/component |
O componente dentro da arquitetura. Selecione recursos do Vertex AI Workbench que fornecem armazenamento para instâncias do JupyterLab. | |||
app.kubernetes.io/instance |
Um nome exclusivo que identifica a instância de um aplicativo. Restrinja o escopo para selecionar uma instância do JupyterLab. O valor é o mesmo que o nome da instância do JupyterLab no console do GDC. | |||
Use o recurso personalizado ProtectedApplication para selecionar o armazenamento de uma única instância do JupyterLab ou de todas as instâncias do JupyterLab em um projeto, como nos exemplos a seguir:
Selecione o armazenamento de uma única instância do JupyterLab:
O exemplo a seguir mostra um recurso personalizado
ProtectedApplicationque seleciona o armazenamento para uma instância do JupyterLab chamadamy-instance-nameno namespacemy-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-nameSelecione o armazenamento de todas as instâncias do JupyterLab:
O exemplo a seguir mostra um recurso personalizado
ProtectedApplicationque seleciona o armazenamento para todas as instâncias do JupyterLab no namespacemy-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 exemplo não contém o rótulo
app.kubernetes.io/instanceporque ele seleciona todas as instâncias do JupyterLab.
Para criar um backup e restaurar dados de uma instância do JupyterLab,
planeje um conjunto de backups
e planeje um conjunto de restaurações
usando o recurso personalizado ProtectedApplication que você definiu.
Copiar dados restaurados para uma nova instância do JupyterLab
Siga estas etapas para copiar dados restaurados do recurso PersistentVolumeClaim
de uma instância do JupyterLab para uma nova instância do JupyterLab:
- Atenda aos pré-requisitos.
- Crie um notebook do JupyterLab associado a uma instância do JupyterLab para copiar dados restaurados.
Consiga o nome do pod da instância do JupyterLab em que você criou o notebook:
kubectl get pods -l notebook-name=INSTANCE_NAME -n PROJECT_NAMESPACESubstitua:
INSTANCE_NAME: o nome da instância do JupyterLab que você configurou.PROJECT_NAMESPACE: o namespace do projeto em que você criou a instância do JupyterLab.
Consiga o nome da imagem que a instância do JupyterLab está executando:
kubectl get pods POD_NAME -n PROJECT_NAMESPACE -o jsonpath="{.spec.containers[0].image}"Substitua:
POD_NAME: o nome do pod da instância do JupyterLab.PROJECT_NAMESPACE: o namespace do projeto em que você criou a instância do JupyterLab.
Encontre o nome do recurso
PersistentVolumeClaimque foi 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_NAMESPACESubstitua:
RESTORED_INSTANCE_NAME: o nome da instância do JupyterLab que você restaurou.PROJECT_NAMESPACE: o namespace do projeto em que você criou a instância do JupyterLab.
Crie um arquivo YAML chamado
vtxwb-data.yamlcom o seguinte conteúdo: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_NAMESubstitua:
PROJECT_NAMESPACE: o namespace do projeto em que você criou a instância do JupyterLab.IMAGE_NAME: o nome da imagem de contêiner que a instância do JupyterLab está executando.RESTORED_PVC_NAME: o nome do recursoPersistentVolumeClaimrestaurado.
Crie um pod para o recurso
PersistentVolumeClaimrestaurado:kubectl apply -f ./vtxwb-data --kubeconfig KUBECONFIG_PATHSubstitua
KUBECONFIG_PATHpelo caminho do arquivo kubeconfig no cluster.Aguarde até que o pod
vtxwb-dataalcance o estadoRUNNING.Copie os dados restaurados para uma nova instância do 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 ./restoreSubstitua:
PROJECT_NAMESPACE: o namespace do projeto em que você criou a instância do JupyterLab.KUBECONFIG_PATH: o caminho do arquivo kubeconfig no cluster.POD_NAME: o nome do pod da instância do JupyterLab.
Depois de copiar os dados, os dados restaurados estarão disponíveis no diretório
/home/jovyan/restore.Exclua o pod que você criou para acessar os dados restaurados:
kubectl delete pod vtxwb-data -n my-namespace` --kubeconfig KUBECONFIG_PATHSubstitua
KUBECONFIG_PATHpelo caminho do arquivo kubeconfig no cluster.