Trabaja con instantáneas de grupo de volúmenes
Instantáneas de grupos de volúmenes de Kubernetes de volúmenes persistentes (PVs) NetApp Trident te permite crear instantáneas de varios volúmenes (un grupo de instantáneas de volúmenes). Esta instantánea de grupo de volúmenes representa copias de varios volúmenes tomadas en el mismo momento específico.
|
|
VolumeGroupSnapshot es una función beta en Kubernetes con API beta. Kubernetes 1.32 es la versión mínima requerida para VolumeGroupSnapshot. |
Crear instantáneas de grupo de volúmenes
La instantánea del grupo de volúmenes es compatible con los siguientes controladores de almacenamiento:
-
`ontap-san`controlador: solo para los protocolos iSCSI y FC, no para el protocolo NVMe/TCP.
-
ontap-san-economy- solo para el protocolo iSCSI. -
ontap-nas
|
|
La instantánea del grupo de volúmenes no es compatible con NetApp ASA r2 o los sistemas de almacenamiento AFX. |
-
Asegúrate de que tu versión de Kubernetes sea K8s 1.32 o superior.
-
Debes tener un controlador de instantáneas externo y definiciones de recursos personalizadas (CRDs) para trabajar con instantáneas. Esto es responsabilidad del orquestador de Kubernetes (por ejemplo: Kubeadm, GKE, OpenShift).
Si tu distribución de Kubernetes no incluye el controlador de instantáneas externo y los CRDs, consulta Implementa un controlador de instantáneas de volumen.
No crees un controlador de instantáneas si vas a crear instantáneas de grupo de volúmenes bajo demanda en un entorno de GKE. GKE usa un controlador de instantáneas integrado y oculto. -
En el YAML del controlador de instantáneas, configura la
CSIVolumeGroupSnapshotfeature gate en 'true' para asegurarte de que la instantánea del grupo de volúmenes esté habilitada. -
Crea las clases de instantáneas de grupo de volúmenes necesarias antes de crear una instantánea de grupo de volúmenes.
-
Asegúrate de que todos los PVC/volúmenes estén en el mismo SVM para poder crear VolumeGroupSnapshot.
-
Crea un VolumeGroupSnapshotClass antes de crear un VolumeGroupSnapshot. Para más información, consulta "VolumeGroupSnapshotClass".
apiVersion: groupsnapshot.storage.k8s.io/v1beta1 kind: VolumeGroupSnapshotClass metadata: name: csi-group-snap-class annotations: kubernetes.io/description: "Trident group snapshot class" driver: csi.trident.netapp.io deletionPolicy: Delete -
Crea PVC con las etiquetas requeridas usando clases de almacenamiento existentes o agrega estas etiquetas a los PVC existentes.
El siguiente ejemplo crea la PVC usando
pvc1-group-snapcomo origen de datos y la etiquetaconsistentGroupSnapshot: groupA. Define la clave y el valor de la etiqueta según tus necesidades.
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: pvc1-group-snap
labels:
consistentGroupSnapshot: groupA
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Mi
storageClassName: sc1-1
-
Crea un VolumeGroupSnapshot con la misma etiqueta (
consistentGroupSnapshot: groupA) especificada en el PVC.Este ejemplo crea una instantánea de grupo de volúmenes:
apiVersion: groupsnapshot.storage.k8s.io/v1beta1
kind: VolumeGroupSnapshot
metadata:
name: "vgs1"
namespace: trident
spec:
volumeGroupSnapshotClassName: csi-group-snap-class
source:
selector:
matchLabels:
consistentGroupSnapshot: groupA
Recupera datos de volumen usando una instantánea de grupo
Puedes restaurar volúmenes persistentes individuales usando las instantáneas individuales que se han creado como parte de la instantánea del grupo de volúmenes. No puedes recuperar la instantánea del grupo de volúmenes como una unidad.
Usa la CLI de ONTAP para restaurar una instantánea de volumen y devolver un volumen a un estado registrado en una instantánea anterior.
cluster1::*> volume snapshot restore -vserver vs0 -volume vol3 -snapshot vol3_snap_archive
|
|
Cuando restauras una copia instantánea, la configuración existente del volumen se sobrescribe. Los cambios realizados en los datos del volumen después de que se creó la copia instantánea se pierden. |
Restauración de volumen en el lugar desde una instantánea
Trident permite la restauración rápida e in situ de volúmenes a partir de una instantánea mediante la TridentActionSnapshotRestore (TASR) CR. Esta CR funciona como una acción imperativa de Kubernetes y no persiste después de que la operación se completa.
Para más información, consulta "Restauración de volumen en el lugar desde una instantánea".
Eliminar un PV con instantáneas de grupo asociadas
Al eliminar una instantánea de grupo de volúmenes:
-
Puedes eliminar VolumeGroupSnapshots como un todo, no instantáneas individuales en el grupo.
-
Si se eliminan PersistentVolumes mientras existe una instantánea para ese PersistentVolume, Trident moverá ese volumen a un estado de "eliminación" porque la instantánea debe eliminarse antes de que el volumen pueda eliminarse de manera segura.
-
Si se ha creado un clon utilizando una instantánea agrupada y luego se desea eliminar el grupo, comenzará una operación de división en clon y el grupo no se puede eliminar hasta que se complete la división.
Implementa un controlador de instantáneas de volumen
Si tu distribución de Kubernetes no incluye el snapshot controller y los CRDs, puedes implementarlos así.
-
Crea CRD de instantáneas de volumen.
cat snapshot-setup.sh
#!/bin/bash # Create volume snapshot CRDs kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-8.2/client/config/crd/groupsnapshot.storage.k8s.io_volumegroupsnapshotclasses.yaml kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-8.2/client/config/crd/groupsnapshot.storage.k8s.io_volumegroupsnapshotcontents.yaml kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-8.2/client/config/crd/groupsnapshot.storage.k8s.io_volumegroupsnapshots.yaml -
Crea el controlador de instantáneas.
kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-8.2/deploy/kubernetes/snapshot-controller/rbac-snapshot-controller.yamlkubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-8.2/deploy/kubernetes/snapshot-controller/setup-snapshot-controller.yamlSi es necesario, abre deploy/kubernetes/snapshot-controller/rbac-snapshot-controller.yamly actualizanamespacea tu espacio de nombres.