Skip to main content
Hay disponible una nueva versión de este producto.
Se proporciona el idioma español mediante traducción automática para su comodidad. En caso de alguna inconsistencia, el inglés precede al español.

Trabajar con instantáneas

Colaboradores

A partir del lanzamiento de Astra Trident 20.01, se pueden crear snapshots de VP en la capa de Kubernetes. Puede utilizar estas snapshots para mantener copias de un momento específico de los volúmenes que haya creado Astra Trident y programar la creación de volúmenes adicionales (clones). La copia de Snapshot de volumen es compatible con ontap-nas, ontap-san, ontap-san-economy, solidfire-san, gcp-cvs, y. azure-netapp-files de windows

Nota Esta función está disponible en Kubernetes 1.17 (beta) y es GA a partir de 1.20. Para comprender los cambios relacionados con el paso de beta a GA, consulte "el blog del lanzamiento". Con la graduación a GA, el v1 Se introduce la versión API y es compatible con versiones anteriores v1beta1 snapshot.
Lo que necesitará
  • Para crear snapshots de volumen, es necesario crear una controladora de snapshot externa, así como algunas definiciones de recursos personalizados (CRD). Esta es la responsabilidad del orquestador de Kubernetes que se está utilizando (por ejemplo: Kubeadm, GKE, OpenShift).

Es posible crear una controladora Snapshot externa y CRD Snapshot de la siguiente manera:

  1. Crear CRD de snapshot de volumen:

    $ cat snapshot-setup.sh
    #!/bin/bash
    # Create volume snapshot CRDs
    kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-3.0/client/config/crd/snapshot.storage.k8s.io_volumesnapshotclasses.yaml
    kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-3.0/client/config/crd/snapshot.storage.k8s.io_volumesnapshotcontents.yaml
    kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-3.0/client/config/crd/snapshot.storage.k8s.io_volumesnapshots.yaml
  2. Crear la controladora Snapshot en el espacio de nombres que desee. Edite los manifiestos YAML a continuación para modificar el espacio de nombres.

    Nota No cree un controlador de instantáneas si configura instantáneas de volumen bajo demanda en un entorno GKE. GKE utiliza un controlador de instantáneas oculto integrado.
kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-3.0/deploy/kubernetes/snapshot-controller/rbac-snapshot-controller.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-3.0/deploy/kubernetes/snapshot-controller/setup-snapshot-controller.yaml
Consejo CSI Snapshotter proporciona un "validando webhook" ayudar a los usuarios a validar las instantáneas v1beta1 existentes y confirmar que son objetos de recursos válidos. El gancho web validador etiqueta automáticamente objetos de instantánea no válidos e impide la creación de futuros objetos no válidos. Kubernetes orchestrator pone en marcha el enlace validando webhook. Consulte las instrucciones para implementar manualmente el enlace web validador "aquí". Busque ejemplos de manifiestos de instantáneas no válidos "aquí".

El ejemplo detallado a continuación explica las construcciones necesarias para trabajar con instantáneas y muestra cómo se pueden crear y usar las instantáneas.

Paso 1: Configurar un VolumeSnapshotClass

Antes de crear una snapshot de volumen, establezca un enlace:./trident-reference/objects.html[VolumeSnapshotClass#].

$ cat snap-sc.yaml
#Use apiVersion v1 for Kubernetes 1.20 and above. For Kubernetes 1.17 - 1.19, use apiVersion v1beta1.
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
  name: csi-snapclass
driver: csi.trident.netapp.io
deletionPolicy: Delete

La driver Apunta al driver CSI de Astra Trident. deletionPolicy puede ser Delete o. Retain. Cuando se establece en Retain, la instantánea física subyacente en el clúster de almacenamiento se conserva incluso cuando VolumeSnapshot el objeto se ha eliminado.

Paso 2: Crear una instantánea de una RVP existente

$ cat snap.yaml
#Use apiVersion v1 for Kubernetes 1.20 and above. For Kubernetes 1.17 - 1.19, use apiVersion v1beta1.
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
  name: pvc1-snap
spec:
  volumeSnapshotClassName: csi-snapclass
  source:
    persistentVolumeClaimName: pvc1

La copia de Snapshot se está creando para una RVP llamada pvc1, y el nombre de la instantánea se establece en pvc1-snap.

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

$ kubectl get volumesnapshots
NAME                   AGE
pvc1-snap              50s

Esto creó un VolumeSnapshot objeto. Un VolumeSnapshot es análogo a un PVC y está asociado a un VolumeSnapshotContent objeto que representa la instantánea real.

Es posible identificar la VolumeSnapshotContent objeto para pvc1-snap VolumeSnapshot, describiéndolo.

$ 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
.
.

La Snapshot Content Name Identifica el objeto VolumeSnapshotContent que sirve esta snapshot. La Ready To Use Parámetro indica que la Snapshot se puede usar para crear una RVP nueva.

Paso 3: Creación de EVs a partir de VolumeSnapshots

Consulte el siguiente ejemplo para crear una RVP con una Snapshot:

$ 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 Muestra que la RVP debe crearse con un VolumeSnapshot llamado pvc1-snap como la fuente de los datos. Esto le indica a Astra Trident que cree una RVP a partir de la snapshot. Una vez creada la RVP, se puede conectar a un pod y utilizarla como cualquier otro PVC.

Nota Cuando se elimina un volumen persistente con instantáneas asociadas, el volumen Trident correspondiente se actualiza a un “estado de eliminación”. Para eliminar el volumen Astra Trident, deben eliminarse las snapshots del volumen.

Obtenga más información