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 snapshots de grupos de volumes

Colaboradores netapp-aruldeepa

O NetApp Trident permite criar snapshots de vários volumes (um grupo de snapshots de volumes) em grupos de volumes do Kubernetes. Este instantâneo do 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 snapshots de grupos de volumes

O snapshot do grupo de volumes é compatível com o ontap-san Driver compatível apenas com o protocolo iSCSI, ainda não suportado com Fibre Channel (FCP) nem NVMe/TCP. Antes de começar

  • Certifique-se de que sua versão do Kubernetes seja K8s 1.32 ou superior.

  • Para trabalhar com snapshots, você precisa de um controlador de snapshots externo e definições de recursos personalizados (CRDs). Essa é a responsabilidade do orquestrador do Kubernetes (por exemplo: Kubeadm, GKE, OpenShift).

    Se a sua distribuição Kubernetes não incluir o controlador de snapshots externo e os CRDs, consulteImplante um controlador de instantâneo de volume .

    Observação Não crie um controlador de snapshots se estiver criando snapshots de grupos de volumes sob demanda em um ambiente GKE. O GKE utiliza um controlador de snapshots integrado e oculto.
  • No arquivo YAML do controlador de snapshots, defina o CSIVolumeGroupSnapshot Defina o recurso como 'true' para garantir que o snapshot do grupo de volumes esteja habilitado.

  • Crie as classes de snapshot de grupo de volumes necessárias antes de criar um snapshot de grupo de volumes.

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

Passos
  • Crie uma classe VolumeGroupSnapshotClass antes de criar um VolumeGroupSnapshot. Para obter mais informações, consulte"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
  • Crie PVCs com os rótulos necessários usando as 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 um 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

Recupere dados de volume usando um instantâneo de grupo.

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

Utilize o comando volume snapshot restore da CLI do ONTAP para restaurar um volume a um estado registrado em um snapshot anterior.

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

Restauração de volume in-place a partir de um snapshot

O Trident proporciona restauração de volume rápida e in situ a partir de uma imagem instantânea usando o TridentActionSnapshotRestore (TASR) CR. Essa solicitação de configuração (CR) funciona como uma ação imperativa do Kubernetes e não persiste após a conclusão da operação.

Excluir um PV com snapshots de grupo associados

Ao excluir um instantâneo de volume de grupo:

  • Você pode excluir o grupo de snapshots VolumeGroupSnapshots como um todo, e não snapshots individuais dentro do grupo.

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

  • Se um clone tiver sido criado usando um snapshot agrupado e, em seguida, o grupo for 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.

Implante um controlador de instantâneo de volume

Se a sua distribuição Kubernetes não incluir o controlador de snapshots e os CRDs, você pode implantá-los da seguinte forma.

Passos
  1. Criar CRDs de snapshot 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 de 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 atualizar namespace para o seu espaço de nomes.