分布式存储|北京大道云行科技有限公司

1 FASS-CSI背景

随着Kubernetes容器编排系统的持续发展,应用程序的开发与部署方式经历了巨大的变革。微服务结构体系的兴起,促使基础架构与应用程序逻辑之间相互解耦。

kubernetes容器系统为容器化应用提供了可移植性、可伸缩性、快速部署、共享资源等特性,几乎所有的容器应用都是有状态的,然而kubernetes并不支持状态存储,因此kuernetes需要依靠外部存储为容器化应用提供存储资源。

FASS是大道云行(Taocloud)自主研发的分布式全闪块存储系统,拥有业内领先的性能,可以提供高IOPS的存储卷,供应用使用。

本文介绍了FASS-CSI插件,它作为Kubernetes pod容器应用和FASS Volume的桥梁,实现了容器的有状态存储,实现了存储的创建、删除、重连接等功能的接口。

01 FASS全闪存系统

FASS是大道云行(TaoCloud)面向高IO密集型应用场景,完全自主研发的分布式全闪存存储系统。基于高效的分布式存储软件设计和高性能的全闪存硬件平台,FASS可将多个节点的SSD资源通过高速以太网或Infiniband网络组成一个高性能、高可用、易扩展块存储资源池,支持iSCSI, iSER, NVMEoF访问协议,可广泛应用于如下各类高IO、高性能要求的业务场景:

01

强大的性能:FASS采用主流的服务器硬件和全NVMe硬盘配置,通过软件层面先进的体系结构设计、微控制器并行流水线设计、多级元数据索引管理,实现了三节点千万级IOPS、100us级延迟的强大性能;

02

极高的可靠性:FASS采用全对称分布式架构,可实现多节点的IO均衡与叠加,结合多副本、纠删码、快照等冗余与数据备份机制,消除了存储系统的单点故障,也保证了可靠的存储服务输出。

03

大规模扩展:FASS的分布式集群支持3-512 scale out扩展,单卷可达32PB容量。通过数据分布与元数据管理的自动负载均衡,实现按需扩展,满足业务动态发展的苛刻要求。

02 Kubernetes持久化存储

Kuberbetes作为容器编排工具,提供了管理存储的解决方案:存储卷(Volume)、持久卷(PersistenVolume)、持久卷声明(PersistenVolumeClaim)、存储类(StorageClass)和动态供应(Dynamic Provisioning)等,具体存储概念为:
01

Pod:Kubernetes中创建和部署的最小单元,Pod中开启一个或多个容器,提供容器存储、网络等共享资源。

02

Volume:Pod内部共享存储资源,生命周期和Pod相同。

03

PersistenVolume (PV):独立于Pod的数据持久化存储资源,管理员创建PV,提供给Pod使用,生命周期不会随着pod终止与删除而消失。

04

PersistenVolumeClaim (PVC): 持久卷声明,表示计算任务对存储资源的需求,Kubernetes中Pod通过PVC来使用PV,使Pod和PV解耦,将底层存储细节与pod隔离。

05

StorageClass (SC):存储类,实现动态创建 PV 的模板,Kubernetes 将 StorageClass 相同的 PVC 和 PV 进行绑定。

06

Dynamic Provisioning(动态供应):通过StorageClass定义存储资源,Kubernetes在使用存储资源时动态创建。


在生产环境中,开发人员通常依赖外部存储,传统的分布式存储和网络存储如Ceph、NFS可以运行在kubernetes系统中,为Kubernetes中运行的其它容器应用提供内置的分布式存储访问能力。kubernetes连接外部存储的解决方案称为存储插件,存储插件支持抽象存储,并赋予存储可移植性。上图为kubernetes使用外部存储的具体流程:

Pod中容器应用加载Volume,请求PVC;

静态供应:PVC找到对应的外部存储已创建持久卷PV;动态供应:PVC找到存储类StorageClass,通过存储插件动态生成外部存储持久卷PV;

持久卷PV和PVC最终形成绑定关系;

持久卷PV开始提供给Pod使用。

这种外部存储依靠存储插件为kubernetes容器提供持久存储的结构优势表现

为有状态的容器应用提供持久化卷;

为容器应用动态提供新卷;

