增加kubernetes上持久磁盘的大小

时间:2017-08-09 15:26:35

标签: kubernetes

假设我使用10G的PersistentVolumeClaim部署在kubernetes上的单节点数据库服务(PostgreSQL,MySQL,等等......)将在GKE或AWS或Azure上运行(这并不重要)。将磁盘扩展到20G的步骤是什么?例如,有没有办法让PVC绑定到现有磁盘(10G磁盘的快照)或类似的东西?

我想要的是增加属于PVC的磁盘的存储大小并维护旧数据(磁盘不一定是数据库,所以我不打算恢复数据库备份或类似的东西)。

我正在寻找类似的东西:拍摄旧磁盘的快照,从快照创建一个更大的磁盘,并“让PVC使用新磁盘”。

谢谢

2 个答案:

答案 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应该重新启动