假设我使用10G的PersistentVolumeClaim部署在kubernetes上的单节点数据库服务(PostgreSQL,MySQL,等等......)将在GKE或AWS或Azure上运行(这并不重要)。将磁盘扩展到20G的步骤是什么?例如,有没有办法让PVC绑定到现有磁盘(10G磁盘的快照)或类似的东西?
我想要的是增加属于PVC的磁盘的存储大小并维护旧数据(磁盘不一定是数据库,所以我不打算恢复数据库备份或类似的东西)。
我正在寻找类似的东西:拍摄旧磁盘的快照,从快照创建一个更大的磁盘,并“让PVC使用新磁盘”。
谢谢
答案 0 :(得分:3)
你有PV 10G的PVC。你想增加它的大小。不幸的是,还不支持调整大小。因此,您需要创建20G尺寸的新PVC。
让我们说,您现有的10G PVC称为older
。
请按照以下步骤操作:
第1步:使用20G创建新的PVC,假设其名为latest
。
第2步:装载older
& latest
都在容器中。将数据从older
复制到latest
。
第3步:删除PVC older
,我们不再需要older
了。数据已复制到latest
PV。
第4步:使latest
的PV可用。
$ kubectl get pvc latest
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
latest Bound pvc-8badc3c2-08c5-11e8-b07a-080027b3e1a6 10Gi RWO standard 30s
修改PV pvc-8badc3c2-08c5-11e8-b07a-080027b3e1a6
以将persistentVolumeReclaimPolicy设置为Retain
。因此删除PVC不会删除PV。
现在,删除PVC latest
。
$ kubectl delete pvc latest
$ 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/latest standard 3m
查看状态,PV已发布。
现在,让这个latest
PV可以由另一个PVC older
声明,因为我们想在此PVC older
下使用20G。
再次编辑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的状态是可用的。
第5步:通过latest
PVC
older
PV
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: older
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/older 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/older standard 9m
最后:将persistentVolumeReclaimPolicy设置为Delete
这就是您的PVC older
拥有latest
PV 20G的方式。
答案 1 :(得分:0)
在Kubernetes v1.11中,持久性卷扩展功能已升级为Beta。
https://kubernetes.io/blog/2018/07/12/resizing-persistent-volumes-using-kubernetes/
通过在StorageClass中将allowVolumeExpansion
字段设置为true
来启用此功能。然后,可以编辑由此StorageClass
创建的任何PVC,以请求更多空间。最后,引用卷的Pod应该重新启动