解耦计算资源和存储资源;

提供不同模式的外部存储卷。

03 存储插件

Kubernetes中存储插件分为In-tree、Out-of-Tree两类,其中Out-of-tree插件中的CSI被多数存储厂商认可和使用。

CSI是Container Storage Interface的简称,目的是定义行业标准的“容器储存接口”,使存储供应商能够开发一个符合CSI标准的插件并使其可以在多个容器编排(CloudFoundry, Kubernetes, Mesos)系统中工作,旨在为容器编排引擎和存储系统间建立一套标准的存储调用接口,能为容器编排引擎提供存储服务。

CSI存储插件具备易部署、易维护、兼容性好、高级功能等特点,同时CSI存储插件能够实现FASS全闪存存储系统与Kubernetes系统的彻底解耦,下文将对FASS全闪存系统的CSI存储插件(简称FASS-CSI)作详细介绍。

2 FASS-CSI架构设计

FASS-CSI存储插件在Kubernetes系统与FASS全闪存系统中间起到承上启下的作用。

承上:对接kubernetes容器平台,允许其通过gRPC调用FASS-CSI插件,支撑容器平台对于FASS存储卷管理功能,如创建、挂载、删除等。

启下:FASS-CSI 插件需要调用FASS存储集群的API接口,实现相关业务逻辑,实际操作存储资源。

FASS-CSI存储插件由FASS-CSI核心组件与Kubernetes-CSI扩展组件(External provisioner、Externalattacher、Driver registrar)构成。

FASS-CSI核心组件为具体实现创建、删除、挂载、卸载功能的镜像,Kubernetes-CSI扩展组件实现FASS-CSI存储插件与Kubernetes系统通信。

Kubernetes-CSI扩展组件概念:

Kubernetes系统作为顶层容器应用载体,FASS全闪存系统通过中间层FASS-CSI存储插件向容器应用提供存储资源。FASS-CSI存储插件依赖于kubernetes系统部署,FASS全闪存系统独立于Kubernetes系统部署,只需要将FASS-http-API地址暴露给FASS-CSI存储插件,用于FASS-CSI与FASS全闪存系统通信。

01

|Kubernetes系统管理容器应用,将存储资源需求通过API-Server下发给集群中FASS-CSI存储插件。

02

|Kubernetes-CSI扩展组件监听Kubernetes集群的PVC、VolumeAttachment对象,通过FASS-CSI的ControllerServer请求FASS-API实现FASS存储卷创建、删除、映射、取消映射。

03

| FASS-CSI存储插件注册在所有节点上,节点上Pod通过PVC请求PV存储资源时,FASS-CSI的NodeServer通过ISCSI协议将FASS卷进行挂载,供给存储资源。

3 FASS-CSI工作流程

FASS-CSI存储插件的通信规则是彻底解耦Kubernetes系统与FASS全闪存系统的关键。

FASS-CSI存储插件通过Kubernetes-CSI扩展组件监听Kubernetes指令,FASS-CSI核心组件通过FASS提供的RESTful API创建FASS存储资源供给容器应用使用,具体工作流程如下:

01

|Kubernetes-CSI监听Kubernetes中PVC、VolumeAttachment对象,通过UDS(Unix Domain Socket)传给FASS-CSI核心组件。

02

|调用ControllerServer的 CreateVolume 方法创建FASS卷,PV为Create 状态。

03

|调用ControllerServer的ControllerPublishVolume方法将FASS卷映射到主机,PV为Node_ready为状态。

04

|FASS卷在主机内可见,调用NodeServer的NodeStageVolume接口对FASS卷进行分区格式化操作,PV为Volume Ready 状态。

05

|调用NodeServer的NodePublishVolume 接口将FASS卷挂载至指定目录,PV为 Published 状态。

06

|挂载的FASS卷供给存储资源给容器应用使用。

卸载FASS存储卷过程为挂载的逆过程,卸载后PV状态回到 Created 状态,此时FASS卷是一个没有挂载到任何容器的存储卷资源,Created状态的存储卷,可以对其再进行一次挂载到容器中的操作,也可以对它进行删除操作。

4 实践和效果

Kubernetes版本:1.15.9

FASS-CSI版本:1.0.0

FASS版本:1.0.0

