Expanding Persistent Volumes created using StatefulSets
It is currently not possible to expand PVs created using a StatefulSet directly from the StatefulSet template.
This is the current work around -
Edit the ‘storage’ value under spec:resources for PVC required to be expanded:
kubectl edit pvc www-web-0
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi # edit with new value
storageClassName: gp2
volumeName: pvc-489b1857-91dd-11e9-b4c5-0a5b8815a91e
Once the edit has been applied, you should see type: Resizing
under status:conditions:
kubectl get pvc www-web-0 -o yaml
status:
accessModes:
- ReadWriteOnce
capacity:
storage: 4Gi
conditions:
- lastProbeTime: null
lastTransitionTime: 2019-06-18T15:29:45Z
status: "True"
type: Resizing # You should see value
phase: Bound
Delete the corresponding pod associated to the pv:
kubectl delete pod web-0
pod "web-0" deleted
Once pod is recreated, you should see the new pv disc size in the pvc
kubectl get pvc www-web-0 -o yaml
status:
accessModes:
- ReadWriteOnce
capacity:
storage: 5Gi
phase: Bound
The following command will delete the StatefulSet without deleting the associated pods
kubectl delete statefulset --cascade=false web # `web` is the name of the StatefulSet
Apply the StatefulSet template with new pvc size (with everything else exactly the same) to your namespace.
There is an open issue for expanding PVs using StatefulSet templates in github. Once this is implemented, the above workaround will no longer be required.