首页
学习
活动
专区
工具
TVP
发布

如何利用Kubernetes部署并管理XSKY SDS?

Kubernetes is eating the world,企业在升级转型过程中,已经越来越多的选用Kubernetes平台作为IaaS 、PaaS 新基础设施建设的中心。

使用XSKY SDS承接Kubernetes存储需求已经成为广泛容器平台云的常见选择,但是真正发挥出软件定义存储中的“定义”二字,并不局限于存储本身,包括了大规模SDS集群的部署。让整个SDS集群部署和利用可定义,使得平台管理员可以统一管理计算和存储资源编排,统一运维投入,这些也都是SDS架构的一部分天生优势。

我们在某涉密机构实际落地项目中,客户选用了Kubernetes作为计算平台,同时选用了XSKY SDS作为容器存储,提供块、文件、对象多种协议接口,承载数百种上层业务应用。存储集群的部署规模为50个节点,1100个osd,4个pool,后续有5倍以上的扩容预期。对象业务还要求按照各自的生命周期进行对象桶的创建与管理。

如果由实施人员全程手动部署并负责过程监督,这将是一次巨大的人力资源投入,而且后续的日常管理运维也很复杂,需要平台管理员同时熟悉Kubernetes管理和存储管理。

针对上述需求,XSKY基于Kubernetes开发了Formation Service,它面向Kubernetes平台并利用Kubernetes能力实现一键部署存储集群,管理运维各类存储资源。

01

XSKY Formation Service的好处

前述客户项目使用Formation Service后,仅需提前定义好预期环境拓扑模板,再执行一条kubectl 命令就实现了整个存储集群的搭建,包含cluster、osd、pool、访问接口等存储资源,使整个部署时间降低了90%

同时部署过程中,不论出现网络、硬盘等硬件异常,或是时间服务器不同步、内存不足等软件异常,都不影响已有的部署过程;Formation Service会在故障排除后自动重试执行剩余存储资源的构建;

该项目在后续的节点扩容、小文件数量SKU扩容中,也只需修改模板,并用容器平台管理员最熟悉的单条kubectl命令即可完成,大大降低了管理运维成本。

项目完成后,客户也可以利用容器动态使用对象存储,容器存储的容灾功能如复制、备份和数据迁移等功能。

我们来详细说明下如何利用Kubernetes来定义XSKY SDS集群,让部署对接变得更简单。

02

利用Kubernetes CRD定义XSKY SDS集群资源

我们可以在Kubernetes平台将XSKY存储集群中不同的资源被拆分成不同的用户自定义资源,即CRD(Custom Resouce Definition);CRD功能在Kubernetes 1.7版本被引入,用户可以根据自己的需求添加自定义的Kubernetes对象资源。

同时,自定义资源和原生内置的资源一样,都可以用kubectl来去创建、查看,也享有 RBAC、安全功能。用户可以开发自定义控制器来感知或者操作自定义资源的变化。

下面我们来看一个简单的CRD实例, 下面代码块是一个CRD的定义:

首先最上面的apiVersion就是指CRD的一个apiVersion声明,声明它是一个CRD的需求或者说定义的Schema。

kind就是CustomResourcesDefinition,指CRD。name是一个用户自定义资源中自己自定义的一个名字。一般我们建议使用“顶级域名.xxx.APIGroup”这样的格式,比如这里就是sds.resourcecontroller.xsky.com。

spec用于指定该CRD的group、version。比如在创建Pod或者Deployment时,它的group可能为apps/v1或者apps/v1beta1之类,这里我们也同样需要去定义 CRD的group。

如下代码块是上面定义的CRD的一个实例:

XSKY存储集群中的资源被拆分成各种不同的自定义资源,不同的资源有相应的模板文件去定义,XSKY存储集群的资源拆分大致如下所示:

存储节点、硬盘(osd)、存储资源池(pool)、访问路径(accesspath)、VIP等,存储集群中的各种资源在Kubernetes平台中被作为一种用户自定义资源在使用;

1、资源定义模板化

XSKY存储资源被拆分成Kubernetes平台上的不同的用户自定义资源后,XSKY提供了统一的、标准的模本文件去定义不同的资源信息。

实施工程师只需要根据客户的实际需求,对模板文件按照实际场景修改,就能定制出客户实际所需的存储集群。比如,集群规模、网络规划、管理员用户设置、硬盘数量和存储资源池的配置等。

2、部署自动化

XSKY SDS formation工具,支持一键式部署存储节点,定义所需的配置文件,可以完成存储集群的部署,包括:网络配置,管理员用户名和密码配置,存储节点角色设置,硬盘管理和创建存储池等;

3、统一配置管理

通过容器平台UI和CLI可以实现存储集群的部署、更新、销毁等;

其他组件解释请参考《深入了解Kubernetes中的XSKY存储》;

4、XSKY Resource Controller

作为一键式部署SDS集群的大脑,用于监听XSKY存储集群创建、更新、删除(销毁)等事件,并把消息事件处理后,实现XSKY存储集群的部署、更新和销毁动作;

03

如何实现对接XSKY SDS统一配置管理

XSKY SDS在Kubernetes容器平台被作为一种用户自定义资源在使用,Kubernetes是如何统一配置管理XSKY SDS,下图做了详细介绍:

1、模板修改

根据XSKY提供的资源定义模板以及真实的场景,修改模本文件,主要包括:集群规模,网络资源,存储资源,用户资源等信息;

2、下发请求

根据修改的模板,使用UI或CLI下发请求到Kubernetes节点的Master节点的API Server;

3、XSKY Reource controller处理请求

XSKY资源控制器,监听API Server上XSKY SDS这种自定义资源的变化,根据实际的请求做对应处理,包括:部署,更新,销毁;XSKY资源控制器会解析,模板文件的信息,生成部署XSKY SDS存储所需要的脚本文件,配置文件,以及formation所需要的json文件;

XSKY资源控制器会将存储安装包拷贝到模本文件中指定的Master节点,并在管理节点上解析安装包,替换默认的配置文件,执行部署脚本,完成存储集群的部署。

04

XSKY Resource 控制器如何实现自定义资源部署

XSKY Resource Controller包含不同的资源控制器,比如,节点控制器、硬盘控制器、存储资源池控制器、访问路径控制器、VIP控制器等,每种控制器管理不同的资源的创建和销毁。

1、节点控制器(node controller)

负责部署节点和移除节点,node controller解析定义好的模板文件,根据模板文件中定义好的角色,以及节点数,选择出管理节点,将存储安装包上传到管理节点,并根据模板文件,生成部署节点所需要的json文件,优先部署管理节点,然后部署其他节点;也可以根据部署的节点实例,去移除对应的节点;

2、硬盘控制器(osd controller)

负责创建osd和删除osd,osd controller解析定义好的模板文件,生成创建osd所需要的json文件,xsky formation工具根据json文件创建osd;

资源池控制器(pool controller):负责存储池的创建和参数;

3、访问路径控制器(access path controller)

负责访问路径的创建和删除,挂载网关服务器和移除网关服务器;

4、vip控制器(vip controller)

负责给创建的访问路径设置vip。

目前,XSKY Resource Controller已经做到了让XSKY SDS集群在Kubernetes容器平台上的部署和运维变的更简单。

05

小结

软件定义存储本身不仅仅代表着分布式存储的架构,存储能力的软件化以及可定制化,同时也代表了部署、运维、管理的可定义,按照用户自己的需要进行架构整合,实现统一调度。

END

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200324A0B9PP00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券