Com o Google Distributed Cloud (GDC) air-gapped, é possível 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ê não conhece a 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 que conceda a você a função 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 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 a recursos. Esse campo contém os seguintes subcampos: |
|||
app.kubernetes.io/part-of |
O nome de um aplicativo de nível superior de que 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 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. Reduza o escopo para selecionar uma instância do JupyterLab. O valor é igual ao 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
ProtectedApplication
que seleciona o armazenamento para uma instância do JupyterLab chamadamy-instance-name
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: storage app.kubernetes.io/instance: my-instance-name
Selecione o armazenamento de todas as instâncias do JupyterLab:
O exemplo a seguir mostra um recurso personalizado
ProtectedApplication
que 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: storage
Este exemplo não contém o rótulo
app.kubernetes.io/instance
porque 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 os dados restaurados para uma nova instância do JupyterLab
Siga estas etapas para copiar os dados restaurados do recurso PersistentVolumeClaim
de uma instância do JupyterLab para uma nova:
- Atenda aos pré-requisitos.
- Crie um notebook do JupyterLab associado a uma instância do JupyterLab para copiar os 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_NAMESPACE
Substitua:
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.
Confira o nome da imagem em que a instância do JupyterLab está sendo executada:
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
PersistentVolumeClaim
que 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_NAMESPACE
Substitua:
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.yaml
com 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_NAME
Substitua:
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 recursoPersistentVolumeClaim
restaurado.
Crie um novo pod para o recurso
PersistentVolumeClaim
restaurado:kubectl apply -f ./vtxwb-data --kubeconfig KUBECONFIG_PATH
Substitua
KUBECONFIG_PATH
pelo caminho do arquivo kubeconfig no cluster.Aguarde até que o pod
vtxwb-data
alcance 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 ./restore
Substitua:
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, eles vão estar 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_PATH
Substitua
KUBECONFIG_PATH
pelo caminho do arquivo kubeconfig no cluster.