Skip to main content
Uma versão mais recente deste produto está disponível.
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

Colaboradores

Você pode criar snapshots de volume do Kubernetes (snapshot de volume) de volumes persistentes (PVS) para manter cópias pontuais de volumes Astra Trident. Além disso, você pode criar um novo volume, também conhecido como clone, a partir de um instantâneo de volume existente. O instantâneo de volume é suportado por ontap-nas drivers , ontap-san, ontap-san-economy, solidfire-san, gcp-cvs e . azure-netapp-files

Antes de começar

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

Se a distribuição do Kubernetes não incluir a controladora de snapshot e CRDs, Implantando um controlador de snapshot de volumeconsulte .

Observação Não crie um controlador de snapshot se estiver criando snapshots de volume sob demanda em um ambiente GKE. O GKE usa um controlador instantâneo oculto integrado.

Passo 1: Crie a. VolumeSnapshotClass

Este exemplo cria uma classe de instantâneo de volume.

cat snap-sc.yaml
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
  name: csi-snapclass
driver: csi.trident.netapp.io
deletionPolicy: Delete
`driver`O ponto é o condutor CSI do Astra Trident. `deletionPolicy` pode ser `Delete` ou `Retain`. Quando definido como `Retain`, o instantâneo físico subjacente no cluster de armazenamento é retido mesmo quando o `VolumeSnapshot` objeto é excluído.

Para obter mais informações, consulte link:../Trident-reference/objects.html[VolumeSnapshotClass.

Passo 2: Crie um instantâneo de um PVC existente

Este exemplo cria um instantâneo de um PVC existente.

cat snap.yaml
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
  name: pvc1-snap
spec:
  volumeSnapshotClassName: csi-snapclass
  source:
    persistentVolumeClaimName: pvc1

Neste exemplo, o instantâneo é criado para um PVC chamado pvc1 e o nome do instantâneo é definido como pvc1-snap.

kubectl create -f snap.yaml
volumesnapshot.snapshot.storage.k8s.io/pvc1-snap created

kubectl get volumesnapshots
NAME                   AGE
pvc1-snap              50s

Isso criou um VolumeSnapshot objeto. Um VolumeSnapshot é análogo a um PVC e está associado a um VolumeSnapshotContent objeto que representa o snapshot real.

É possível identificar o VolumeSnapshotContent objeto para o pvc1-snap VolumeSnapshot descrevendo-o.

kubectl describe volumesnapshots pvc1-snap
Name:         pvc1-snap
Namespace:    default
.
.
.
Spec:
  Snapshot Class Name:    pvc1-snap
  Snapshot Content Name:  snapcontent-e8d8a0ca-9826-11e9-9807-525400f3f660
  Source:
    API Group:
    Kind:       PersistentVolumeClaim
    Name:       pvc1
Status:
  Creation Time:  2019-06-26T15:27:29Z
  Ready To Use:   true
  Restore Size:   3Gi
.
.

O Snapshot Content Name identifica o objeto VolumeSnapshotContent que serve este instantâneo. O Ready To Use parâmetro indica que o instantâneo pode ser usado para criar um novo PVC.

Etapa 3: Criar PVCs a partir do VolumeSnapshots

Este exemplo cria um PVC usando um instantâneo:

cat pvc-from-snap.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-from-snap
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: golden
  resources:
    requests:
      storage: 3Gi
  dataSource:
    name: pvc1-snap
    kind: VolumeSnapshot
    apiGroup: snapshot.storage.k8s.io

dataSource Mostra que o PVC deve ser criado usando um VolumeSnapshot nomeado pvc1-snap como a fonte dos dados. Isso instrui o Astra Trident a criar um PVC a partir do snapshot. Depois que o PVC é criado, ele pode ser anexado a um pod e usado como qualquer outro PVC.

Observação Ao excluir um volume persistente com snapshots associados, o volume Trident correspondente é atualizado para um "estado de exclusão". Para que o volume do Astra Trident seja excluído, os snapshots do volume devem ser removidos.

Implantando 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-6.1/client/config/crd/snapshot.storage.k8s.io_volumesnapshotclasses.yaml
    kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-6.1/client/config/crd/snapshot.storage.k8s.io_volumesnapshotcontents.yaml
    kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-6.1/client/config/crd/snapshot.storage.k8s.io_volumesnapshots.yaml
  2. Crie o controlador de snapshot no namespace desejado. Edite os manifestos YAML abaixo para modificar o namespace.

    kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-6.1/deploy/kubernetes/snapshot-controller/rbac-snapshot-controller.yaml
    kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-6.1/deploy/kubernetes/snapshot-controller/setup-snapshot-controller.yaml