Notebook-Daten sichern und wiederherstellen

Mit Google Distributed Cloud (GDC) air-gapped können Sie Sicherungen erstellen und Daten aus dem Home-Verzeichnis Ihrer JupyterLab-Instanzen wiederherstellen.

Auf dieser Seite wird beschrieben, wie Sie Sicherungen von Vertex AI Workbench-Notebookdaten erstellen und wiederherstellen. Wenn Sie Vertex AI noch nicht kennen, finden Sie weitere Informationen unter Vertex AI Workbench.

Hinweis

Bitten Sie Ihren IAM-Administrator der Organisation, Ihnen die Rolle „User Cluster Developer“ (user-cluster-developer) zuzuweisen, damit Sie die Berechtigungen zum Kopieren wiederhergestellter Daten erhalten.

Sicherung erstellen und Daten der JupyterLab-Instanz wiederherstellen

Definieren Sie geschützte Anwendungen, um eine Sicherung des Home-Verzeichnisses einer einzelnen JupyterLab-Instanz oder der Home-Verzeichnisse aller JupyterLab-Instanzen in einem Projekt gleichzeitig zu erstellen.

Erstellen Sie eine benutzerdefinierte Ressource ProtectedApplication in dem Cluster, in dem Sie Sicherungen planen möchten. In Sicherungs- und Wiederherstellungsplänen werden geschützte Anwendungen verwendet, um Ressourcen auszuwählen. Informationen zum Erstellen geschützter Anwendungen finden Sie unter Strategien für geschützte Anwendungen.

Die benutzerdefinierte Ressource ProtectedApplication enthält die folgenden Felder:

Feld Beschreibung
resourceSelection Die Art und Weise, wie das ProtectedApplication-Objekt Ressourcen für Sicherungen oder Wiederherstellungen auswählt.
type Die Methode zum Auswählen von Ressourcen. Der Typ Selector gibt an, dass Ressourcen mit übereinstimmenden Labels ausgewählt werden müssen.
selector Die Auswahlregeln. Dieses Feld enthält die folgenden Unterfelder:
matchLabels Die Labels, die das ProtectedApplication-Objekt verwendet, um Ressourcen abzugleichen. Dieses Feld enthält die folgenden Unterfelder:
app.kubernetes.io/part-of Der Name einer Anwendung auf höherer Ebene, zu der diese gehört. Wählen Sie Vertex AI Workbench als Anwendung auf höherer Ebene für JupyterLab-Instanzen aus.
app.kubernetes.io/component Die Komponente in der Architektur. Wählen Sie Ressourcen aus Vertex AI Workbench aus, die Speicher für JupyterLab-Instanzen bereitstellen.
app.kubernetes.io/instance Ein eindeutiger Name zur Identifizierung der Instanz einer Anwendung. Beschränken Sie den Bereich, um eine JupyterLab-Instanz auszuwählen. Der Wert entspricht dem Namen der JupyterLab-Instanz in der GDC Console.

Verwenden Sie die benutzerdefinierte Ressource ProtectedApplication, um den Speicher einer einzelnen JupyterLab-Instanz oder aller JupyterLab-Instanzen in einem Projekt auszuwählen, wie in den folgenden Beispielen:

  • Speicher einer einzelnen JupyterLab-Instanz auswählen:

    Das folgende Beispiel zeigt eine benutzerdefinierte Ressource ProtectedApplication, die den Speicher für eine JupyterLab-Instanz mit dem Namen my-instance-name im Namespace my-project auswählt:

    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
    
  • Speicher aller JupyterLab-Instanzen auswählen:

    Das folgende Beispiel zeigt eine benutzerdefinierte Ressource ProtectedApplication, die den Speicher für alle JupyterLab-Instanzen im Namespace my-project auswählt:

    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
    

    Dieses Beispiel enthält nicht das Label app.kubernetes.io/instance, da alle JupyterLab-Instanzen ausgewählt werden.

Wenn Sie eine Sicherung erstellen und Daten aus einer JupyterLab-Instanz wiederherstellen möchten, planen Sie eine Reihe von Sicherungen und planen Sie eine Reihe von Wiederherstellungen mit der von Ihnen definierten benutzerdefinierten Ressource ProtectedApplication.

Wiederhergestellte Daten in eine neue JupyterLab-Instanz kopieren

So kopieren Sie wiederhergestellte Daten aus der Ressource PersistentVolumeClaim einer JupyterLab-Instanz in eine neue JupyterLab-Instanz:

  1. Erfüllen Sie die Voraussetzungen.
  2. Erstellen Sie ein JupyterLab-Notebook das mit einer JupyterLab-Instanz verknüpft ist, um wiederhergestellte Daten zu kopieren.
  3. Rufen Sie den Pod-Namen der JupyterLab-Instanz ab, in der Sie das Notebook erstellt haben:

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

    Ersetzen Sie Folgendes:

    • INSTANCE_NAME: der Name der von Ihnen konfigurierten JupyterLab-Instanz.
    • PROJECT_NAMESPACE: der Projekt-Namespace, in dem Sie die JupyterLab-Instanz erstellt haben.
  4. Rufen Sie den Namen des Images ab, auf dem die JupyterLab-Instanz ausgeführt wird:

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

    Ersetzen Sie Folgendes:

    • POD_NAME: der Pod-Name der JupyterLab-Instanz.
    • PROJECT_NAMESPACE: der Projekt-Namespace, in dem Sie die JupyterLab-Instanz erstellt haben.
  5. Suchen Sie den Namen der wiederhergestellten Ressource PersistentVolumeClaim:

    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
    

    Ersetzen Sie Folgendes:

    • RESTORED_INSTANCE_NAME: der Name der JupyterLab-Instanz, die Sie wiederhergestellt haben.
    • PROJECT_NAMESPACE: der Projekt-Namespace, in dem Sie die JupyterLab-Instanz erstellt haben.
  6. Erstellen Sie eine YAML-Datei mit dem Namen vtxwb-data.yaml mit folgendem Inhalt:

    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
    

    Ersetzen Sie Folgendes:

    • PROJECT_NAMESPACE: der Projekt-Namespace, in dem Sie die JupyterLab-Instanz erstellt haben.
    • IMAGE_NAME: der Name des Container-Images, auf dem die JupyterLab-Instanz ausgeführt wird.
    • RESTORED_PVC_NAME: der Name der wiederhergestellten Ressource PersistentVolumeClaim.
  7. Erstellen Sie einen neuen Pod für die wiederhergestellte Ressource PersistentVolumeClaim:

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

    Ersetzen Sie KUBECONFIG_PATH durch den Pfad der kubeconfig-Datei im Cluster.

  8. Warten Sie, bis der Pod vtxwb-data den Status RUNNING erreicht hat.

  9. Kopieren Sie die wiederhergestellten Daten in eine neue JupyterLab-Instanz:

    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
    

    Ersetzen Sie Folgendes:

    • PROJECT_NAMESPACE: der Projekt-Namespace, in dem Sie die JupyterLab-Instanz erstellt haben.
    • KUBECONFIG_PATH: der Pfad der kubeconfig-Datei im Cluster.
    • POD_NAME: der Pod-Name der JupyterLab-Instanz.

    Nach dem Kopieren der Daten sind die wiederhergestellten Daten im Verzeichnis /home/jovyan/restore verfügbar.

  10. Löschen Sie den Pod, den Sie erstellt haben, um auf die wiederhergestellten Daten zuzugreifen:

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

    Ersetzen Sie KUBECONFIG_PATH durch den Pfad der kubeconfig-Datei im Cluster.