Create and use local snapshots
This document will show you how to create snapshots of Portworx volumes and how you can clone those snapshots to use them in pods.
This requires that you already have STORK installed and running on your Kubernetes cluster. If you fetched the Portworx specs from the Portworx Spec Generator in PX-Central and used the default options, STORK is already installed.
With local snapshots, you can either snapshot individual PVCs one by one or snapshot a group of PVCs by using a label selector.
Snapshot single PVCs
Instructions on taking snapshots of single PVCs and restoring PVCs from the snapshots
Snapshot group of PVCs
Instructions on taking snapshots of a group of PVCs and restoring PVCs from the snapshots
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
snapshot.alpha.kubernetes.io/snapshot annotation to refer to the snapshot
If the snapshot exists in another namespace, the snapshot namespace should be specified with
stork/snapshot-source-namespace annotation in the PVC.
Note that the storageClassName needs to be the Stork StorageClass
stork-snapshot-sc as in the example below.
For the above snapshot, the spec would like this:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mysql-snap-clone annotations: snapshot.alpha.kubernetes.io/snapshot: mysql-snapshot spec: accessModes: - ReadWriteOnce storageClassName: stork-snapshot-sc resources: requests: 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