Kubernetes集群双节点:

实践过程

01

|开启controller服务与node服务,controller服务采用StatefulSet模式部署,开启csi-provisioner、csi-attacher、FASS-CSI插件,其中FASS-CSI插件(fass-driver)的启动参数中指定调用FASS-HTTP-API的IP地址。


02

|node服务采用DaemonSet方式部署,pod会在每一个节点上运行,两个fasscsi-node-*的pod。

03

|创建动态storageClass,在StorageClass.parameters将需要创建卷信息传给FASS-CSI插件,当csi-provisioner监控到PVC对象创建,FASS-CSI插件会通过FASS-API创建FASS卷。

04

|创建pvc,指定pod加载存储资源时通过pvc绑定PV的StorageClass,以及PVC的访问权限(accessModes)ReadWriteMany。

05

|创建pod,开启nginx容器应用,声明pod加载存储资源所指定的pvc,通过pvc找到绑定PV存储资源供pod使用。

06

|在kubernetes的node节点查看挂载的卷

07

|FASS管理界面查看创建的卷

08

|验证挂载卷读写

进入nginx8容器,在挂载目录下写入“Taocloud”内容到index.html文件。

在同一个节点另起一个nginx9、nginx10两个pod,进入nginx9容器追加输入“2020-07-03”内容到index.html文件。进入nginx10容器追加输入“fass-csi-iscsi”内容到index.html文件。


访问本地挂载目录下的index.html

小结:

▲FASS-CSI存储插件实现了通过ISCSI驱动挂载FASS存储卷,供给容器应用使用存储资源。

▲同节点不同Pod中容器应用共用一个FASS存储卷进行读写操作,共享存储资源。

▲容器应用删除,FASS存储卷在节点挂载目录下数据不丢失,开启新容器可实现数据复用,实现FASS存储卷作为持久化存储资源供给容器应用。

5 应用场景与优势

FASS-CSI存储插件实现了Kubernetes系统管理操作FASS全闪存存储资源,主要服务对象涉及微服务开发厂商、云平台厂商、容器化平台厂商、存储服务厂商等,应用场景为依据FASS全闪存系统高IOPS、低延迟的高级特性,使用FASS-CSI存储插件为其微服务、云服务、容器应用等提供持久化存储资源。

FASS-CSI优势体现为

01

稳定性:FASS-CSI存储插件将FASS全闪存系统与kubernetes系统完全解耦,实现了资源的隔离,同时FASS-CSI存储插件以容器化部署,稳定性得到保障。

02

易维护:不需要复杂的集群配置修改和准备工作,只需 FASS-CSI容器配置,拉取镜像,一键可达。

03

兼容性:FASS-CSI存储插件以容器化部署,对于Kubernetes系统大于v1.15.0版本与FASS全闪存系统所有版本完美兼容,消除环境差异所带来的不确定性以及其他约束。

04

高性能:在容器的使用场景,大量Pod或者在Pod上会挂载较多的存储卷场景,使用FASS-CSI存储插件可以实现快速启动上百个pod,为容器应用提供FASS存储卷的高IOPS、低延迟等高级性能。

FASS分布式全闪存应用场景解决方案

01

● 裸金属云FASS高性能弹性块存储解决方案

02

● FASS全闪高性能文件网关解决方案

03

● 双剑合璧|FASS&JBOF『闪光』解决方案

