Trabalhar com snapshots de grupos de volumes
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.
|
|
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 .
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
CSIVolumeGroupSnapshotDefina 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.
-
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-snapcomo fonte de dados e rótuloconsistentGroupSnapshot: 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
|
|
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.
Para mais informações, consulte "Restauração de volume in-place a partir de um snapshot".
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.
-
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 -
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.yamlkubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-8.2/deploy/kubernetes/snapshot-controller/setup-snapshot-controller.yamlSe necessário, abra deploy/kubernetes/snapshot-controller/rbac-snapshot-controller.yamle atualizarnamespacepara o seu espaço de nomes.