Crie uma cópia de segurança e restaure os dados do bloco de notas

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 denominada my-instance-name no espaço de nomes my-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 nomes my-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 PersistentVolumeClaimrecurso de uma instância do JupyterLab para uma nova instância do JupyterLab:

  1. Cumpra os pré-requisitos.
  2. Crie um bloco de notas do JupyterLab associado a uma instância do JupyterLab para copiar os dados restaurados.
  3. 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.
  4. 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.
  5. 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.
  6. 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 recurso PersistentVolumeClaim restaurado.
  7. 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.

  8. Aguarde até que o pod vtxwb-data atinja o estado RUNNING.

  9. 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.

  10. 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.