Skip to main content
Se proporciona el idioma español mediante traducción automática para su comodidad. En caso de alguna inconsistencia, el inglés precede al español.

Trabajar con instantáneas

Colaboradores

Las snapshots de volúmenes de Kubernetes de Persistent Volumes (VP) permiten copias puntuales de volúmenes. Es posible crear una copia Snapshot de un volumen creado con Astra Trident, importar una copia de Snapshot creada fuera de Astra Trident, crear un volumen nuevo a partir de una copia de Snapshot existente y recuperar datos de volumen de copias Snapshot.

Descripción general

Admite copias de Snapshot de volumen ontap-nas, ontap-nas-flexgroup, ontap-san, ontap-san-economy, solidfire-san, gcp-cvs, y. azure-netapp-files de windows

Antes de empezar

Debe tener un controlador de instantánea externo y definiciones de recursos personalizados (CRD) para trabajar con instantáneas. Esta es la responsabilidad del orquestador de Kubernetes (por ejemplo: Kubeadm, GKE, OpenShift).

Si su distribución de Kubernetes no incluye el controlador de instantáneas ni los CRD, consulte Implemente una controladora Snapshot de volumen.

Nota No cree una controladora Snapshot si crea instantáneas de volumen bajo demanda en un entorno de GKE. GKE utiliza un controlador de instantáneas oculto integrado.

Cree una copia de Snapshot de volumen

Pasos
  1. Cree un VolumeSnapshotClass. Para obtener más información, consulte "VolumeSnapshotClass".

    • La driver Señala el controlador CSI de Astra Trident.

    • deletionPolicy puede ser Delete o. Retain. Cuando se establece en Retain, la instantánea física subyacente en el clúster de almacenamiento se conserva incluso cuando VolumeSnapshot el objeto se ha eliminado.

      Ejemplo
      cat snap-sc.yaml
      apiVersion: snapshot.storage.k8s.io/v1
      kind: VolumeSnapshotClass
      metadata:
        name: csi-snapclass
      driver: csi.trident.netapp.io
      deletionPolicy: Delete
  2. Crear una instantánea de una RVP existente.

    Ejemplos
    • En este ejemplo, se crea una copia Snapshot de una RVP existente.

      cat snap.yaml
      apiVersion: snapshot.storage.k8s.io/v1
      kind: VolumeSnapshot
      metadata:
        name: pvc1-snap
      spec:
        volumeSnapshotClassName: csi-snapclass
        source:
          persistentVolumeClaimName: pvc1
    • En este ejemplo, se crea un objeto Snapshot de volumen para una RVP denominada pvc1 y el nombre de la copia de snapshot se establece en pvc1-snap. Un VolumeSnapshot es análogo a un PVC y está asociado a un VolumeSnapshotContent objeto que representa la instantánea real.

      kubectl create -f snap.yaml
      volumesnapshot.snapshot.storage.k8s.io/pvc1-snap created
      
      kubectl get volumesnapshots
      NAME                   AGE
      pvc1-snap              50s
    • Puede identificar el VolumeSnapshotContent objeto para pvc1-snap VolumeSnapshot, describiéndolo. La Snapshot Content Name Identifica el objeto VolumeSnapshotContent que sirve esta snapshot. La Ready To Use El parámetro indica que la snapshot se puede usar para crear una nueva RVP.

      kubectl describe volumesnapshots pvc1-snap
      Name:         pvc1-snap
      Namespace:    default
      .
      .
      .
      Spec:
        Snapshot Class Name:    pvc1-snap
        Snapshot Content Name:  snapcontent-e8d8a0ca-9826-11e9-9807-525400f3f660
        Source:
          API Group:
          Kind:       PersistentVolumeClaim
          Name:       pvc1
      Status:
        Creation Time:  2019-06-26T15:27:29Z
        Ready To Use:   true
        Restore Size:   3Gi
      .
      .

Cree una RVP a partir de una snapshot de volumen

Puede utilizar dataSource Para crear una RVP con una Snapshot de volumen llamada <pvc-name> como la fuente de los datos. Una vez creada la RVP, se puede conectar a un pod y utilizarla como cualquier otro PVC.

En el siguiente ejemplo se crea la RVP con pvc1-snap como origen de datos.

cat pvc-from-snap.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-from-snap
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: golden
  resources:
    requests:
      storage: 3Gi
  dataSource:
    name: pvc1-snap
    kind: VolumeSnapshot
    apiGroup: snapshot.storage.k8s.io

Importe una copia de Snapshot de volumen

Astra Trident es compatible con el "Proceso de snapshot aprovisionado previamente de Kubernetes" para habilitar al administrador de clúster para crear un VolumeSnapshotContent Objetos e importación de copias de Snapshot creadas fuera de Astra Trident.

Antes de empezar

Astra Trident debe haber creado o importado el volumen principal del snapshot.

