Kubernetes容器存储:请选对的

根据2019年最新的Gartner的分析数据显示,到2022年,全球75%的企业将在生产环境中使用容器。而从2018年开始,在容器平台上运行的应用程序,已经有超过一半的是有状态应用,例如数据库等。对于无状态应用来说,无论是节点故障,还是扩容,在容器平台上都能轻松应对,但对于有状态应用来说,就没那么容易了,必须要配合合适的容器存储软件,才能满足业务的需求。

为了满足容器对存储的迫切需求,Kubernetes从v1.2版本开始支持FlexVolume, 但由于FlexVolume对于宿主操作系统有侵入性,因此使用上还是有一定局限性。Kubernetes从 v1.9版本开始支持Container Storage Interface(CSI) , 到v1.13版本GA, 可以说CSI 是未来Kubernetes支持存储的大方向,任何一个现有或者新生的存储软件要想支持容器编排平台(Kubernetes、Mesos、Docker Swarm等),都需要实现CSI接口。从官方的列表https://kubernetes-csi.github.io/docs/drivers.html可以看到,已经有大量的存储软件支持了CSI接口,为Kubernetes平台之上的容器提供数据持久化的能力。

Kubernetes容器存储:请选对的

焱融云YRCloudFile支持的CSI接口

焱融云YRCloudFile支持的CSI接口然而,CSI接口只是容器存储的必要条件,如何从众多的存储中选择一个合适的,我们来逐条分析一下。

Kubernetes的整合能力

  • Prometheus监控展示

Prometheus作为CNCF版图中重要的一员,已经在Kubernetes平台中占领了C位,从用户的角度来说,容器管理可以使用Kubernetes平台,对计算节点以及容器的监控,可以采用Grafana+Prometheus以及AlertManager。如果容器存储可以把监控数据统一暴露到容器平台内,对于用户来说可以统一观察到所有集群的状态,提高运维的效率。YRCloudFile提供Prometheus exporter,为Kubernetes平台中的Prometheus server提供存储集群的实时监控数据。

Kubernetes容器存储:请选对的

Kubernetes容器存储:请选对的

  • QoS支持

容器基于Cgroup实现了对CPU,Memory资源使用的限制,对于存储,用户同样希望可以限制Quota, 甚至IOPS以及Bandwidth, 避免某一个容器的恶意使用影响所在节点甚至整个集群的正常工作。YRCloudFile支持用户设置PV的Quota、IOPS、Bandwidth,控制PV的QoS,确保集群内的数据访问不受异常访问的影响。

Kubernetes容器存储:请选对的

容器应用特性

  • ReadWriteMany(RWX)

从社区目前支持的CSI 存储列表中我们可以看到,容器存储基本上分为两种类型,一种为文件系统存储,一种为块存储。基于块存储的方案大多无法支持ReadWriteMany的访问方式,例如 CephRBD, OpenEBS等,这对一些应用的部署方式将产生影响,例如典型的WordPress高可靠部署时,需要一个共享的PV来保持数据的一致,虽然OpenEBS也提供了WorkAround的解决方案,但这个方案采用的是一个NFS的pod来做reexport,很明显,NFS server存在单点故障的风险。同样地,在ElasticSearch,以及一些共享文件访问的场景中,RWX或ROX都是必须支持的读写模式。

YRCloudFile支持RWX、RWO、ROX读写模式,为各种业务提供所需的读写访问模式。

Kubernetes容器存储:请选对的

  • 大文件小文件混合读写

随着各式各样的应用运行在容器平台之上,对数据的IO模式也不再统一,既有大量的小IO, 动辄上亿的小文件,也有对带宽吞吐有要求的大文件。以GlusterFS举例,曾碰到典型的用户场景,就是存储的都是大文件(例如日志)时工作良好,但是当容器内需要产生海量小文件时,性能上就捉襟见肘了。

Kubernetes容器存储:请选对的

上层应用中文件大小和文件数量的趋势

上层应用中文件大小和文件数量的趋势YRCloudFile针对此场景做了特定的优化,小IO的随机读写的能力远高于GluserFS, 同时YRCloudFile支持底层直接操作物理磁盘(Raw Disk Storage Engine),减小了物理服务器上文件系统的损耗,进一步提升了集群读写性能。

  • PV数据的“天眼查”

容器相比虚拟机的一个优势就是资源消耗小,所以同样的物理规模,可运行的容器数量要远大于虚拟机数量,PV(容器持久化数据卷)的数量也因此会达到比较大的规模,如何从众多的PV中找到业务瓶颈,例如IOPS消耗高、存储容量消耗多的PV,甚至用户如何了解某个PV内的数据的热度分布,是否可以删除一些历史数据?

在客户的实际生产环境中,用户创建了数千个PV,逐个排查Pod来寻找读写热点和瓶颈几乎是不可能的任务,通过YRCloudFile的PV Hot Spot功能,可以帮助用户快速定位数据读写热点。

Kubernetes容器存储:请选对的

在单个PV内部,哪些数据是经常访问的?哪些是冷数据?哪些文件占用空间多?YRCloudFile的PV Insight功能可以帮助客户达成上述目的。

Kubernetes容器存储:请选对的

可用性

  • 容器重建

容器应用的一个特点就是启动快,同时当容器平台发现某一个容器出现问题时,会自动利用调度器,在其他的节点上快速重建容器。

在使用基于块的容器存储时,例如CephRBD, 由于块设备的特性,系统首先要从故障节点进行umount/detach,成功后才能重新attach到新的宿主服务器,进而mount到容器内,对于块设备来说,detach/attach是一个耗时的操作。当计算节点故障,需要对该节点上大量有状态Pod触发重建操作时,更是对业务恢复时间造成影响。

YRCloudFile采用分布式文件结构,数据在所有的节点都可见,对所有节点上的容器都是透明的,避免了detach/attach的操作,极大缩短了容器跨节点重建的过程。正所谓你看见看不见,数据都在那里,不离不弃。

高性能

业务的性能需求无极限。存储性能高,意味着上层业务处理能力会更强。YRCloudFile可以充分利用高性能的网络设备,从网络传输层进行对应的优化,可以更好地发挥RDMA网络的能力,对小IO读写性能有大幅提升。

Kubernetes容器存储:请选对的

总结

无论是软件定义的分布式存储,还是传统的集中是存储,存储是多种多样,但是当我们面临容器存储的选择时,需要考虑多方面的因素。传统存储由于所处时代以及解决的主要问题的不同,无法满足容器平台全部的需求。新兴的软件定义存储良莠不齐,需要根据容器平台应用的特点,来选择一款合适的容器存储软件,YRCloudFile无疑是客户建设容器云平台时的最佳选择。


关于焱融云


焱融云是一家以软件定义存储技术为核心竞争力的高新技术企业,在分布式存储等关键技术上拥有自主知识产权,是容器存储的领导者。焱融云针对各行业业务特性,打造个性化行业解决方案,提供一站式的产品与服务。焱融云系列产品已服务于金融、政府、制造业、互联网等行业的众多客户。了解更多焱融科技信息,请访问官网http://www.yanrongyun.com