Puede aprovisionar una instantánea de forma dinámica o crear una instantánea de volumen aprovisionada previamente de un volumen de bloque en un clúster de Servicio TKG. También puede restaurar una instantánea existente.

Nota: No debe crear clases de instantáneas de volumen y utilizarlas para crear instantáneas de volumen. Utilice solo una clase de instantánea de volumen preexistente. Las clases de instantáneas de volúmenes preexistentes solo admiten la deletionPolicy Eliminar. No se admite la creación de clases de instantáneas de volumen con la directiva deletionPolicy Conservar.

Crear una instantánea aprovisionada dinámicamente en un clúster de Servicio TKG

Aprovisione dinámicamente una instantánea en un clúster de Servicio TKG.

Procedimiento

  1. Compruebe que StorageClass está presente.
    $ kubectl get sc
    NAME                             PROVISIONER              RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
    gc-storage-profile               csi.vsphere.vmware.com   Delete          Immediate              true                   11d
    gc-storage-profile-latebinding   csi.vsphere.vmware.com   Delete          WaitForFirstConsumer   true                   11d
    
  2. Cree una PVC usando la StorageClass del paso 1.
    Utilice el siguiente YAML como ejemplo.
    $ cat example-pvc.yaml
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: example-raw-block-pvc
    spec:
      volumeMode: Block
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 1Gi
      storageClassName: gc-storage-profile
    
    $ kubectl apply -f example-pvc.yaml
    $ kubectl get pvc
    NAME                    STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS         AGE
    example-raw-block-pvc   Bound    pvc-4c0c030d-25ac-4520-9a04-7aa9361dfcfc   1Gi        RWO            gc-storage-profile   2m1s
    
  3. Compruebe que VolumeSnapshotClass esté disponible.
    $ kubectl get volumesnapshotclass
    NAME                         DRIVER                   DELETIONPOLICY   AGE
    volumesnapshotclass-delete   csi.vsphere.vmware.com   Delete           11d
    
  4. Cree un VolumeSnapshot usando el valor de VolumeSnapshotClass que obtuvo en el paso 3.
    $cat example-snapshot.yaml
    apiVersion: snapshot.storage.k8s.io/v1
    kind: VolumeSnapshot
    metadata:
      name: example-raw-block-snapshot
    spec:
      volumeSnapshotClassName: volumesnapshotclass-delete
      source:
        persistentVolumeClaimName: example-raw-block-pvc
    
    $ kubectl apply -f example-snapshot.yaml
    $ kubectl get volumesnapshot
    NAME                         READYTOUSE   SOURCEPVC               SOURCESNAPSHOTCONTENT   RESTORESIZE   SNAPSHOTCLASS                SNAPSHOTCONTENT
                                CREATIONTIME   AGE
    example-raw-block-snapshot   true         example-raw-block-pvc                           1Gi           volumesnapshotclass-delete   snapcontent-ae019c16-b07c-4a92-868b-029babd641d3   6s             6s
    
    

Crear una instantánea aprovisionada previamente en un clúster de Servicio TKG

Cree una instantánea de volumen aprovisionada previamente de cualquier volumen de bloque (PVC) en un clúster de Servicio TKG mediante una instantánea de volumen del mismo volumen de bloque (PVC) de Supervisor.

Siga estos pasos para crear estáticamente una instantánea de volumen en un nuevo clúster de TKG utilizando la información de la instantánea subyacente de sobra en Supervisor.

Nota: No se pueden crear instantáneas de volumen directamente en un Supervisor.

Requisitos previos

  • Familiarícese con la información sobre la creación de instantáneas de Kubernetes. Para obtener más información, consulte la página Instantáneas de volumen en la documentación de Kubernetes.
  • Asegúrese de que la instantánea de volumen cumple las siguientes condiciones:
    • La instantánea de volumen está presente en el mismo espacio de nombres en el que reside el PVC de origen.
    • La instantánea de volumen está presente en el mismo espacio de nombres en el que reside el clúster de TKG.

También puede reutilizar en un nuevo clúster de TKG una instantánea de volumen que ya no la necesite otro clúster de TKG en el mismo espacio de nombres. Para ello, cambie deletionPolicy de VolumeSnapshotContent en el clúster de TKG original a Retain y después elimine la VolumeSnapshot correspondiente, así como los objetos VolumeSnapshotContent.

