Créer une sauvegarde et restaurer les données d'un notebook

Google Distributed Cloud (GDC) avec isolation physique vous permet de créer des sauvegardes et de restaurer des données à partir du répertoire d'accueil de vos instances JupyterLab.

Cette page explique comment créer et restaurer des sauvegardes de données de notebook Vertex AI Workbench. Si vous ne connaissez pas Vertex AI, découvrez Vertex AI Workbench.

Avant de commencer

Pour obtenir les autorisations nécessaires pour copier des données restaurées, demandez à l'administrateur de l'organisation IAM de vous accorder le rôle de développeur de cluster d'utilisateur (user-cluster-developer).

Créer une sauvegarde et restaurer les données d'une instance JupyterLab

Définissez des applications protégées pour créer une sauvegarde du répertoire d'accueil d'une instance JupyterLab individuelle ou des répertoires d'accueil de toutes les instances JupyterLab d'un projet en même temps.

Créez une ressource personnalisée ProtectedApplication dans le cluster où vous souhaitez planifier des sauvegardes. Les plans de sauvegarde et de restauration utilisent des applications protégées pour sélectionner des ressources. Pour en savoir plus sur la création d'applications protégées, consultez Stratégies d'applications protégées.

La ressource personnalisée ProtectedApplication contient les champs suivants :

Champ Description
resourceSelection La manière dont l'objet ProtectedApplication sélectionne les ressources pour les sauvegardes ou les restaurations.
type Méthode de sélection des ressources. Un type Selector indique que les ressources avec des étiquettes correspondantes doivent être sélectionnées.
selector Règles de sélection. Ce champ contient les sous-champs suivants :
matchLabels Étiquettes utilisées par l'objet ProtectedApplication pour faire correspondre les ressources. Ce champ contient les sous-champs suivants :
app.kubernetes.io/part-of Nom d'une application de niveau supérieur dont celle-ci fait partie. Sélectionnez Vertex AI Workbench comme application de haut niveau pour les instances JupyterLab.
app.kubernetes.io/component Composant de l'architecture. Sélectionnez des ressources Vertex AI Workbench qui fournissent un espace de stockage pour les instances JupyterLab.
app.kubernetes.io/instance Nom unique identifiant l'instance d'une application. Affinez le champ d'application pour sélectionner une instance JupyterLab. La valeur est identique au nom de l'instance JupyterLab sur la console GDC.

Utilisez la ressource personnalisée ProtectedApplication pour sélectionner l'espace de stockage d'une seule instance JupyterLab ou de toutes les instances JupyterLab d'un projet, comme dans les exemples suivants :

  • Sélectionnez l'espace de stockage d'une seule instance JupyterLab :

    L'exemple suivant montre une ressource personnalisée ProtectedApplication qui sélectionne l'espace de stockage pour une instance JupyterLab nommée my-instance-name dans l'espace de noms 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
    
  • Sélectionnez le stockage de toutes les instances JupyterLab :

    L'exemple suivant montre une ressource personnalisée ProtectedApplication qui sélectionne l'espace de stockage pour toutes les instances JupyterLab de l'espace de noms 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
    

    Cet exemple ne contient pas l'étiquette app.kubernetes.io/instance, car il sélectionne toutes les instances JupyterLab.

Pour créer une sauvegarde et restaurer les données d'une instance JupyterLab, planifiez un ensemble de sauvegardes et planifiez un ensemble de restaurations à l'aide de la ressource personnalisée ProtectedApplication que vous avez définie.

Copier les données restaurées vers une nouvelle instance JupyterLab

Pour copier les données restaurées de la ressource PersistentVolumeClaim d'une instance JupyterLab vers une nouvelle instance JupyterLab, procédez comme suit :

  1. Remplissez les conditions préalables.
  2. Créez un notebook JupyterLab associé à une instance JupyterLab pour copier les données restaurées.
  3. Obtenez le nom du pod de l'instance JupyterLab où vous avez créé le notebook :

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

    Remplacez les éléments suivants :

    • INSTANCE_NAME : nom de l'instance JupyterLab que vous avez configurée.
    • PROJECT_NAMESPACE : espace de noms du projet dans lequel vous avez créé l'instance JupyterLab.
  4. Obtenez le nom de l'image exécutée par l'instance JupyterLab :

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

    Remplacez les éléments suivants :

    • POD_NAME : nom du pod de l'instance JupyterLab.
    • PROJECT_NAMESPACE : espace de noms du projet dans lequel vous avez créé l'instance JupyterLab.
  5. Recherchez le nom de la ressource PersistentVolumeClaim qui a été restaurée :

    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
    

    Remplacez les éléments suivants :

    • RESTORED_INSTANCE_NAME : nom de l'instance JupyterLab que vous avez restaurée.
    • PROJECT_NAMESPACE : espace de noms du projet dans lequel vous avez créé l'instance JupyterLab.
  6. Créez un fichier YAML nommé vtxwb-data.yaml avec le contenu suivant :

    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
    

    Remplacez les éléments suivants :

    • PROJECT_NAMESPACE : espace de noms du projet dans lequel vous avez créé l'instance JupyterLab.
    • IMAGE_NAME : nom de l'image de conteneur exécutée par l'instance JupyterLab.
    • RESTORED_PVC_NAME : nom de la ressource PersistentVolumeClaim restaurée.
  7. Créez un pod pour votre ressource PersistentVolumeClaim restaurée :

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

    Remplacez KUBECONFIG_PATH par le chemin d'accès au fichier kubeconfig du cluster.

  8. Attendez que le pod vtxwb-data atteigne l'état RUNNING.

  9. Copiez vos données restaurées dans une nouvelle instance 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
    

    Remplacez les éléments suivants :

    • PROJECT_NAMESPACE : espace de noms du projet dans lequel vous avez créé l'instance JupyterLab.
    • KUBECONFIG_PATH : chemin d'accès au fichier kubeconfig dans le cluster.
    • POD_NAME : nom du pod de l'instance JupyterLab.

    Une fois les données copiées, vos données restaurées sont disponibles dans le répertoire /home/jovyan/restore.

  10. Supprimez le pod que vous avez créé pour accéder à vos données restaurées :

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

    Remplacez KUBECONFIG_PATH par le chemin d'accès au fichier kubeconfig dans le cluster.