假如你也使用nfs-client-provisioner,kubernetes开源的nfs storageclass组件,那么这个脚本肯定适合你。
原因: 在迁移PersistentVolumeClaim后,发现nfs文件夹实际并没有创建,此时你需要重建PVC(先删掉再创建).
- recreate-pvc-in-namespace.sh
export NAMESPACE=default
kubectl get pvc -n onemessage-im2 | grep -v NAME | gawk '{ print $1 }' > pvclist
for pvc in $(cat pvclist)
do
export NAME=$pvc
echo "[INFO] deleting pvc $pvc"
kubectl delete pvc $NAME -n $NAMESPACE
echo "[INFO] creating pvc $pvc"
cat example-pvc.yaml |envsubst | kubectl apply -f -
done
- example-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: ${NAME}
namespace: ${NAMESPACE}
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
storageClassName: nfs
status:
accessModes:
- ReadWriteMany
capacity:
storage: 10Gi
用法:
[root@master01 yaml]# bash recreate-pvc-in-namespace.sh
[INFO] deleting pvc data-file
persistentvolumeclaim "data-im2-file" deleted
[INFO] creating pvc data2-file
persistentvolumeclaim/data-im2-file created