增加kubernetes上的持久磁盘大小

增加kubernetes上的持久磁盘大小,kubernetes,Kubernetes,假设我在kubernetes上部署了一个单节点数据库服务(PostgreSQL、MySQL,无论什么…),它使用的是将在GKE、AWS或Azure上运行的10G PersistentVolumeClaim(这并不重要)。将磁盘放大到20G的步骤是什么?例如,有没有办法将PVC绑定到现有磁盘(10G磁盘的快照)或类似的东西 我想要的是增加属于PVC的磁盘的存储大小并维护旧数据(磁盘不一定是数据库,所以我不打算恢复数据库备份或类似的东西) 我正在寻找这样的东西:拍摄旧磁盘的快照,从快照创建一个更大的

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

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

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


谢谢你

你有一个PVC和PV 10G。你想增加它的大小。不幸的是,目前还不支持调整大小。因此,您需要创建20G大小的新PVC

比如说,您现有的10G PVC称为
旧版

遵循以下步骤:

第1步:创建新的20G PVC,比如说它叫
latest

步骤2:
旧版和
最新版装载到容器中。将数据从较旧的
复制到最新的

$ 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
第3步:删除PVC
older
,我们不再需要
older
。数据复制到
最新版本
PV

第4步:使
最新版本的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
以将PersistentVolumeClaimplicy设置为
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已释放

现在,让另一个PVC,我们的
旧版
可以使用此
最新的
PV,因为我们希望在该PVC
旧版
下使用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步:索赔
最新的
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
最后:将persistentVolumeClaImpolicy设置为
Delete


这就是为什么您的PVC
较旧的
具有20G的PVC
最新的
PV。

您具有10G的PVC。你想增加它的大小。不幸的是,目前还不支持调整大小。因此,您需要创建20G大小的新PVC

比如说,您现有的10G PVC称为
旧版

遵循以下步骤:

第1步:创建新的20G PVC,比如说它叫
latest

步骤2:
旧版和
最新版装载到容器中。将数据从较旧的
复制到最新的

$ 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
第3步:删除PVC
older
,我们不再需要
older
。数据复制到
最新版本
PV

第4步:使
最新版本的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
以将PersistentVolumeClaimplicy设置为
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已释放

现在,让另一个PVC,我们的
旧版
可以使用此
最新的
PV,因为我们希望在该PVC
旧版
下使用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步:索赔
最新的
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
最后:将persistentVolumeClaImpolicy设置为
Delete


这就是为什么您的PVC
较旧的
具有20G的
最新的
PV。

在Kubernetes v1.11中,持续卷扩展功能正在升级为beta版


通过在StorageClass中将
allowVolumeExpansion
字段设置为
true
来启用此功能。然后,可以编辑从此
StorageClass
创建的任何PVC以请求更多空间。最后,引用卷的pod应该重新启动

在Kubernetes v1.11中,持久卷扩展功能正在升级为beta版


通过在StorageClass中将
allowVolumeExpansion
字段设置为
true
来启用此功能。然后,可以编辑从此
StorageClass
创建的任何PVC以请求更多空间。最后,引用卷的pod应该重新启动

这取决于云提供商,而不是k8s。所以,你将目标对准哪家云提供商是很重要的。@NorbertvanNobelen实际上,我想我的问题被误解了。我需要一个常规过程来替换PersistentVolumeClaim应该绑定的磁盘(由任何受支持的提供程序中的k8s自动配置)。例如,让我们只关注GKE。当我使用PVC创建部署时,k8s将在google cloud中提供一个新磁盘,并将该磁盘绑定到PVC。稍后,我想快照这个磁盘,在谷歌云上根据快照创建一个新的更大的磁盘,并“告诉”PVC绑定到这个新磁盘,而不是旧磁盘。是的,这部分依赖于云提供商,而不是k8s目前可以做的事。你得写下来yourself@NorbertvanNobelen我的想法是在pod中再增加一个10G的容量,但老实说,我还没有真正尝试过。我主要使用来自云的DaaS服务。@DanielFerreiraJorge,您是如何解决您的问题的?这取决于云提供商,而不是k8s。所以,你将目标对准哪家云提供商是很重要的。@NorbertvanNobelen实际上,我想我的问题被误解了。我想要一个通用的过程来替换哪个磁盘(由k8s在任何受支持的