您的问题的答案是否。在 Kubernetes 中无法更改任何元名称。
但是,有一种方法可以满足您的要求。
您想通过旧的 PersistentVolumeClaim 声明新的更大 PersistentVolume。
可以说,旧 PVC 名为 victim,新 PVC 名为 bigger。您想要声明由victim PVC 为bigger 创建的 PV。因为您的应用程序已经在使用victim PVC。
按照这些步骤进行破解。
第 1 步:删除旧的 PVC victim。
第 2 步: 使 bigger 的 PV 可用。
$ kubectl get pvc bigger
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
bigger Bound pvc-8badc3c2-08c5-11e8-b07a-080027b3e1a6 10Gi RWO standard 30s
编辑 PV pvc-8badc3c2-08c5-11e8-b07a-080027b3e1a6 以将 persistentVolumeReclaimPolicy 设置为 Retain。这样删除PVC不会删除PV。
现在,删除 PVC bigger。
$ kubectl delete pvc bigger
$ kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pvc-8badc3c2-08c5-11e8-b07a-080027b3e1a6 10Gi RWO Retain Released default/bigger standard 3m
查看状态,PV 已发布。
现在,让这个 PV 可以被另一个 PVC 声明,我们的 victim。
再次编辑 PV 以删除 claimRef
$ kubectl edit pv pvc-8badc3c2-08c5-11e8-b07a-080027b3e1a6
$ kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pvc-8badc3c2-08c5-11e8-b07a-080027b3e1a6 10Gi RWO Retain Available standard 6m
现在 PV 的状态是可用的。
第 3 步:通过victimPVC 声明bigger PV
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: victim
spec:
accessModes:
- ReadWriteOnce
volumeName: pvc-8badc3c2-08c5-11e8-b07a-080027b3e1a6
resources:
requests:
storage: 10Gi
使用卷名pvc-8badc3c2-08c5-11e8-b07a-080027b3e1a6
kubectl get pvc,pv
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
pvc/victim Bound pvc-8badc3c2-08c5-11e8-b07a-080027b3e1a6 10Gi RWO standard 9s
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pv/pvc-8badc3c2-08c5-11e8-b07a-080027b3e1a6 10Gi RWO Retain Bound default/victim standard 9m
最后:将 persistentVolumeReclaimPolicy 设置为 Delete
就是这样,你的 PVC victim 有更大的 PV。