APP下载

混合云平台的设计及实现

2021-05-23杨武

电脑知识与技术 2021年11期

杨武

摘要:随着云计算及数字化浪潮的推动,企业纷纷制定云战略。考虑到业务灾备及避免云厂商锁定等因素,企业已意识到不能把鸡蛋放在同一个篮子里,因此选择混合云来承载业务成为企业的最佳选择。然而,基于虚拟机的跨云调度、迁移和弹性伸缩非常低效。因此,基于Docker容器的轻量特性,结合Kubernetes编排引擎,通过中央调度器管理异构Kubernetes集群来构建混合云平台。利用容器技术构建的混合云平台,为企业在业务灾备和弹性流量场景提供了技术保障。

关键词:Docker Kubernetes;混合云

中图分类号:TP311       文献标识码:A

文章编号:1009-3044(2021)11-0077-02

1研究背景

目前,互联网企业已全面上云,金融、制造、零售等传统行业也开始全面拥抱互联网,部分业务也逐步迁移到云上。云计算主要基于计算、存储和网络等基础设施提供像水电一样按需订阅的资源,改变了传统IT基础设施的交付模式,提升了交付效率。云计算从部署方式分为公有云、私有云和混合云。其中,公有云是由云提供商提供IDC机房并自建计算、存储和网络等资源池,企业或个人用户只需要通过浏览器来申请购买弹性的计算资源。私有云是由企业自己采购服务器、存储和网络设备自建共享资源池,对企业内部业务提供弹性的IT资源。混合云是融合了多家公有云、私有云等异构云平台,主要兼顾公有云的无限弹性伸缩及私有云的数据安全性。基于企业所处行业的安全合规性要求及云提供商绑定风险,企业已逐步采用混合云的架构。基于混合云架构下,如何实现快速跨云部署、业务数据迁移和弹性流量访问等业务场景,是企业面临的重大课题。本文基于当前流行的云原生架构,利用Docker作为底层虚拟化技术,结合Kubernetes容器编排平台,构建了可以跨云管理业务和调度资源的平台,即混合云平台。

2混合云基础架构设计

2.1混合云平台架构设计

主流公有云和私有云都會提供计算、存储和网络等基础设施资源,并开放对应的API给用户来调用。但各家云提供商提供的API形式各异,没有统一标准,给用户适配异构云带来了烦琐的工作量。因此,本文通过在公有云和私有云等各个云提供商内搭建独立的Kubernetes容器集群,然后在上层设计和实现一套统一的全局控制器用来管理和调度各个异构云上的Kubernetes容器集群。这样,既保证了底层异构云的API统一性,同时也提供了业务跨云部署、迁移和弹性伸缩的便捷性。整体的混合云平台架构如图1所示。

混合云管理平台主要管理应用的发布和底层异构云上容器集群的资源调度,包含API、调度器、控制器和数据库四个模块,API主要用来接收前端的指令,调度器用来调度异构云的Kubernetes集群,控制器用来处理业务逻辑,数据库用来持久化存储平台管理的资源数据。底层公有云或私有云的Kubernetes集群主要管理单个容器集群资源的编排和调度,包含master和node节点,master主要控制单个集群的资源调度,node作为工作节点运行实际业务容器。

2.2异构Kubernetes接入设计

在用户每个异构云基础设施上部署Kubernetes,上层全局控制器需要添加各个Kubernetes集群的平台地址、端口及BearerToken等信息,上层控制器通过标准的API和底层Kubernetes进行调用。Kubernetes的Namespaces 表示命名空间,主要用来实现租户的资源隔离;Nodes表示集群中的宿主机节点,是资源调度的承载体;Services是服务,可以为后端应用暴露访问入口;Deployments主要用来管理应用的副本数;Pods是应用运行和调度的最小单位。

2.3网络互联方案设计

默认情况下,各个异构云上的Kubernetes集群是相互隔离的。如果想要实现混合云的跨云业务部署、迁移和弹性伸缩,必须打通底层网络连接。首先,保证各个Kubernetes集群的master节点和混合云全局控制器网络互通;其次,保证各个Kubernetes集群之间网络互通,保证业务可以跨云访问。可以通过VPN或者专线来打通底层网络,如果对性能有较高要求的业务,建议采用专线方案。

2.4权限设计

