自动重建pvc脚本

15 阅读1分钟

假如你也使用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