This document will show you how to create snapshots of Portworx volumes and how you can clone those snapshots to use them in pods.

Note: The suggested way to manage snapshots on Kuberenetes is to use STORK. If you are looking to create Portworx snapshots using PVC annotations, you will find instructions here.


Installing STORK

This requires that you already have STORK installed and running on your Kubernetes cluster. If you fetched the Portworx specs from and used the default options, STORK is already installed.

Creating snapshots

With local snapshots, you can either snapshot individual PVCs one by one or snapshot a group of PVCs by using a selector or a group ID.

Creating PVCs from snapshots

When you install STORK, it also creates a storage class called stork-snapshot-sc. This storage class can be used to create PVCs from snapshots.

To create a PVC from a snapshot, you would add the annotation to refer to the snapshot name.

For the above snapshot, the spec would like this:

apiVersion: v1
kind: PersistentVolumeClaim
  name: mysql-snap-clone
  annotations: mysql-snapshot
     - ReadWriteOnce
  storageClassName: stork-snapshot-sc
      storage: 2Gi

Once you apply the above spec you will see a PVC created by STORK. This PVC will be backed by a Portworx volume clone of the snapshot created above.

$ kubectl get pvc  
NAMESPACE   NAME                                   STATUS    VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS                AGE
default     mysql-data                             Bound     pvc-f782bf5c-20e7-11e8-931d-0214683e8447   2Gi        RWO            px-mysql-sc                 2d
default     mysql-snap-clone                       Bound     pvc-05d3ce48-2280-11e8-98cc-0214683e8447   2Gi        RWO            stork-snapshot-sc           2s

If you had taken snapshots of a group of PVCs, the process is the same as above. So corresponding to each volumesnapshot, you will create a PVC.