Skip to main content
Hay disponible una nueva versión de este producto.
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

La instantánea de volumen es compatible con ontap-nas, , , ontap-nas-flexgroup ontap-san ontap-san-economy solidfire-san , , , gcp-cvs, y azure-netapp-files los conductores.

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 y 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".

    • `driver`Los puntos al controlador CSI de Astra Trident.

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

      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 Snapshot se establece en pvc1-snap. Una Snapshot de volumen es similar a una RVP y se asocia con VolumeSnapshotContent un objeto que representa la snapshot real.

      kubectl create -f snap.yaml
      volumesnapshot.snapshot.storage.k8s.io/pvc1-snap created
      
      kubectl get volumesnapshots
      NAME                   AGE
      pvc1-snap              50s
    • Es posible identificar VolumeSnapshotContent el objeto de pvc1-snap la Snapshot de volumen describiéndolo. El Snapshot Content Name identifica el objeto VolumeSnapshotContent que sirve para esta snapshot. `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 usar dataSource para crear una RVP con una VolumeSnapshot llamada <pvc-name> como origen 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 utilizando 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 admite "Proceso de snapshot aprovisionado previamente de Kubernetes"para permitir al administrador de clúster crear VolumeSnapshotContent un objeto e importar 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. Cluster admin: Crear un VolumeSnapshotContent objeto que haga referencia a la instantánea 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">.

    • Especificar <name-of-parent-volume-in-trident>/<volume-snapshot-content-name> en snapshotHandle. Esta es la única información proporcionada a Astra Trident por el Snapshotter externo en la ListSnapshots llamada.

      Nota `<volumeSnapshotContentName>`No siempre 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. Cluster admin: Crear el VolumeSnapshot CR que hace referencia al VolumeSnapshotContent objeto. Esto solicita acceso para utilizar VolumeSnapshot en un espacio de nombres determinado.

    Ejemplo

    En el siguiente ejemplo se crea una VolumeSnapshot CR denominada import-snap que hace referencia a la VolumeSnapshotContent 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 acción): El Snapshotter externo reconoce el recién creado VolumeSnapshotContent y ejecuta la ListSnapshots llamada. Astra Trident crea el TridentSnapshot.

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

    • Trident devuelve readyToUse=true.

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

    Ejemplo

    En el siguiente ejemplo se crea una RVP que hace referencia a la VolumeSnapshot llamada 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 mediante los ontap-nas controladores y. ontap-nas-economy Permita que .snapshot el directorio recupere 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 actualice namespace su espacio de nombres.