Kubernetes 如何重命名持久性卷声明?
可以重命名PVC吗?我似乎找不到可能的证据Kubernetes 如何重命名持久性卷声明?,kubernetes,persistence,rename,google-kubernetes-engine,Kubernetes,Persistence,Rename,Google Kubernetes Engine,可以重命名PVC吗?我似乎找不到可能的证据 我正试图缓解我刚刚偶然发现的“设备空间不足”的问题。基本上,我的计划要求我调整卷的大小,我的服务将数据保存在卷上 不幸的是,我仍然在GKE上使用Kubernetes 1.8.6。它没有启用准入插件: 1.9.1: 1.8.6: 因此,我必须尝试手动保存数据。我制定了以下计划: 创建新的、更大容量的PVC 创建一个带有“受害者”pvc和新的更大pvc的临时容器 复制数据 丢弃“受害者”PVC 重新命名新的更大pvc以代替“受害者” 所讨论的PVC附
我正试图缓解我刚刚偶然发现的“设备空间不足”的问题。基本上,我的计划要求我调整卷的大小,我的服务将数据保存在卷上 不幸的是,我仍然在GKE上使用Kubernetes 1.8.6。它没有启用准入插件:
- 1.9.1:
- 1.8.6:
但我不知道如何重命名持久卷声明。我无法验证这一点,但我相当确定,对于GKE,您可以在谷歌云控制台中找到PV使用的磁盘,并在那里调整其大小。完成后,您应该能够登录到其连接的节点,并在设备上运行
resize2fs
。这是肮脏的,但可以肯定的是,这在过去曾经对我起过作用
您无需卸载或复制即可执行此操作,如果磁盘处于活动状态或较大,则可以节省您的时间。您的问题的答案是否。在Kubernetes中无法更改任何元名称 但是,有一种方法可以满足您的要求 您想通过旧的PersistentVolumeClaim申请新的更大的PersistentVolume 比如说,旧PVC名为
受害者
,新PVC名为更大
。您想申请由受害者
PVC为biger
创建的PV。因为您的应用程序已经在使用vice
PVC
按照以下步骤进行破解
步骤1:删除您的旧PVC受害者
步骤2:使的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
编辑PVpvc-8badc3c2-08c5-11e8-b07a-080027b3e1a6
以将PersistentVolumeClaimplicy设置为Retain
。因此,删除PVC不会删除PV
现在,删除PVCbiger
$ 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已释放
现在,让另一名PVC,即我们的受害者
申请该PV
再次编辑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步:索赔biger
PV by受害者
PVC
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: victim
spec:
accessModes:
- ReadWriteOnce
volumeName: pvc-8badc3c2-08c5-11e8-b07a-080027b3e1a6
resources:
requests:
storage: 10Gi
使用volumeNamepvc-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
最后:将persistentVolumeClaImpolicy设置为Delete
这就是为什么您的PVC
受害者的PV更大。使用Kubernetes 1.11+您只需修改PVC的存储请求即可按需调整大小()
GKE支持这一点(我自己使用过好几次),它非常简单,没有戏剧性。我刚刚意识到我搞砸了。我不需要重命名任何东西。复制数据后,我将删除并重新创建受害者。检查我的答案。会有帮助吗?嗨。。你解决问题了吗?嗨,德里克!我可以调整磁盘大小,没有问题。我想做的是调整持久卷声明的大小,但该功能在我的Kubernetes版本中不可用。为了解决这个问题,我决定采用数据“复制”解决方案。它要求我重新命名其中一个PVC。但这似乎是不可能的……哦,对不起,我一定是完全错过了这一切中的C
。我知道调整持久卷的大小对我来说是一件麻烦事,因为在某些云中它不是自动的。嗨,很抱歉反应太晚。我还没有机会尝试你的解决方案,但只要看看它,它似乎是合法的!我不知道你能用PV
玩这样的把戏。非常感谢。您好@Mir我遵循了这些步骤,我可以确认它们工作正常。您知道在删除PVC时是否可以使用--cascade=false
,以防止其删除PV?我知道这在删除一个StatefulSet时起作用,不删除pod,但不确定它是否也适用于pvc。这将使过程更容易。