你的问题的答案是不行。在Kubernetes中没有办法更改任何元名称。
但是,有一种方法可以满足你的需求。
你想通过旧的PersistentVolumeClaim来声明你的新的更大的PersistentVolume。
假设,旧的PVC名为victim
,新的PVC名为bigger
。你想要通过victim
PVC来声明为bigger
创建的PV,因为你的应用程序已经在使用victim
PVC。
按照以下步骤进行操作。
第一步:删除你的旧的PVC victim
。
第二步:使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(我们的受害者
)索赔。
再次编辑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的状态是Available。
第3步: 通过victim
PVC声明bigger
PV
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: victim
spec:
accessModes:
- ReadWriteOnce
volumeName: pvc-8badc3c2-08c5-11e8-b07a-080027b3e1a6
resources:
requests:
storage: 10Gi
使用 volumeName 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。