Skip to main content
O português é fornecido por meio de tradução automática para sua conveniência. O inglês precede o português em caso de inconsistências.

Trabalhar com instantâneos de grupos de volumes

Colaboradores netapp-aruldeepa

Snapshots de grupos de volumes do Kubernetes de Volumes Persistentes (PVs) O NetApp Trident oferece a capacidade de criar snapshots de vários volumes (um grupo de snapshots de volumes). Este snapshot de grupo de volumes representa cópias de vários volumes feitas no mesmo momento.

Observação VolumeGroupSnapshot é um recurso beta do Kubernetes com APIs beta. O Kubernetes 1.32 é a versão mínima necessária para o VolumeGroupSnapshot.

Criar instantâneos de grupos de volumes

O recurso de snapshot de grupo de volumes é compatível com os seguintes drivers de armazenamento:

  • `ontap-san`Driver - somente para os protocolos iSCSI e FC, não para o protocolo NVMe/TCP.

  • ontap-san-economy

  • ontap-nas

Observação O recurso de snapshot de grupos de volumes não é compatível com sistemas de armazenamento NetApp AFX.
Antes de começar
  • Certifique-se de que sua versão do Kubernetes seja K8s 1.32 ou superior.

  • Você deve ter um controlador de snapshot externo e definições personalizadas de recursos (CRDs) para trabalhar com snapshots. Essa é a responsabilidade do orquestrador do Kubernetes (por exemplo: Kubeadm, GKE, OpenShift).

    Se a sua distribuição do Kubernetes não incluir o controlador de snapshot externo e os CRDs, consulte Implantar um controlador de snapshot de volume .

    Observação Não crie um controlador de snapshot se estiver criando snapshots de grupo de volumes sob demanda em um ambiente GKE. O GKE usa um controlador instantâneo oculto integrado.
  • No controlador de snapshot YAML, defina o CSIVolumeGroupSnapshot defina o feature gate como 'true' para garantir que o instantâneo do grupo de volumes esteja habilitado.

  • Crie as classes de instantâneos do grupo de volumes necessárias antes de criar um instantâneo do grupo de volumes.

  • Certifique-se de que todos os PVCs/volumes estejam no mesmo SVM para poder criar o VolumeGroupSnapshot.

Passos
  • Crie uma VolumeGroupSnapshotClass antes de criar um VolumeGroupSnapshot. Para obter mais informações, "Classe de instantâneo de grupo de volume"consulte .

    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
  • Crie PVCs com rótulos necessários usando classes de armazenamento existentes ou adicione esses rótulos aos PVCs existentes.

    O exemplo a seguir cria o PVC usando pvc1-group-snap como fonte de dados e rótulo consistentGroupSnapshot: groupA . Defina a chave e o valor do rótulo com base em suas necessidades.

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: pvc1-group-snap
  labels:
    consistentGroupSnapshot: groupA
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 100Mi
  storageClassName: sc1-1
  • Crie um VolumeGroupSnapshot com o mesmo rótulo (consistentGroupSnapshot: groupA ) especificado no PVC.

    Este exemplo cria um instantâneo de grupo de volumes:

apiVersion: groupsnapshot.storage.k8s.io/v1beta1
kind: VolumeGroupSnapshot
metadata:
  name: "vgs1"
  namespace: trident
spec:
  volumeGroupSnapshotClassName: csi-group-snap-class
  source:
    selector:
      matchLabels:
        consistentGroupSnapshot: groupA

Recuperar dados de volume usando um snapshot de grupo

Você pode restaurar Volumes Persistentes individuais usando os snapshots individuais criados como parte do Snapshot do Grupo de Volumes. Não é possível recuperar o Snapshot do Grupo de Volumes como uma unidade.

Use a CLI do ONTAP de restauração de snapshot de volume para restaurar um volume para um estado gravado em um snapshot anterior.

cluster1::*> volume snapshot restore -vserver vs0 -volume vol3 -snapshot vol3_snap_archive
Observação Quando você restaura uma cópia snapshot, a configuração de volume existente é sobrescrita. As alterações feitas aos dados de volume após a criação da cópia instantânea são perdidas.

Restauração de volume no local a partir de um instantâneo

O Trident fornece restauração rápida de volume no local a partir de um instantâneo usando o TridentActionSnapshotRestore CR (TASR). Esse CR funciona como uma ação imperativa do Kubernetes e não persiste após a conclusão da operação.

Para obter mais informações, "Restauração de volume no local a partir de um instantâneo"consulte .

Excluir um PV com snapshots de grupo associados

Ao excluir um instantâneo de volume de grupo:

  • Você pode excluir VolumeGroupSnapshots como um todo, não snapshots individuais no grupo.

  • Se PersistentVolumes forem excluídos enquanto houver um snapshot para esse PersistentVolume, o Trident moverá esse volume para um estado de "exclusão" porque o snapshot deve ser removido antes que o volume possa ser removido com segurança.

  • Se um clone tiver sido criado usando um instantâneo agrupado e o grupo precisar ser excluído, uma operação de divisão no clone será iniciada e o grupo não poderá ser excluído até que a divisão seja concluída.

Implantar um controlador de snapshot de volume

Se a sua distribuição do Kubernetes não incluir a controladora de snapshot e CRDs, você poderá implantá-los da seguinte forma.

Passos
  1. Criar CRDs de instantâneos de 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. Crie o controlador instantâneo.

    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
    Observação Se necessário, abra deploy/kubernetes/snapshot-controller/rbac-snapshot-controller.yaml e atualize namespace para o seu namespace.