È possibile eseguire il provisioning dinamico di uno snapshot o creare uno snapshot di volume con pre-provisioning di un volume di blocco in un cluster Servizio TKG. È inoltre possibile ripristinare uno snapshot esistente.

Nota: Non è consigliabile creare classi di snapshot di volume e utilizzarle per creare snapshot di volume. Utilizzare solo una classe di snapshot di volume preesistente. Le classi di snapshot di volume preesistenti supportano solo il deletionPolicy Elimina. La creazione di classi di snapshot di volume con deletionPolicy Conserva non è supportata.

Creazione di uno snapshot con provisioning dinamico in un cluster Servizio TKG

Eseguire il provisioning dinamico di uno snapshot in un cluster Servizio TKG.

Procedura

  1. Verificare che sia presente StorageClass.
    $ 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. Creare una PVC utilizzando la StorageClass del Passaggio 1.
    Utilizzare il seguente YAML come esempio.
    $ 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. Verificare che il componente VolumeSnapshotClass sia disponibile.
    $ kubectl get volumesnapshotclass
    NAME                         DRIVER                   DELETIONPOLICY   AGE
    volumesnapshotclass-delete   csi.vsphere.vmware.com   Delete           11d
    
  4. Creare un VolumeSnapshot utilizzando il VolumeSnapshotClass ottenuto nel Passaggio 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
    
    

Creazione di uno snapshot con pre-provisioning in un cluster Servizio TKG

Creare uno snapshot del volume con pre-provisioning di un volume di blocco (PVC) qualsiasi in un cluster Servizio TKG utilizzando uno snapshot del volume dello stesso volume di blocco (PVC) dal Supervisore.

Eseguire questi passaggi per creare staticamente uno snapshot in un nuovo cluster TKG utilizzando le informazioni dello snapshot sottostante rimanente nel Supervisore .

Nota: Non è possibile creare snapshot di volume direttamente in un Supervisore.

Prerequisiti

  • Acquisire familiarità con le informazioni sulla creazione di snapshot Kubernetes. Per informazioni dettagliate, vedere la pagina relativa aglisnapshot di volume nella documentazione di Kubernetes.
  • Assicurarsi che lo snapshot del volume soddisfi le seguenti condizioni:
    • Si trova nello stesso spazio dei nomi in cui si trova il PVC di origine.
    • Si trova nello stesso spazio dei nomi in cui si trova il cluster TKG.

È anche possibile riutilizzare in un nuovo cluster TKG uno snapshot del volume che non è più necessario per un altro cluster TKG nello stesso spazio dei nomi. A tale scopo, modificare deletionPolicy di VolumeSnapshotContent nel cluster TKG originale impostandolo su Retain, quindi eliminare l'oggetto VolumeSnapshot corrispondente, nonché gli oggetti VolumeSnapshotContent.

Procedura

  1. Prendere nota del nome dell'oggetto VolumeSnapshot originale nel Supervisore.
    Se si riutilizza lo snapshot del volume di un cluster TKG precedente, è possibile recuperare il nome di VolumeSnapshot del Supervisore da snapshotHandle dell'oggetto VolumeSnapshotContent precedente nel cluster TKG.
  2. Creare un oggetto VolumeSnapshotContent.
    Nel file YAML, specificare il valore dell'elemento seguente:
    Per snapshotHandle, immettere il nome di VolumeSnapshot del Supervisore recuperato nel passaggio 1.
    Nota: Nota: se si riutilizza uno snapshot del volume di un altro cluster TKG, eliminare gli oggetti VolumeSnapshot e VolumeSnapshotContent dal cluster TKG precedente, con deletionPolicy impostato su Retain prima di creare un VolumeSnapshotContent nel nuovo cluster TKG.
    Utilizzare il seguente manifesto YAML come esempio.
    --------
    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. Creare un VolumeSnapshot che corrisponda all'oggetto VolumeSnapshotContent creato nel passaggio 2.
    ---------
    apiVersion: snapshot.storage.k8s.io/vl
    kind: VolumeSnapshot
    metadata:
     name: static-tkg-block-snapshot 
    spec: 
     source:
      volumeSnapshotContentName: static-tkg-block-snapshotcontent
    ---------
    
  4. Verificare che l'oggetto VolumeSnapshot creato nel passaggio 3 sia contrassegnato da ReadyToUse con valore "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
    

Ripristino di uno snapshot di volume in un cluster Servizio TKG

Ripristinare uno snapshot di volume già creato.

Procedura

  1. Verificare che lo snapshot di volume da ripristinare sia disponibile nel cluster 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. Creare una PVC dallo snapshot del volume.
    $ 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