Pasos
  1. Administrador del clúster: Crear un VolumeSnapshotContent objeto que hace referencia a la instantánea de backend. Esto inicia el flujo de trabajo de las copias Snapshot en Astra Trident.

    • Especifique el nombre de la instantánea de backend en annotations como trident.netapp.io/internalSnapshotName: <"backend-snapshot-name">.

    • Especifique <name-of-parent-volume-in-trident>/<volume-snapshot-content-name> pulg snapshotHandle. Esta es la única información que el snapshot externo proporciona a Astra Trident en la ListSnapshots llame.

      Nota La <volumeSnapshotContentName> No siempre se puede coincidir con el nombre de instantánea de backend debido a restricciones de nomenclatura de CR.
      Ejemplo

      En el siguiente ejemplo se crea un VolumeSnapshotContent objeto que hace referencia a la instantánea backend snap-01.

    apiVersion: snapshot.storage.k8s.io/v1
    kind: VolumeSnapshotContent
    metadata:
      name: import-snap-content
      annotations:
        trident.netapp.io/internalSnapshotName: "snap-01"  # This is the name of the snapshot on the backend
    spec:
      deletionPolicy: Retain
      driver: csi.trident.netapp.io
      source:
        snapshotHandle: pvc-f71223b5-23b9-4235-bbfe-e269ac7b84b0/import-snap-content # <import PV name or source PV name>/<volume-snapshot-content-name>
  2. Administrador del clúster: Crear el VolumeSnapshot CR que hace referencia al VolumeSnapshotContent objeto. Esto solicita acceso para utilizar el VolumeSnapshot en un espacio de nombres determinado.

    Ejemplo

    En el siguiente ejemplo se crea un VolumeSnapshot CR con nombre import-snap que hace referencia a la VolumeSnapshotContent nombre import-snap-content.

    apiVersion: snapshot.storage.k8s.io/v1
    kind: VolumeSnapshot
    metadata:
      name: import-snap
    spec:
      # volumeSnapshotClassName: csi-snapclass (not required for pre-provisioned or imported snapshots)
      source:
        volumeSnapshotContentName: import-snap-content
  3. Procesamiento interno (no se requiere ninguna acción): El Snapshotter externo reconoce el recién creado VolumeSnapshotContent y ejecuta el ListSnapshots llame. Astra Trident crea el TridentSnapshot.

    • El dispositivo de instantáneas externo establece el VolumeSnapshotContent para readyToUse y la VolumeSnapshot para true.

    • Trident vuelve readyToUse=true.

  4. Cualquier usuario: Crear a. PersistentVolumeClaim para hacer referencia al nuevo VolumeSnapshot, donde spec.dataSource (o. spec.dataSourceRef) nombre es el VolumeSnapshot nombre.

    Ejemplo

    En el siguiente ejemplo se crea una RVP que hace referencia al VolumeSnapshot nombre import-snap.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-from-snap
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: simple-sc
      resources:
        requests:
          storage: 1Gi
      dataSource:
        name: import-snap
        kind: VolumeSnapshot
        apiGroup: snapshot.storage.k8s.io

Recuperar datos de volumen mediante copias Snapshot

El directorio de snapshots está oculto de forma predeterminada para facilitar la máxima compatibilidad de los volúmenes aprovisionados con el ontap-nas y.. ontap-nas-economy de windows Habilite el .snapshot directorio para recuperar datos de snapshots directamente.

Use la interfaz de línea de comandos de ONTAP para restaurar un volumen en un estado registrado en una snapshot anterior.

cluster1::*> volume snapshot restore -vserver vs0 -volume vol3 -snapshot vol3_snap_archive
Nota Cuando se restaura una copia Snapshot, se sobrescribe la configuración de volúmenes existente. Se pierden los cambios que se hagan en los datos del volumen después de crear la copia Snapshot.

Eliminar un VP con snapshots asociadas

Cuando se elimina un volumen persistente con instantáneas asociadas, el volumen Trident correspondiente se actualiza a un “estado de eliminación”. Quite las snapshots de volumen para eliminar el volumen de Astra Trident.

Implemente una controladora Snapshot de volumen

Si su distribución de Kubernetes no incluye el controlador de snapshots y los CRD, puede implementarlos de la siguiente manera.

Pasos
  1. Crear CRD de snapshot de volumen.

    cat snapshot-setup.sh
    #!/bin/bash
    # Create volume snapshot CRDs
    kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-6.1/client/config/crd/snapshot.storage.k8s.io_volumesnapshotclasses.yaml
    kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-6.1/client/config/crd/snapshot.storage.k8s.io_volumesnapshotcontents.yaml
    kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-6.1/client/config/crd/snapshot.storage.k8s.io_volumesnapshots.yaml
  2. Cree la controladora Snapshot.

    kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-6.1/deploy/kubernetes/snapshot-controller/rbac-snapshot-controller.yaml
    kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-6.1/deploy/kubernetes/snapshot-controller/setup-snapshot-controller.yaml
    Nota Si es necesario, abra deploy/kubernetes/snapshot-controller/rbac-snapshot-controller.yaml y actualícelo namespace en el espacio de nombres.