O Google Distributed Cloud (GDC) air-gapped permite criar backups e restaurar dados do diretório inicial das instâncias do JupyterLab.
Esta página descreve como criar e restaurar backups de dados de notebooks do Vertex AI Workbench. Se você não conhece o 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 do IAM da organização 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 mais informações sobre 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 ele faz parte. Selecione o Vertex AI Workbench como o aplicativo de nível superior para instâncias do JupyterLab. | |||
app.kubernetes.io/component |
O componente na 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:
Selecionar o armazenamento de uma única instância do JupyterLab:
O exemplo a seguir mostra um recurso personalizado
ProtectedApplicationque seleciona o armazenamento de 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-nameSelecionar o armazenamento de todas as instâncias do JupyterLab:
O exemplo a seguir mostra um recurso personalizado
ProtectedApplicationque seleciona o armazenamento de 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: storageEsse exemplo não contém o rótulo
app.kubernetes.io/instanceporque 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 definido.
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 configurada.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 do contêiner que a instância do JupyterLab está executando.RESTORED_PVC_NAME: o nome do recursoPersistentVolumeClaimrestaurado.
Crie um novo 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-dataatinja 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 criado para acessar os dados restaurados:
kubectl delete pod vtxwb-data -n my-namespace` --kubeconfig KUBECONFIG_PATHSubstitua
KUBECONFIG_PATHpelo caminho do arquivo kubeconfig no cluster.