k8s ceph pv pvc 动态扩容

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s ceph pv pvc 动态扩容相关的知识,希望对你有一定的参考价值。

参考技术A 目的:初始配置pv和pvc的容量小了,想要进行动态扩容
修改pvc配置,其它无操作
kubectl edit PersistentVolumeClaim harbor-harbor-jobservice -n harbor
修改spec. resources.requests.storage: 4Gi -> 8G

pvc报错如下,一致报错,循环报错

1、 kubectl edit storageclass ceph 确保allowVolumeExpansion: true
2、确定文件系统类型,只有卷中包含的文件系统是 XFS、Ext3 或者 Ext4 时,你才可以重设卷的大小
3、检查卷使用模式:当卷中包含文件系统时,只有在 Pod 使用 ReadWrite 模式来使用 PVC 申领的情况下才能重设其文件系统的大小。
4、上述修改完pvc配置,与之对应的pv配置也要相应修改
5、重启pod:文件系统扩充的操作或者是在 Pod 启动期间完成,或者在下层文件系统支持在线 扩充的前提下在 Pod 运行期间完成。

如果扩充下层存储的操作失败,集群管理员可以手动地恢复 PVC 申领的状态并 取消重设大小的请求。否则,在没有管理员干预的情况下,控制器会反复重试 重设大小的操作。

参考
https://kubernetes.io/zh/docs/concepts/storage/persistent-volumes/#expanding-persistent-volumes-claims

持久化存储之 PV、PVC、StorageClass

参考技术A

容器化一个应用比较麻烦的地方,就是对于有状态的服务的管理,最常见的状态就是 存储状态 。

创建的PVC只有和对应的PV绑定才可以使用
绑定条件:

成功绑定之后,Pod 就是声明PVC绑定的持久化存储了,使用方法如下:

Pod 只需要在 volumes 字段里声明要使用的 PVC 的name,等Pod创建后,Kubelet会将 PVC 绑定的 PV, 例如上面的 NFS 类型的 volume 挂载到容器内目录。

PVC 和 PV 的设计,其实跟“面向对象”的思想完全一致

当每次创建 PVC 声明使用存储时,都需要去手动的创建 PV,来满足 PVC 的使用。

可以用一种机制来根据用户声明的存储使用量(PVC)来动态的创建对应的持久化存储卷(PV)。k8s 用 StorageClass 来实现动态创建 持久化存储。

存储控制器 Volume Controller,是用来专门处理持久化存储的控制器,其一个子控制循环 PersistentVolumeController 负责实现 PV 和 PVC 的绑定。
PersistentVolumeController 会 watch kube-apiserver 的 PVC 对象。如果发现有 PVC对象创建,则会查看所有可用的 PV, 如果有则绑定,若没有,则会使用 StorageClass 的配置和 PVC 的描述创建 PV 进行绑定。

所谓将一个 PV 与 PVC 进行“绑定”,其实就是将这个PV对象的名字,填在了 PVC 对象的 spec.volumeName 字段上

以上是关于k8s ceph pv pvc 动态扩容的主要内容,如果未能解决你的问题,请参考以下文章

Ceph持久化存储为k8s应用提供存储方案

k8s持久化PV和PVC

k8s实践17:kubernetes对接nfs存储实现pvc动态按需创建分配绑定pv

持久化存储之 PV、PVC、StorageClass

[K8S系列七]存储-PV、PVC与Storage Class

K8S动态PV实战之nginx部署