Trabajar con instantáneas
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
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.
|
|
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
-
Cree un
VolumeSnapshotClass. Para obtener más información, consulte "VolumeSnapshotClass".-
La
driverSeñala el controlador CSI de Astra Trident. -
deletionPolicypuede serDeleteo.Retain. Cuando se establece enRetain, la instantánea física subyacente en el clúster de almacenamiento se conserva incluso cuandoVolumeSnapshotel objeto se ha eliminado.Ejemplocat snap-sc.yaml apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotClass metadata: name: csi-snapclass driver: csi.trident.netapp.io deletionPolicy: Delete
-
-
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
pvc1y el nombre de la copia de snapshot se establece enpvc1-snap. Un VolumeSnapshot es análogo a un PVC y está asociado a unVolumeSnapshotContentobjeto 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
VolumeSnapshotContentobjeto parapvc1-snapVolumeSnapshot, describiéndolo. LaSnapshot Content NameIdentifica el objeto VolumeSnapshotContent que sirve esta snapshot. LaReady To UseEl 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.
|
|
La RVP se creará en el mismo back-end que el volumen de origen. Consulte "KB: La creación de una RVP a partir de una snapshot de RVP de Trident no se puede crear en un back-end alternativo". |
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.
Astra Trident debe haber creado o importado el volumen principal del snapshot.
-
Administrador del clúster: Crear un
VolumeSnapshotContentobjeto 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
annotationscomotrident.netapp.io/internalSnapshotName: <"backend-snapshot-name">. -
Especifique
<name-of-parent-volume-in-trident>/<volume-snapshot-content-name>pulgsnapshotHandle. Esta es la única información que el snapshot externo proporciona a Astra Trident en laListSnapshotsllame.La <volumeSnapshotContentName>No siempre se puede coincidir con el nombre de instantánea de backend debido a restricciones de nomenclatura de CR.EjemploEn el siguiente ejemplo se crea un
VolumeSnapshotContentobjeto que hace referencia a la instantánea backendsnap-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> -
-
Administrador del clúster: Crear el
VolumeSnapshotCR que hace referencia alVolumeSnapshotContentobjeto. Esto solicita acceso para utilizar elVolumeSnapshoten un espacio de nombres determinado.EjemploEn el siguiente ejemplo se crea un
VolumeSnapshotCR con nombreimport-snapque hace referencia a laVolumeSnapshotContentnombreimport-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 -
Procesamiento interno (no se requiere ninguna acción): El Snapshotter externo reconoce el recién creado
VolumeSnapshotContenty ejecuta elListSnapshotsllame. Astra Trident crea elTridentSnapshot.-
El dispositivo de instantáneas externo establece el
VolumeSnapshotContentparareadyToUsey laVolumeSnapshotparatrue. -
Trident vuelve
readyToUse=true.
-
-
Cualquier usuario: Crear a.
PersistentVolumeClaimpara hacer referencia al nuevoVolumeSnapshot, dondespec.dataSource(o.spec.dataSourceRef) nombre es elVolumeSnapshotnombre.EjemploEn el siguiente ejemplo se crea una RVP que hace referencia al
VolumeSnapshotnombreimport-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
|
|
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. |
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.
|
|
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. |
Restauración de volumen sin movimiento a partir de una copia de Snapshot
Astra Control Provisioning ofrece una restauración de volumen rápida y in situ a partir de una copia Snapshot mediante TridentActionSnapshotRestore CR (TASR). Esta CR funciona como una acción imprescindible de Kubernetes y no persiste una vez que finaliza la operación.
Astra Control Provisioner admite la restauración de instantáneas en el ontap-san, , ontap-san-economy, ontap-nas, ontap-nas-flexgroup azure-netapp-files, , gcp-cvs, y solidfire-san los conductores.
Debe tener una snapshot de volumen disponible y la RVP vinculada.
-
Compruebe que el estado de la RVP es de enlace.
kubectl get pvc
-
Compruebe que la copia de Snapshot de volumen esté lista para utilizarse.
kubectl get vs
-
Cree el CR de TASR. En este ejemplo, se crea una CR para la RVP
pvc1y una instantánea de volumenpvc1-snapshot.cat tasr-pvc1-snapshot.yaml apiVersion: v1 kind: TridentActionSnapshotRestore metadata: name: this-doesnt-matter namespace: trident spec: pvcName: pvc1 volumeSnapshotName: pvc1-snapshot
-
Aplique el CR para restaurar a partir de la instantánea. Este ejemplo restaura desde la instantánea
pvc1.kubectl create -f tasr-pvc1-snapshot.yaml tridentactionsnapshotrestore.trident.netapp.io/this-doesnt-matter created
El aprovisionador de Astra Control restaura los datos a partir de la snapshot. Es posible verificar el estado de restauración de la Snapshot.
kubectl get tasr -o yaml
apiVersion: v1
items:
- apiVersion: trident.netapp.io/v1
kind: TridentActionSnapshotRestore
metadata:
creationTimestamp: "2023-04-14T00:20:33Z"
generation: 3
name: this-doesnt-matter
namespace: trident
resourceVersion: "3453847"
uid: <uid>
spec:
pvcName: pvc1
volumeSnapshotName: pvc1-snapshot
status:
startTime: "2023-04-14T00:20:34Z"
completionTime: "2023-04-14T00:20:37Z"
state: Succeeded
kind: List
metadata:
resourceVersion: ""
|
|
|
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
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.
-
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
-
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
Si es necesario, abra deploy/kubernetes/snapshot-controller/rbac-snapshot-controller.yamly actualícelonamespaceen el espacio de nombres.