我正在Kubernetes上运行MySQL部署,但似乎我的分配空间不够,最初我添加了50GB
的持久量,现在我想将其扩展为100GB
。
我已经看到一个持久的卷声明在创建后是不可变的,但我能以某种方式调整持久卷的大小,然后重新创建我的声明吗?
答案 0 :(得分:15)
对于某些卷类型,Kubernetes 1.9(alpha in 1.8)是可能的:gcePersistentDisk,awsElasticBlockStore,Cinder,glusterfs,rbd
需要启用PersistentVolumeClaimResize
许可插件和存储类,其allowVolumeExpansion
字段设置为true。
请参阅https://kubernetes.io/docs/concepts/storage/persistent-volumes/#expanding-persistent-volumes-claims
上的官方文档答案 1 :(得分:9)
是的,从1.11开始,persistent volumes can be resized在某些云提供商上。要增加音量,请执行以下操作:
PVC
编辑kubectl edit pvc $your_pvc
大小使用该卷的Pod终止后,文件系统将扩展,PV
的大小也会增加。有关详细信息,请参见上面的链接。
答案 2 :(得分:8)
不,Kubernetes尚不支持自动音量调整。
磁盘大小调整目前是一个完全手动的过程。
假设您创建了具有给定容量的Kubernetes PV对象,并且PV绑定到PVC,然后附加/挂载到节点以供pod使用。如果您增加卷大小,pod将继续能够毫无问题地使用磁盘,但是他们无法访问额外的空间。
要在卷上启用其他空间,必须手动调整分区大小。您可以按照here说明执行此操作。您必须首先删除引用卷的pod,等待它分离,然后将卷手动附加/装入您有权访问的某个VM实例,并运行所需的步骤以调整其大小。
已打开问题#35941以跟踪功能请求。
答案 3 :(得分:4)
就PVC / PV' resizing'而言,k8s仍然不支持,但我相信它可能会在1.9中出现
通过处理PVC / PV和(例如)GCE PD,可以达到相同的最终结果。
例如,我有一个gitlab部署,通过StorageClass资源使用PVC和动态配置的PV。以下是我遇到的步骤:
kubectl describe pv <name-of-pv>
(稍后创建PV清单时很有用)"gcePersistentDisk: pdName: <name-of-pd>"
以及我在步骤3中获取的其他详细信息。确保将spec.capacity.storage更新为您想要的新容量PV要 (虽然不是必需的,但在此处没有效果,您可能希望更新PVC清单中的存储容量/值,为子孙后代) kubectl apply
(或等效)重新创建部署/窗格,PVC和PV 注意:某些步骤可能不是必需的,例如删除一些现有的部署/ pod ..资源,但我个人更喜欢删除它们,因为我知道ReclaimPolicy是Retain,我有一个快照。 / p>
答案 4 :(得分:3)
如果在群集上启用了某些实验性功能,则对于某些卷类型,包括gcePersistentDisk
和awsBlockStore
,1.8及以上版本中有some support。
对于其他卷类型,必须立即手动完成。此外,当pod在线时(不错!)支持自动执行此操作in a future version (currently slated for 1.11):
现在,这些是我使用AzureDisk
卷类型(对于托管磁盘)手动执行此操作的步骤,目前不支持持久磁盘大小调整(但support is coming for this too):
Scale
一次执行一个窗格。e2fsck
和resize2fs
来调整PV上的文件系统的大小(假设为ext3 / 4 FS)。卸载磁盘。Released
。Available
:
spec.capacity.storage
,spec.claimref
uid
和resourceVersion
字段以及status.phase
。metadata.resourceVersion
字段pv.kubernetes.io/bind-completed
和pv.kubernetes.io/bound-by-controller
注释以及spec.resources.requests.storage
字段更改为更新的PV大小,并status
内的所有字段。Pending
状态开始,但PV和PVC都应该相对快速地转换到Bound
。答案 5 :(得分:0)
您可以做的第一件事是检查您正在使用的存储类别,查看 allowVolumeExpansion
是否设置为 `true。如果是,则只需使用请求的卷更新 PVC 并检查 PVC 中的状态。
如果这对您不起作用,请尝试此操作(适用于 AWS
位用户)。
awsElasticBlockStore
-> `volume 下)。lsblk
列出附加的卷resize2fs
或 xfs_growfs
。df -h
并检查音量。注意:您只能在 6 小时内修改一次卷。
答案 6 :(得分:0)
编辑 PVC (kubectl edit pvc $your_pvc) 以指定新大小。编辑的关键是spec.resources.requests.storage:
尽管这个答案对我的 statefulset 的一个 pvc 效果很好,但其他人没有设法调整大小。我想这是因为 pod 重新启动太快,由于退避而没有时间开始调整大小过程。事实上,Pod 启动很快,但需要一些时间才能被视为准备就绪(增加退避)。
这是我的解决方法:
更新 pvc
备份 sts 规范
k get sts <sts-name> -o yaml > sts.yaml
然后用cascade=orphan删除sts。因此,pods 仍然会运行
kubectl delete sts --cascade=orphan <sts-name>
然后删除一个 pvc 不会调整大小的 pod
kubectl delete pod <pod-name>
等待 pvc 调整大小
kubectl get pvc -w
重新应用 sts 以便 pod 返回
kubectl apply -f sts.yaml
等待豆荚回来
重复直到所有 pvc 都调整大小!
答案 7 :(得分:-1)
是的,在版本1.8之后,可以查看卷扩展here
v1.8中引入了卷扩展作为Alpha功能