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, erfahren Sie mehr über Vertex AI Workbench.

Hinweise

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

JupyterLab-Instanzdaten sichern und 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 ProtectedApplication-Ressource 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 ProtectedApplication-Ressource 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. Ein Selector-Typ 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 vom ProtectedApplication-Objekt zum Abgleichen von Ressourcen verwendet werden. 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 der obersten Ebene für JupyterLab-Instanzen aus.
app.kubernetes.io/component Die Komponente innerhalb der Architektur. Wählen Sie Ressourcen aus Vertex AI Workbench aus, die Speicher für JupyterLab-Instanzen bieten.
app.kubernetes.io/instance Ein eindeutiger Name zur Identifizierung der Instanz einer Anwendung. Schränken Sie den Bereich ein, um eine JupyterLab-Instanz auszuwählen. Der Wert entspricht dem Namen der JupyterLab-Instanz in der GDC-Konsole.

Verwenden Sie die benutzerdefinierte Ressource ProtectedApplication, um den Speicherort 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 ProtectedApplication-Ressource, 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 ProtectedApplication-Ressource, 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 benutzerdefinierten Ressource ProtectedApplication, die Sie definiert haben.

Wiederhergestellte Daten in eine neue JupyterLab-Instanz kopieren

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

  1. Voraussetzungen erfüllen
  2. Erstellen Sie ein JupyterLab-Notebook, das mit einer JupyterLab-Instanz verknüpft ist, um die wiederhergestellten 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 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 PersistentVolumeClaim-Ressource, die wiederhergestellt wurde:

    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 und dem folgenden 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, in dem die JupyterLab-Instanz ausgeführt wird.
    • RESTORED_PVC_NAME: der Name der wiederhergestellten PersistentVolumeClaim-Ressource.
  7. Erstellen Sie einen neuen Pod für die wiederhergestellte PersistentVolumeClaim-Ressource:

    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 vtxwb-data-Pod 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 für den Zugriff auf Ihre wiederhergestellten Daten erstellt haben:

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

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