各个异构云上的Kubernetes集群默认都有自己的权限控制体系,但是相互独立,无法统一管理。因此,需要在混合云的全局控制器上设计一个统一的权限管理模块。该权限模块包含混合云平台账号的管理、配额管理、角色的定义、业务、资源及操作等授权管理。账号管理主要包含用户名和密码的创建、编辑、删除和查看。配额管理主要用来控制用户在平台上使用资源的上限,当申请资源的数量超过了设定的配额后,需要申请提升配额。角色管理主要包含初始化角色和自定义角色,可以对应用、集群、宿主机等资源的访问和操作权限进行灵活授权。

3 混合云业务挑战

3.1 应用部署跨云调度实现

众所周知,目前主流的分布式调度系统都是针对单个集群的主机进行调度。但是,在混合云场景中,客户的业务是同时分布在多个异构云上,如何实现混合云的资源调度是当前面临的首要挑战。为了能使应用根据相应的配置自动部署在混合云上,并能匹配到最优的计算资源,我们采用分层调度策略。首先,第一层为集群调度,根据应用各模块配置文件的集群参数决定组件部署的目标集群;然后,第二层为主机调度,根据应用各模块配置文件的CPU、内存等配置参数,结合Kubernetes编排调度算法选择最优的目标主机启动运行业务容器。

在全局控制器层,会把用户选择的应用和集群映射关系传递给全局调度器,全局调度器会根据应用和集群映射列表自动筛选和过滤出最优的目标集群。当定位出目标集群后,会把部署应用的指令传递给Kubernetes master节点上的api-server,然后根据filter过滤和weight加权算法选择最优的node节点,最后直接调用node节点的kubelet命令创建应用Pod,即完成整个应用的部署调度过程。

3.2 混合云资源迁移实现

通常在物理机和虚拟机、虚拟机和虚拟机直接做迁移,一般采用P2V和V2V方案。如果在混合云上迁移采用这种方法不但效率低下,而且还有一定的局限性。由于我们的混合云平台底层采用的是容器技术,利用其轻量、启动快速及使用便捷的特性,结合分层调度策略,可以很方便实现跨云的资源迁移。当应用因业务原因需要从A云迁移到B云上,首先,在镜像仓库根据源应用查找依赖镜像,在B云的容器集群里重新启动相同规格相同数量的应用容器;然后,当B云的容器启动成功后,快速切换业务流量到B云上,并删除A云上老的应用容器。基于容器的迁移技术,平滑且高效,可以达到业务的无感知状态。

3.3 业务资源弹性伸缩实现

业务应用在日常的运行中,难免会因用户的访问数量变化而导致底层流量波动。为了应对这种流量抖动,避免因流量峰值导致业务访问故障或者因流量一直低负载而浪费计算资源。因此,需要根据应用的流量预估范围,制定资源平均负载水位线区间【low, high】和对应的计算资源副本区间范围【min, max】,同时预先设定一个计算资源副本默认值。根据横向弹性伸缩策略,当检测到资源平均负载持续大于高水位阈值,触发容器的横向扩展副本策略;当资源平均负载持续小于低水位阈值,触发容器的横向缩减副本策略。通过上述弹性伸缩策略可以最大化地利用底层资源。

4平台特色

4.1 应用跨云进行资源调度及迁移

平台利用容器技术,结合主流容器编排引擎Kubernetes作为单个云集群的管理和调度。在异构容器云集群上层封装了一层统一的中央调度控制器,自顶而下对应用和资源进行全生命周期管理。这种架构,完美地解决了混合云管理的两个难题:应用跨云调度和迁移,真正实现了混合云在控制层和数据层的闭环管理,以高效率低成本帮助客户实现了业务灾备。

4.2 资源根据应用负载进行弹性伸缩

平台自主研发的弹性伸缩算法,能够根据业务负载情况自动灵活的对计算资源副本进行弹性伸缩。尤其在客户有大促业务时候,能够帮助客户降本增效。

5总结及展望

本文设计和实现的混合云管理平台,主要通过对接异构云上的Kubernetes集群,通过上层中央调度器进行统一管理、统一调度和统一权限,解决了异构云的信息孤岛和管理复杂性问题。平台主要以应用维度进行管理,在应用的部署和变更过程中,会对资源进行调度、迁移和弹性伸缩等操作。目前已经应用在内部的业务系统,也商用于多家外部客户。由于平台研发周期比较短,目前支持的功能还有待扩展,对CICD等场景的支持后续会融入混合云平台中。

参考文献:

[1] 边俊峰.基于Docker的资源调度及应用容器集群管理系统设计与实现[D].济南:山东大学,2017.

【通聯编辑:闻翔军】