k8s--使用nfs制备器的pvc如何扩容
使用nfs制备器不需要担心PVC中的配置导致无法正常使用NAS存储 , 只需要关注NAS本身存储是否够用即可 .
文章目录
k8s–使用nfs制备器的pvc如何扩容
背景&前言
问题背景
公司项目部署了一个系统,该系统需要使用minio时使用PV挂载了一个外部NAS作为存储硬盘。但由于该系统使用Helm部署在腾讯云TCS产品上,该Helm内规定了storageClass和PVC。
随着系统的推广,minio的空间使用量也逐渐增加。由于PVC需要设置spec.resource.request.capacity
,因此需要对PVC的容量进行扩容。
期望效果
- 修改(扩充)capacity
- 第一步的完成需要保证PV不更改,因为minio中已经存储了数据
文章结论
使用nfs制备器不需要担心PVC中的配置导致无法正常使用NAS存储 , 只需要关注NAS本身存储是否够用即可 .
TODO
该cifs制备器能否达到相同效果 ?
阅前须知
TCS环境上nfs的privisioner镜像为 :
- registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/nfs-subdir-external-provisioner:v4.0.2
cifs镜像为 : - registry.k8s.io/sig-storage/csi-provisioner:v3.5.0
- registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.8.0
- registry.k8s.io/sig-storage/livenessprobe:v2.10.0
- registry.k8s.io/sig-storage/smbplugin:v1.12.0
版本记录
修订时间 | 修订主题 | Work Context | 版本 |
---|---|---|---|
2024.4.29 | 初稿 | 基于TCS的1.22k8s版本进行pvc扩容测试 | v1.0 |
参考内容
正文
storageClass设置
PVC需要能扩展,需要在sc中设定一个字段:
allowVolumeExpansion: true #将此功能设置为 true 时,允许用户通过编辑相应的 PVC 对象来调整卷大小。
官方文档中提到的支持卷扩展的卷类型不包括NFS,因此需要对NFS卷类型是否能进行PVC扩容进行测试。
PVC扩容测试
创建测试用例
使用minio的Helm文件创建一个相同的minio
更新storage-size
更新后, 发现pvc的capacity并没有发生更改, 使用kubectl describe pvc
发现出现Warning Event:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning ExternalExpanding 2m18s volume_expand Ignoring the PVC: didn't find a plugin capable of expanding the volume; waiting for an external controller to process this PVC.
该minio的Helm中使用的是一个基于nfs的provisioner的storageclass, 使用nfs的网络文件系统协议的网盘的原因是本项目最初申请的网盘是nfs协议的.
经过初步搜索, 发现有文章提过nfs盘无法进行扩容. 参考文章:kubernetes中用NFS做后端存储支不支持PVC扩容?
于是接下来尝试能否对cifs网盘的pv进行扩容. 如果cifs网盘可以进行扩容的话, 后续将考虑申请cifs网盘并将本项目的minio迁移使用cifs盘.
经过测试, cifs网盘也无法进行扩容, Warning Events如上, 不再赘述.
PVC容量上限测试
更改PVC配置对nfs和cifs网盘的PV进行扩容的路子走不通, 在nfs开源插件的github的issues中搜索到相关问题 :
- nfs-client-provisioner volume cannot be expanded
- Ignoring the PVC: didn’t find a plugin capable of expanding the volume; waiting for an external controller to process this PVC.
以上两个issues中有人解答到, nfs插件实际上不会真正限制PV的写入容量, 因此扩容是一个没有必要的需求.
且该github仓库中的README在最后也对存储限制进行了补充 :
- 提供的存储并不保证。您可能分配了超过NFS共享的总大小。共享也可能没有足够的存储空间来实际容纳请求。
- 提供的存储限制并未强制执行。应用程序可以扩展到使用所有可用的存储,而不考虑已分配的大小。
- 目前不支持任何形式的存储调整大小/扩展操作。您最终会遇到一个错误状态:忽略PVC(持久卷声明):没有找到能够扩展卷的插件;正在等待外部控制器处理此PVC。
因此接下来需要尝试在使用一个申请量1GPVC的pod上写入/传入超过1G的文件, 测试是否能正常写入/传入以及重新读出/取出.
创建测试用例
使用minio的Helm文件创建一个相同的minio, 使用nfs的storageClass.
写入数据
使用ingress将minio的console网页从测试网段暴露, 确定pvc有成功创建pv并已在NAS上挂载了一个文件路径, 然后通过minio的console网页进行upload文件.
发现在设置了1Gi的PVC的情况下, minio即使接收了三个Gi的文件也能继续上传文件.
预览数据
通过使用minio-console的文件预览功能 , 确认预览正常 .
更多推荐
所有评论(0)