如何利用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的定义:代码块中的group为resourcescontroller.xsky.com;
verison为v1alpha1;
names指的是它的kind是什么,比如Deployment的kind就是Deployment,Pod的kind就是Pod,这里的kind被定义为了XCluster;
plural字段就是一个昵称,比如当一些字段或者一些资源的名字比较长时,可以用该字段自定义一些昵称来简化它的长度;
scope字段表明该CRD是否被命名空间管理。比如ClusterRoleBinding就是Cluster级别的。再比如Pod、Deployment可以被创建到不同的命名空间里,那么它们的scope就是Namespaced的。这里的CRD就是Namespaced的。
它的apiVersion就是我们刚才所定义的resourcescontroller.xsky.com/ v1alpha1;
kind就是XCluster;
metadata的name就是我们这个例子的名字;
这个实例中spec字段其实没有在CRD的Schema中定义,我们可以在spec中根据自己的需求来写一写,格式就是key:value这种格式,比代码块中的deploymentName: example-foo, replicas: 1。当然我们也可以去做一些检验或者状态资源去定义spec中到底包含什么。
1、资源定义模板化
XSKY存储资源被拆分成Kubernetes平台上的不同的用户自定义资源后,XSKY提供了统一的、标准的模本文件去定义不同的资源信息。实施工程师只需要根据客户的实际需求,对模板文件按照实际场景修改,就能定制出客户实际所需的存储集群。比如,集群规模、网络规划、管理员用户设置、硬盘数量和存储资源池的配置等。2、部署自动化XSKY SDS formation工具,支持一键式部署存储节点,定义所需的配置文件,可以完成存储集群的部署,包括:网络配置,管理员用户名和密码配置,存储节点角色设置,硬盘管理和创建存储池等;3、统一配置管理通过容器平台UI和CLI可以实现存储集群的部署、更新、销毁等;作为一键式部署SDS集群的大脑,用于监听XSKY存储集群创建、更新、删除(销毁)等事件,并把消息事件处理后,实现XSKY存储集群的部署、更新和销毁动作;
03
如何实现对接XSKY SDS统一配置管理
XSKY SDS在Kubernetes容器平台被作为一种用户自定义资源在使用,Kubernetes是如何统一配置管理XSKY SDS,下图做了详细介绍:XSKY资源控制器,监听API Server上XSKY SDS这种自定义资源的变化,根据实际的请求做对应处理,包括:部署,更新,销毁;XSKY资源控制器会解析,模板文件的信息,生成部署XSKY SDS存储所需要的脚本文件,配置文件,以及formation所需要的json文件;
XSKY资源控制器会将存储安装包拷贝到模本文件中指定的Master节点,并在管理节点上解析安装包,替换默认的配置文件,执行部署脚本,完成存储集群的部署。
04XSKY Resource 控制器如何实现自定义资源部署XSKY Resource Controller包含不同的资源控制器,比如,节点控制器、硬盘控制器、存储资源池控制器、访问路径控制器、VIP控制器等,每种控制器管理不同的资源的创建和销毁。
目前,XSKY Resource Controller已经做到了让XSKY SDS集群在Kubernetes容器平台上的部署和运维变的更简单。
05小结软件定义存储本身不仅仅代表着分布式存储的架构,存储能力的软件化以及可定制化,同时也代表了部署、运维、管理的可定义,按照用户自己的需要进行架构整合,实现统一调度。—END—
推荐阅读
Recommended reading
点击下列标题 阅读更多资讯
| 时速云与XSKY完成产品兼容性互认证,加速容器云落地部署