FASS-K8S云原生全闪存储解决方案相关推荐

  1. 焱融全闪存储轻松构建百亿私募量化投研平台

    量化业务背景 量化金融指依托金融大数据.金融科技和智能金融的技术进展,通过数量化方式及计算机程序发出交易指令,以获取稳定收益为目的的金融投资方式,在海外的发展已有几十年的历史,其投资业绩稳定,市场规模 ...

  2. 如何保障云上数据安全?一文详解云原生全链路加密

    对于云上客户而言,其云上数据被妥善的安全保护是其最重要的安全需求,也是云上综合安全能力最具象的体现.本文作者将从云安全体系出发,到云数据安全,再到云原生安全体系对全链路加密进行一次梳理,从而回答:在云 ...

  3. 金融业数字化聚焦容器云,全闪存为什么是点睛之笔?

    文|螳螂观察 作者|李永华 刻板.保守.小心翼翼-- 很多人对金融业尤其是银行在数字化创新方面的印象,都是如此. 这个印象到底对不对? 答案可能是,既对,又不对. 对的地方在于,出于合规等要求,一个创 ...

  4. 阿里云推出业内首个云原生企业级数据湖解决方案:将在今年双11大规模应用

    简介: 数据湖高峰论坛在京召开,阿里云宣布推出业内首个云原生企业级数据湖解决方案,提供EB级数据存储.分析能力,可一站式实现湖存储.湖加速.湖管理.湖计算,帮助企业对数据深入挖掘与分析,洞察其中蕴含的 ...

  5. 浪潮信息全闪存储高效践行绿色低碳

    目前,在数据中心领域,践行绿色低碳已经成为了新趋势.作为存储领域的优质供应商,浪潮信息近日推出的全闪存储产品便符合绿色低碳的特征,它的存储性能更高,且空间节约率及能耗也获得了同步优化. 绿色数据中心的 ...

  6. rds数据加密_如何保障云上数据安全?一文详解云原生全链路加密

    导读:对于云上客户而言,其云上数据被妥善的安全保护是其最重要的安全需求,也是云上综合安全能力最具象的体现.本文作者将从云安全体系出发,到云数据安全,再到云原生安全体系对全链路加密进行一次梳理,从而回答 ...

  7. K8S云原生环境渗透学习

    转载至​​​​​​K8S云原生环境渗透学习 - 先知社区 K8S云原生环境渗透学习 前言 ​ Kubernetes,简称k8s,是当前主流的容器调度平台,被称为云原生时代的操作系统.在实际项目也经常发 ...

  8. 浪潮服务器nf5270m5做raid_浪潮全闪存储助力山东高速公路ETC缴费系统,服务民众便捷出行...

    随着全国ETC推广的不断加速,越来越多的人开始安装使用ETC,它不仅可以实现不停车缴费.减少拥堵,免去人工缴费"大排长龙"之苦,还能减少环境污染.节约土地资源.而在 ETC缴费体验 ...

  9. 性能极致:全闪存储介绍

    这一时代,数据存储具有三大需求,分别是 EB 级容量.亿级 IOPS(每秒进行读写操作的次数,Input/Output Operations Per Second)和智能管理,亿级 IOPS 需求使得 ...

最新文章

  1. 工艺路线和工序有差别吗_ERP-工序与工艺路线
  2. javascript中获取dom元素高度和宽度
  3. python学习day11
  4. 如何查看自己的Github仓库占据了多少存储空间
  5. 采样定理实验报告matlab,matlab验证时域采样定理试验报告
  6. 声音存储空间计算公式_声音图像视频容量计算公式
  7. 如何在网页中播放音乐和视频
  8. thinkphp使用编辑器kindeditor
  9. vue引入echarts-liquidfill水滴图并批量动态加载
  10. 闪存主控芯片国产进程
  11. 自己能力还有待改善,介绍一下我自己
  12. ROS-Industrial 之 MoveIt —— 碰撞物体约束添加
  13. 微信支付后台通知频率
  14. 贷后催收评分模型中的数据清洗与数据治理细节介绍
  15. unity安卓打包APK安装出错
  16. 向unity Asset Store提交资源-边做边记
  17. 品质为先,服务不停,广州流辰信息公司恪守初心,匠心为民!
  18. JAVA递归函数示例 - 阶乘计算
  19. python输入日期求星期几_python中输入年月日判断星期几?
  20. 最长公共子序列(O(n)空间优化、O(nlogn)时间优化)

热门文章

  1. 教务系统一键评教案例分析
  2. Python爬虫要学多久
  3. vasp能带结构计算
  4. android 反编译.9报错,反编译AndroidManifest.xml文件失败
  5. java 风的角度转风向
  6. 写出求abc中最大数的c语言表达式,有3个整数abc由键盘输入输出其中最大的数
  7. 法新社:谷歌Android成为CES展会明星 微软Windows遭冷落
  8. LPDDR4硬件详解
  9. 如何看待区块链游戏,避免陷入区块链游戏骗局
  10. 汽车保养技巧 十大汽车保养技巧