A simple tool to reuse PV. It can rename a PVC or move a PVC from one namespace to another namespace. After that we can resue bound PV without data lost
k8s-volume-utils pvc
It is used to rename a PVC object in kubernetes cluster.
It will delete original PVC and create new PVC referring to same PV.
New PVC can be in another namespace.
k8s-volume-utils pv
It can help to reuse a pv
Usage:
k8s-volume-utils [command]
Available Commands:
help Help about any command
pv help to reuse a pv
pvc rename PVC object in kubernetes clusterd
- create two namespaces for test
oc new-project pvc
oc new-project pvc1
oc project pvc - create a statefulset and it will create a PV.
- Edit sts-pvc-test.yaml to update its
storageClassNameto available one on your cluster. oc create -f sts-pvc-test.yamloc get po www-pvc-test-0 -wto wait pod running. ThenWe can see there is data in PV.$ oc exec pvc-test-0 cat /usr/share/nginx/html/a.txt a
- Edit sts-pvc-test.yaml to update its
- delete the statefulset by
oc delete -f sts-pvc-test.yaml. Now we have a pvcwww-pvc-test-0to be reused by other service. - move pvc to namespace pvc1 by
go run main.go pvc www-pvc-test-0 "" pvc1
oc get pvc -n pvc1to check PVCwww-pvc-test-0is moved to namespace pvc1. - create another statefulset to reuse the same PV.
- Edit sts-pvc-test.yaml
Change"echo a > /usr/share/nginx/html/a.txt;sleep 3600"to"echo b > /usr/share/nginx/html/b.txt;sleep 3600" oc -n pvc1 create -f sts-pvc-test.yaml- when pod
pvc-test-0is running in namespacepvc1. Runoc exec pvc-test-0 cat /usr/share/nginx/html/a.txt -n pvc1to check data is not lost.
- Edit sts-pvc-test.yaml