Skip to main content
La versione in lingua italiana fornita proviene da una traduzione automatica. Per eventuali incoerenze, fare riferimento alla versione in lingua inglese.

Lavorare con gli snapshot del gruppo di volumi

Collaboratori netapp-aruldeepa

Snapshot del gruppo di volumi Kubernetes di volumi persistenti (PV) NetApp Trident offre la possibilità di creare snapshot di più volumi (un gruppo di snapshot di volumi). Questo snapshot del gruppo di volumi rappresenta copie di più volumi eseguite nello stesso momento.

Nota VolumeGroupSnapshot è una funzionalità beta di Kubernetes con API beta. Kubernetes 1.32 è la versione minima richiesta per VolumeGroupSnapshot.

Creare snapshot del gruppo di volumi

L'istantanea del gruppo di volumi è supportata con ontap-san driver, solo per protocollo iSCSI, non ancora supportato con Fibre Channel (FCP) né NVMe/TCP. Prima di iniziare

  • Assicurati che la versione di Kubernetes sia K8s 1.32 o successiva.

  • Per lavorare con gli snapshot è necessario disporre di un controller snapshot esterno e di definizioni di risorse personalizzate (CRD). Questa è responsabilità dell'orchestratore di Kubernetes (ad esempio: Kubeadm, GKE, OpenShift).

    Se la distribuzione Kubernetes non include il controller snapshot esterno e i CRD, fare riferimento aDistribuisci un controller di snapshot del volume .

    Nota Non creare un controller snapshot se si creano snapshot di gruppi di volumi su richiesta in un ambiente GKE. GKE utilizza un controller snapshot nascosto e integrato.
  • Nel controller snapshot YAML, impostare CSIVolumeGroupSnapshot feature gate su 'true' per garantire che lo snapshot del gruppo di volumi sia abilitato.

  • Creare le classi di snapshot del gruppo di volumi richieste prima di creare uno snapshot del gruppo di volumi.

  • Assicurarsi che tutti i PVC/volumi siano sullo stesso SVM per poter creare VolumeGroupSnapshot.

Passi
  • Creare una VolumeGroupSnapshotClass prima di creare una VolumeGroupSnapshot. Per maggiori informazioni, fare riferimento a"ClasseSnapshotVolumeGroup" .

    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
  • Creare PVC con le etichette richieste utilizzando le classi di archiviazione esistenti oppure aggiungere queste etichette ai PVC esistenti.

    L'esempio seguente crea il PVC utilizzando pvc1-group-snap come fonte di dati ed etichetta consistentGroupSnapshot: groupA . Definisci la chiave e il valore dell'etichetta in base alle tue esigenze.

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 stessa etichetta(consistentGroupSnapshot: groupA ) specificato nel PVC.

    Questo esempio crea uno snapshot del gruppo di volumi:

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 i dati del volume utilizzando uno snapshot di gruppo

È possibile ripristinare singoli volumi persistenti utilizzando gli snapshot individuali creati come parte dello snapshot del gruppo di volumi. Non è possibile ripristinare lo snapshot del gruppo di volumi come unità.

Utilizzare il ripristino dello snapshot del volume ONTAP CLI per ripristinare un volume a uno stato registrato in uno snapshot precedente.

cluster1::*> volume snapshot restore -vserver vs0 -volume vol3 -snapshot vol3_snap_archive
Nota Quando si ripristina una copia snapshot, la configurazione del volume esistente viene sovrascritta. Le modifiche apportate ai dati del volume dopo la creazione della copia snapshot andranno perse.

Ripristino del volume in loco da uno snapshot

Trident fornisce un rapido ripristino del volume in loco da uno snapshot utilizzando TridentActionSnapshotRestore (TASR) CR. Questa CR funziona come un'azione Kubernetes imperativa e non persiste dopo il completamento dell'operazione.

Per maggiori informazioni, vedere "Ripristino del volume in loco da uno snapshot".

Elimina un PV con snapshot di gruppo associati

Quando si elimina uno snapshot del volume di gruppo:

  • È possibile eliminare i VolumeGroupSnapshot nel loro complesso, non i singoli snapshot del gruppo.

  • Se i PersistentVolume vengono eliminati mentre esiste uno snapshot per quel PersistentVolume, Trident sposterà quel volume in uno stato di "eliminazione" perché lo snapshot deve essere rimosso prima che il volume possa essere rimosso in modo sicuro.

  • Se è stato creato un clone utilizzando uno snapshot raggruppato e in seguito il gruppo deve essere eliminato, verrà avviata un'operazione di suddivisione su clone e il gruppo non potrà essere eliminato finché la suddivisione non sarà completata.

Distribuisci un controller di snapshot del volume

Se la distribuzione Kubernetes non include il controller snapshot e i CRD, è possibile distribuirli come segue.

Passi
  1. Creare CRD di snapshot del volume.

    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
  2. Creare il controller snapshot.

    kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-8.2/deploy/kubernetes/snapshot-controller/rbac-snapshot-controller.yaml
    kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-8.2/deploy/kubernetes/snapshot-controller/setup-snapshot-controller.yaml
    Nota Se necessario, aprire deploy/kubernetes/snapshot-controller/rbac-snapshot-controller.yaml e aggiornare namespace al tuo namespace.