同时支持iSCSI和NFS,XSKY SDS V5的K8s CSI卷扩展功能是如何炼成的

2021年09月 · XSKY

微信图片_20210915104712.png


前言


当前,企业中沉淀的数据也越来越多,这就对数据存储层的扩展性要求越来越高。如何实现数据存储层的高度可扩展性,便成为数字化企业必须要解决的问题。而XSKY星辰天合下一代分布式文件系统XGFS,就实现了基于目录、用户和用户组的配额功能,能进一步优化并提升企业的运维效率。

本期内容,XSKY星辰天合技术专家带您一起了解,支持K8S卷扩展的XGFS配额功能,是怎样炼成的。

 

Volume Expansion


应用程序或数据库的磁盘空间不足,是运维团队需要定期解决的常见问题,这个问题从裸金属服务器到虚拟化和容器环境中一直存在。Kubernetes用户可以对给定命名空间下的存储资源总量进行限制,目前流行的设置配额方式是根据相关的存储类(Storage Class)来限制存储资源的消耗,这在Kubernetes中叫做Volume Expansion。

目前Kubernetes允许在创建后进行卷扩展,在Kubernetes中计算和存储系统已经相互解耦,向应用程序授予额外存储容量很少需要更新应用程序或修改底层应用程序主机基础设施。在Kubernetes v1.16中,CSI的Volume Expansion功能被提升为Beta版,允许用户通过编辑PersistentVolumeClaim(PVC)对象轻松扩容现有卷的大小。用户不再需要手动与存储后端交互或删除和重新创建PV和PVC对象来增加卷的大小。需要注意的是目前该功能不支持缩容持久卷。

要实现卷扩展,CSI驱动程序必须实现Volume Expansion插件功能,同时需要实现EXPAND_VOLUME控制器(Controller)功能或实现EXPAND_VOLUME节点(Node)功能或两者兼而有之。

CSI的external-resizer是一个sidecar容器,用来监听PVC,并且控制PV的容量扩展。当接收到PVC容量扩展请求时,控制CSI Driver来进行Volume Expansion的操作。


微信图片_20210915104732.png


对于文件存储来说,接收到的是一个ResizeVolume的请求,也就是重新设置卷的大小。处理完ResizeVolume请求后,即可生效,对存储层实际的操作是修改共享目录的配额。XGFS支持Volume Expansion带来的最大好处是无需停机即可在线扩容。

XEBS支持Volume Expansion的原理与XGFS基本一致。

 

块的Volume Expansion实现


在Kubernetes集群安装CSI Driver、sidecar-resizer组件


微信图片_20210915104743.png


准备好待验证的SC、PVC、PV资源:


微信图片_20210915104748.png


查看存储管理界面上的卷信息,此时容量为20GB


微信图片_20210915104753.png


通过kubectl edit命令,将指定PVC的size设置为40Gi:


微信图片_20210915104758.png

微信图片_20210915104802.png


查看PVC验证修改成功:


微信图片_20210915104806.png


查看存储管理界面上的卷信息,此时容量为40GB


微信图片_20210915104813.png

 

文件的Volume Expansion实现


微信图片_20210915104818.png

 

Kubernetes CSI的Volume Expansion在文件系统层面对应的功能是文件配额。XGFS的配额功能支持对文件系统中任意目录、嵌套目录同时设定配额,同时支持对指定目录同时设定目录配额、用户配额、用户组配额,可同时设定容量、文件数配额,对指定目录同时设定硬配额、软配额(宽限时间内允许继续写入)。


微信图片_20210915104823.png

• 容量预估:文件配额创建三天后开始展示容量预估图;

• 容量历史:展示容量使用走势图,筛选周期(3小时、一天内、一周内、1个月内、3个月内、自定义)。


微信图片_20210915104827.png


文件数预估:文件配额创建三天后开始展示文件数预估图;

文件数历史:展示文件数使用走势图,筛选周期(3小时、一天内、一周内、1个月内、3个月内、自定义)。

对于卷扩展功能的使用,首先在Kubernetes集群中,安装好CSI Driver、sidecar-resizer组件:

微信图片_20210915104917.png

准备好待验证的SC、PVC、PV资源:

微信图片_20210915104922.png

查看pvc-8769c116-958f-4657-aad0-449c55f30864的配额:

微信图片_20210915104928.png

通过kubectl patch命令,将指定PVC的size重新设置为510Gi:

微信图片_20210915104932.png

查看PVC验证修改成功:

微信图片_20210915104936.png

查看存储界面硬配额已经变成510Gi:


微信图片_20210915104941.png

 

总结


在XSKY星辰天合下一代分布式文件系统XGFS中,我们实现了基于目录、用户和用户组的配额功能。管理员可对目录占用的存储资源或指定用户/用户组使用的存储资源进行监控和限制,避免个别用户/用户组过度使用资源,影响其他用户/用户组的使用。

目前XSKY的XGFS分布式文件系统和XEBS块存储系统都已支持了Kubernets CSI标准存储接口功能,包括快照、卷扩展等等。支持标准Kubernetes CSI所有功能的同时,进一步优化提升了用户的运维效率。