Procedimiento

  1. Anote el nombre del objeto VolumeSnapshot original en el Supervisor.
    Si reutiliza la instantánea de volumen de un clúster de TKG antiguo, también puede recuperar el nombre de VolumeSnapshot de Supervisor del snapshotHandle del objeto VolumeSnapshotContent anterior existente en el clúster de TKG anterior.
  2. Cree un objeto VolumeSnapshotContent.
    En el archivo YAML, especifique el valor del siguiente elemento:
    Para snapshotHandle, introduzca el nombre de VolumeSnapshot de Supervisor que obtuvo en el paso 1.
    Nota: Nota: Si vuelve a utilizar una instantánea de volumen de otro clúster de TKG, elimine los objetos VolumeSnapshot y VolumeSnapshotContent del clúster de TKG anterior, con deletionPolicy establecido en Conservar, antes de crear un VolumeSnapshotContent en el nuevo clúster de TKG.
    Utilice el siguiente manifiesto de YAML como ejemplo.
    --------
    apiVersion: snapshot.storage.k8s.io/v1
    kind: VolumeSnapshotContent 
    metadata:
     name: static-tkg-block-snapshotcontent 
    spec:
     deletionPolicy: Delete
     driver: csi.vsphere.vmware.com
     source:
      snapshotHandle: "supervisor-block-volumeSnapshot-name" # Enter the VolumeSnapshot name from the Supervisor.
     volumeSnapshotRef:
      name: static-tkg-block-snapshot
      namespace: "supervisor-tkg-namespace" # Enter the namespace of Tanzu Kubernetes Grid Cluster.
    ---------
  3. Cree un VolumeSnapshot que concuerde con el objeto VolumeSnapshotContent que creó en el paso 2.
    ---------
    apiVersion: snapshot.storage.k8s.io/vl
    kind: VolumeSnapshot
    metadata:
     name: static-tkg-block-snapshot 
    spec: 
     source:
      volumeSnapshotContentName: static-tkg-block-snapshotcontent
    ---------
    
  4. Compruebe que la VolumeSnapshot que creó en el paso 3 esté marcada con ReadyToUse como "true".
    kubecti getvolumesnapshot static-tkg-block-snapshot
    NAME	                   READYTOUSE SOURCEPVC SOURCESNAPSHOTCONTENT            RESTORESIZE SNAPSHOTCLASS SNAPSHOTCONTENT	              CREATIONTIME AGE
    static-tkg-block-snapshot  true	             static-tkg-biock-snapshotcontent 5Gi	                   static-tkg-block-snapsnotcontent 76m	      22m
    

Restaurar una instantánea de volumen en un clúster de Servicio TKG

Restaure una instantánea de volumen que ya se haya creado.

Procedimiento

  1. Compruebe que la instantánea del volumen que desea restaurar esté disponible en el clúster de TKG.
    $ kubectl get volumesnapshot
    NAME                         READYTOUSE   SOURCEPVC               SOURCESNAPSHOTCONTENT   RESTORESIZE   SNAPSHOTCLASS                SNAPSHOTCONTENT                                    CREATIONTIME   AGE
    example-raw-block-snapshot   true         example-raw-block-pvc                           1Gi           volumesnapshotclass-delete   snapcontent-ae019c16-b07c-4a92-868b-029babd641d3   2m36s          2m36s
    
  2. Cree una PVC a partir de la instantánea de volumen.
    $ cat example-restore.yaml
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: example-raw-block-restore
    spec:
      storageClassName: gc-storage-profile
      dataSource:
        name: example-raw-block-snapshot
        kind: VolumeSnapshot
        apiGroup: snapshot.storage.k8s.io
      volumeMode: Block
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 1Gi
    
    $ kubectl apply -f example-restore.yaml
    $ kubectl get pvc
    NAME                        STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS         AGE
    example-raw-block-pvc       Bound    pvc-4c0c030d-25ac-4520-9a04-7aa9361dfcfc   1Gi        RWO            gc-storage-profile   11m
    example-raw-block-restore   Bound    pvc-96eaab16-9ec1-446a-9392-e86d13c9b2e2   1Gi        RWO            gc-storage-profile   2m8s