O Google Distributed Cloud (GDC) air-gapped permite-lhe criar cópias de segurança e restaurar dados do diretório base das suas instâncias do JupyterLab.
Esta página descreve a criação e o restauro de cópias de segurança de dados de blocos de notas do Vertex AI Workbench. Se está a usar o Vertex AI pela primeira vez, saiba mais sobre o Vertex AI Workbench.
Antes de começar
Para receber as autorizações de que precisa para copiar os dados restaurados, peça ao administrador de IAM da sua organização que lhe conceda a função de programador (user-cluster-developer
) do cluster de utilizadores.
Crie uma cópia de segurança e restaure os dados da instância do JupyterLab
Defina aplicações protegidas para criar uma cópia de segurança do diretório principal de uma instância individual do JupyterLab ou dos diretórios principais de todas as instâncias do JupyterLab num projeto de uma só vez.
Crie um recurso personalizado ProtectedApplication
no cluster onde quer agendar cópias de segurança. Os planos de cópia de segurança e restauro usam aplicações protegidas para selecionar recursos. Para informações sobre a criação de aplicações protegidas, consulte o artigo
Estratégias de aplicações protegidas.
O recurso personalizado ProtectedApplication
contém os seguintes campos:
Campo | Descrição | |||
---|---|---|---|---|
resourceSelection |
A forma como o objeto ProtectedApplication seleciona recursos para cópias de segurança ou restauros. |
|||
type |
O método para selecionar recursos. Um Selector indica que têm de ser selecionados recursos com etiquetas correspondentes. |
|||
selector |
As regras de seleção. Este campo contém os seguintes subcampos: | |||
matchLabels |
As etiquetas que o objeto ProtectedApplication usa para fazer corresponder recursos. Este campo contém os seguintes subcampos: |
|||
app.kubernetes.io/part-of |
O nome de uma aplicação de nível superior da qual esta faz parte. Selecione o Vertex AI Workbench como a aplicação 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 uma aplicação. Restrinja o âmbito para selecionar uma instância do JupyterLab. O valor é igual ao nome da instância do JupyterLab na consola 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 num projeto, como nos seguintes exemplos:
Selecione o armazenamento de uma única instância do JupyterLab:
O exemplo seguinte mostra um recurso personalizado
ProtectedApplication
que seleciona o armazenamento para uma instância do JupyterLab denominadamy-instance-name
no espaço de nomesmy-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 seguinte mostra um recurso personalizado
ProtectedApplication
que seleciona o armazenamento para todas as instâncias do JupyterLab no espaço de nomesmy-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 a etiqueta
app.kubernetes.io/instance
porque seleciona todas as instâncias do JupyterLab.
Para criar uma cópia de segurança e restaurar dados a partir de uma instância do JupyterLab,
planeie um conjunto de cópias de segurança
e planeie um conjunto de restauros
através do recurso personalizado ProtectedApplication
que definiu.
Copie os dados restaurados para uma nova instância do JupyterLab
Siga estes passos para copiar os dados restaurados do PersistentVolumeClaim
recurso de uma instância do JupyterLab para uma nova instância do JupyterLab:
- Cumpra os pré-requisitos.
- Crie um bloco de notas do JupyterLab associado a uma instância do JupyterLab para copiar os dados restaurados.
Obtenha o nome do pod da instância do JupyterLab onde criou o bloco de notas:
kubectl get pods -l notebook-name=INSTANCE_NAME -n PROJECT_NAMESPACE
Substitua o seguinte:
INSTANCE_NAME
: o nome da instância do JupyterLab que configurou.PROJECT_NAMESPACE
: o espaço de nomes do projeto onde criou a instância do JupyterLab.
Obtenha o nome da imagem em que a instância do JupyterLab está a ser executada:
kubectl get pods POD_NAME -n PROJECT_NAMESPACE -o jsonpath="{.spec.containers[0].image}"
Substitua o seguinte:
POD_NAME
: o nome do agrupamento da instância do JupyterLab.PROJECT_NAMESPACE
: o espaço de nomes do projeto onde 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 o seguinte:
RESTORED_INSTANCE_NAME
: o nome da instância do JupyterLab que restaurou.PROJECT_NAMESPACE
: o espaço de nomes do projeto onde criou a instância do JupyterLab.
Crie um ficheiro YAML com o nome
vtxwb-data.yaml
e 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 o seguinte:
PROJECT_NAMESPACE
: o espaço de nomes do projeto onde criou a instância do JupyterLab.IMAGE_NAME
: o nome da imagem do contentor em que a instância do JupyterLab está a ser executada.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 ficheiro kubeconfig no cluster.Aguarde até que o pod
vtxwb-data
atinja 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 o seguinte:
PROJECT_NAMESPACE
: o espaço de nomes do projeto onde criou a instância do JupyterLab.KUBECONFIG_PATH
: o caminho do ficheiro kubeconfig no cluster.POD_NAME
: o nome do agrupamento da instância do JupyterLab.
Depois de copiar os dados, os dados restaurados estão disponíveis no diretório
/home/jovyan/restore
.Elimine o pod que criou para aceder aos seus dados restaurados:
kubectl delete pod vtxwb-data -n my-namespace` --kubeconfig KUBECONFIG_PATH
Substitua
KUBECONFIG_PATH
pelo caminho do ficheiro kubeconfig no cluster.