增加kubernetes上的持久磁盘大小
假设我在kubernetes上部署了一个单节点数据库服务(PostgreSQL、MySQL,无论什么…),它使用的是将在GKE、AWS或Azure上运行的10G PersistentVolumeClaim(这并不重要)。将磁盘放大到20G的步骤是什么?例如,有没有办法将PVC绑定到现有磁盘(10G磁盘的快照)或类似的东西 我想要的是增加属于PVC的磁盘的存储大小并维护旧数据(磁盘不一定是数据库,所以我不打算恢复数据库备份或类似的东西) 我正在寻找这样的东西:拍摄旧磁盘的快照,从快照创建一个更大的磁盘,并“让PVC使用新磁盘”增加kubernetes上的持久磁盘大小,kubernetes,Kubernetes,假设我在kubernetes上部署了一个单节点数据库服务(PostgreSQL、MySQL,无论什么…),它使用的是将在GKE、AWS或Azure上运行的10G PersistentVolumeClaim(这并不重要)。将磁盘放大到20G的步骤是什么?例如,有没有办法将PVC绑定到现有磁盘(10G磁盘的快照)或类似的东西 我想要的是增加属于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步:删除PVColder
,我们不再需要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
编辑PVpvc-8badc3c2-08c5-11e8-b07a-080027b3e1a6
以将PersistentVolumeClaimplicy设置为Retain
。因此,删除PVC不会删除PV
现在,删除PVClatest
$ 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
使用volumeNamepvc-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步:删除PVColder
,我们不再需要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
编辑PVpvc-8badc3c2-08c5-11e8-b07a-080027b3e1a6
以将PersistentVolumeClaimplicy设置为Retain
。因此,删除PVC不会删除PV
现在,删除PVClatest
$ 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
使用volumeNamepvc-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在任何受支持的