Creare un backup e ripristinare i dati del blocco note

Google Distributed Cloud (GDC) air-gapped ti consente di creare backup e ripristinare i dati dalla home directory delle tue istanze JupyterLab.

Questa pagina descrive la creazione e il ripristino dei backup dei dati dei notebook Vertex AI Workbench. Se non hai mai utilizzato Vertex AI, scopri di più su Vertex AI Workbench.

Prima di iniziare

Per ottenere le autorizzazioni necessarie per copiare i dati ripristinati, chiedi all'amministratore IAM dell'organizzazione di concederti il ruolo Sviluppatore cluster utente (user-cluster-developer).

Creare un backup e ripristinare i dati dell'istanza JupyterLab

Definisci le applicazioni protette per creare un backup della home directory di una singola istanza JupyterLab o delle home directory di tutte le istanze JupyterLab in un progetto contemporaneamente.

Crea una risorsa personalizzata ProtectedApplication nel cluster in cui vuoi pianificare i backup. I piani di backup e ripristino utilizzano le applicazioni protette per selezionare le risorse. Per informazioni sulla creazione di applicazioni protette, vedi Strategie per le applicazioni protette.

La risorsa personalizzata ProtectedApplication contiene i seguenti campi:

Campo Descrizione
resourceSelection Il modo in cui l'oggetto ProtectedApplication seleziona le risorse per i backup o i ripristini.
type Il metodo per selezionare le risorse. Un tipo Selector indica che devono essere selezionate le risorse con etichette corrispondenti.
selector Le regole di selezione. Questo campo contiene i seguenti campi secondari:
matchLabels Le etichette che l'oggetto ProtectedApplication utilizza per trovare le risorse corrispondenti. Questo campo contiene i seguenti campi secondari:
app.kubernetes.io/part-of Il nome di un'applicazione di livello superiore di cui fa parte. Seleziona Vertex AI Workbench come applicazione di primo livello per le istanze JupyterLab.
app.kubernetes.io/component Il componente all'interno dell'architettura. Seleziona le risorse di Vertex AI Workbench che forniscono spazio di archiviazione per le istanze JupyterLab.
app.kubernetes.io/instance Un nome univoco che identifica l'istanza di un'applicazione. Restringi l'ambito per selezionare un'istanza JupyterLab. Il valore è uguale al nome dell'istanza JupyterLab nella console GDC.

Utilizza la risorsa personalizzata ProtectedApplication per selezionare lo spazio di archiviazione di una singola istanza JupyterLab o di tutte le istanze JupyterLab in un progetto, come nei seguenti esempi:

  • Seleziona lo spazio di archiviazione di una singola istanza JupyterLab:

    L'esempio seguente mostra una risorsa personalizzata ProtectedApplication che seleziona lo spazio di archiviazione per un'istanza JupyterLab denominata my-instance-name nello spazio dei nomi 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
    
  • Seleziona lo spazio di archiviazione di tutte le istanze JupyterLab:

    L'esempio seguente mostra una risorsa personalizzata ProtectedApplication che seleziona lo spazio di archiviazione per tutte le istanze JupyterLab nello spazio dei nomi 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
    

    Questo esempio non contiene l'etichetta app.kubernetes.io/instance perché seleziona tutte le istanze JupyterLab.

Per creare un backup e ripristinare i dati da un'istanza JupyterLab, pianifica un insieme di backup e pianifica un insieme di ripristini utilizzando la risorsa personalizzata ProtectedApplication che hai definito.

Copia i dati ripristinati in una nuova istanza JupyterLab

Segui questi passaggi per copiare i dati ripristinati dalla risorsa PersistentVolumeClaim di un'istanza JupyterLab a una nuova istanza JupyterLab:

  1. Soddisfare i prerequisiti.
  2. Crea un notebook JupyterLab associato a un'istanza JupyterLab per copiare i dati ripristinati.
  3. Recupera il nome del pod dell'istanza JupyterLab in cui hai creato il blocco note:

    kubectl get pods -l notebook-name=INSTANCE_NAME -n PROJECT_NAMESPACE
    

    Sostituisci quanto segue:

    • INSTANCE_NAME: il nome dell'istanza JupyterLab che hai configurato.
    • PROJECT_NAMESPACE: lo spazio dei nomi del progetto in cui hai creato l'istanza JupyterLab.
  4. Recupera il nome dell'immagine su cui è in esecuzione l'istanza JupyterLab:

    kubectl get pods POD_NAME -n PROJECT_NAMESPACE -o jsonpath="{.spec.containers[0].image}"
    

    Sostituisci quanto segue:

    • POD_NAME: il nome del pod dell'istanza JupyterLab.
    • PROJECT_NAMESPACE: lo spazio dei nomi del progetto in cui hai creato l'istanza JupyterLab.
  5. Trova il nome della risorsa PersistentVolumeClaim che è stata ripristinata:

    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
    

    Sostituisci quanto segue:

    • RESTORED_INSTANCE_NAME: il nome dell'istanza JupyterLab che hai ripristinato.
    • PROJECT_NAMESPACE: lo spazio dei nomi del progetto in cui hai creato l'istanza JupyterLab.
  6. Crea un file YAML denominato vtxwb-data.yaml con i seguenti contenuti:

    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
    

    Sostituisci quanto segue:

    • PROJECT_NAMESPACE: lo spazio dei nomi del progetto in cui hai creato l'istanza JupyterLab.
    • IMAGE_NAME: il nome dell'immagine container in cui è in esecuzione l'istanza JupyterLab.
    • RESTORED_PVC_NAME: il nome della risorsa PersistentVolumeClaim ripristinata.
  7. Crea un nuovo pod per la risorsa PersistentVolumeClaim ripristinata:

    kubectl apply -f ./vtxwb-data --kubeconfig KUBECONFIG_PATH
    

    Sostituisci KUBECONFIG_PATH con il percorso del file kubeconfig nel cluster.

  8. Attendi che il pod vtxwb-data raggiunga lo stato RUNNING.

  9. Copia i dati ripristinati in una nuova istanza 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
    

    Sostituisci quanto segue:

    • PROJECT_NAMESPACE: lo spazio dei nomi del progetto in cui hai creato l'istanza JupyterLab.
    • KUBECONFIG_PATH: il percorso del file kubeconfig nel cluster.
    • POD_NAME: il nome del pod dell'istanza JupyterLab.

    Dopo aver copiato i dati, quelli ripristinati sono disponibili nella directory /home/jovyan/restore.

  10. Elimina il pod che hai creato per accedere ai dati ripristinati:

    kubectl delete pod vtxwb-data -n my-namespace` --kubeconfig KUBECONFIG_PATH
    

    Sostituisci KUBECONFIG_PATH con il percorso del file kubeconfig nel cluster.