由 RightScale(Flexera)一年一度发布的「云计算趋势」。RightScale 在今年的报告(2021 State of the Cloud Report)中提到,在所有受调查的企业中,有 92% 的企业在使用多云策略,其中有 82% 是混合云策略,并且每个调查对象平均使用 2.6 个公有云和 2.7 个私有云。


🔗 图片来源:https://www.flexera.com/blog/cloud/cloud-computing-trends-2021-state-of-the-cloud-report/
随着组织不断寻求通过全数字化转型提高效率和保持竞争优势,企业开始采用混合 IT 和多云解决方案加速进程。因此,以前位于本地数据中心内的集中式应用和工作负载逐渐变得分散。这一趋势正在重新定义传统数据中心的边界,并迫使组织现代化和扩展基础设施,以便适应日益重要的分布式工作负载。在当今这个新时代,仅仅将数据中心基础设施扩展到云端还不够。基于目标的声明式管理简化配置并提高日常运营效率,这种管理需要全面现代化的云体系,还需要无处不在的实时分析和可观测性帮助维护业务、加快故障排除和补救速度。此外,现代化云体系还必须与一个或者多个公有云平台进行协同集成,以便在管理必须扩展到位于不同公有云中的工作负载时,能够维持统一管理视图和手段。
多云架构现在成为了大多数组织采用的云计算策略的核心,应用和工作负载跨多个数据中心分布依然成为企业现代化的必然趋势。这一趋势将随着云原生微服务的兴起而加强和扩大,产生越来越多的符合云原生特性的关键业务应用,它们本着明确的目的开发并天生具有在云数据中心之间快速迁移的能力。成功部署和交付多云应用要求企业云体系能够提供具备包容性的架构性支持,能够应对应用的迭代演进、分布式工作负载的激增,以及它们导致的 IT 管理和运营复杂性。同时,现代化的云体系必须高度自动化,推进 IT 部门向云和 IT 即服务等新的 IT 消费模式演进,并奠定可靠交付和支持应用所必需的现代化架构基础,这是实现业务敏捷性不可或缺的部分。
提到多云(Multi cloud),还要说一点题外话,那就是混合云(Hybrid cloud)。由于工作负载、基础架构和流程对每个企业都是唯一的,因此每个混合云策略都必须适应特定需求。其结果是,混合云和多云这两个术语有时的含义是不一致的。图 1 是典型的混合云模式,工作负载部署在多个计算环境(一个基于公共云,另外至少有一个为私有计算环境)中。图 2 为多云,多云描述的是至少包含两个公共云提供商的策略。「混合多云」如图 3 所示,意为多云和混合云也可以合在一起,其也属于一种多云。

图 2 多云

图 3 混合多云
🔗 图片来源:https://cloud.google.com/architecture/hybrid-and-multi-cloud-patterns-and-practices?hl=zh-cn
首先它提供给企业更多的选择,在特定的云服务商提供的服务无法满足业务需求时,企业仍然能够自由选择其他云服务商,避免了技术瓶颈,也避免了企业被单一云服务商锁定;其次它降低了风险,在有多种选择的前提下,某一云服务设施故障,也不会使整个业务中断。它带来的好处是很多方面的,但同时也会带来一些难题,比如既然使用多厂商、异构云的策略,因为底层资源复杂和多样性,必然会涉及到统一监控、统一运维、统一管理的问题;除了资源之外,还有在企业中更贴近需求的应用程序,不同类型应用程序的统一管理,也是多云架构中的关键。接下来就来说说多云架构中的核心部分—多云应用管理。
多云应用管理
无论是在技术社区还是一些主流厂商,都会在各自多云架构方案的基础上,将重心继续放在多云应用管理这一模块。如果要设计一个多云应用管理方案,都需要考虑到哪些内容呢?下面有一些建议。
首先是多云应用适用的场景。文章认为主要有以下几种:
高可用:可以将工作负载分布在多个集群上,适用一个全局 VIP 或者 DNS 域名将请求发送到对应集群,当一个集群发生故障时,VIP 或者 DNS 切换到健康的集群。
低延迟:多地部署的集群,可以将请求转向离用户最近的集群处理,来减少网络的延迟。例如在上海、成都部署了两套集群,对于上海的用户就将请求转发到上海的集群,提升体验。
故障隔离:多个小集群比一个大集群更容易隔离故障,当集群发生断点,断网,资源不足的问题时,如果使用多个集群就可以将故障隔离在单个集群里,不会传播到其他集群。
业务隔离:单个集群虽然提供了 Namespace 隔离,不过这只是逻辑上的隔离,不同 Namespace 间网络互通,也存在资源抢占(想要实现隔离需要额外设置网络、资源等策略)。多集群可以在物理上实现隔离,安全可靠性要更高。

⚠️ 图为「高可用」解释图
其次是制定标准的问题,如何定义一个应用?云平台上运行应用大致有:传统应用、微服务应用,微服务应用延伸还有 Serverless。微服务相较于传统应用,更灵活,更高性能,Serverless 在微服务的基础上对资源的管理更进一步,但似乎 Serverless 技术的门槛稍微高一些,并且针对链路长,上下游依赖特别明显的应用,Serverless 也存在一些局限性(Serverless Kubernetes 架构的核心在于 Pod ,比应用更偏向系统底层,所以使用者需要投入更多的精力用于应用下层资源的管理,而 FaaS—Function as a Service 架构的核心在于函数,比应用更偏向系统上层,因此灵活度会降低,不能适配所有的业务场景)。综合来看,将应用定义成微服务应用似乎是不错的选择。
定义好一个应用后,就会涉及到将应用同时跨云(集群)部署起来,如何保证不同集群的工作负载状态一致?如何做集群间的负载均衡?如何做集群间的负载均衡?这时便需要有技术方案的支撑。社区中,对于多集群管理和多集群部署应用比较常见的解决方案之一是集群联邦— Federation V2。
🔗 图片来源:https://k2r2bai.com/2019/04/20/kubernetes/federation-v2/
Federation 使管理多个集群变得简单。它提供以下两个主要能力:
跨集群同步资源:Federation 提供了在多个集群中保持资源同步的能力。例如,可以保证同一个 Deployment 在多个集群中存在,并根据负载情况在集群间合理伸缩。
跨集群服务发现:Federation 提供了自动配置 DNS 服务以及在所有集群后端上进行负载均衡的能力。例如,可以提供一个全局 VIP 或者 DNS 记录,通过它可以访问多个集群后端。
Federation 方案经历了两个版本,最早的 v1 版本已经废弃。社区在 v1 的基础上发展出了 Federation v2,即 Kubefed。Kubefed 使用 Kubernetes已经相对成熟的CRD 定义一套自己的API规范,抛弃了之前使用的 Annotation 方式。架构上也较之前有很大改变,放弃了之前需要独立部署的 Federated APIServer/etcd,Kubefed的控制平面采用了流行的 CRD + Controller 的实现方式,可以直接安装在现有的 Kubernetes集群上,无需额外的部署。
除了社区给的答案,一些主流厂商怎么做呢?有一种选择是在 Federation V2 的基础上继续加强,比如完全开源的 Karmada,直接使用 Kubernetes 原生 API,并且加强了调度功能,无需更改应用程序就可以跨集群运行程序。另一种常见选择是CRD+Operator 的形式来做跨集群应用下发和管理。
以 DaoCloud 「云原生多云管理平台(DSP)」为例,DSP 也是在参考了开源社区中的一些方案后,用 CRD+Operator 这种方式来实现多云应用的管理。首先我们将上面所提的多云适用的场景,具象化成了客户企业中真实的一些具体场景,比如:
客户的双活集群环境:可靠性要求较高的应用在发布时会同时发布到两个集群,两边的应用同时接管业务流量。这种情况下,两边应用的编排(镜像等)是一样的,但是配置又可能会有差异性,比如 IP。
客户的两地灾备集群环境:应用在主数据中心发布后,在灾备数据中心也有对应发布,主要由主数据中心的应用接管流量。这种情况下,两边应用编排是一样的,但是配置大概率会有较大差异性,比如 IP、资源(灾备的资源要求小些,或者实例数少一些)、配置文件(灾备连接的是灾备数据中心的 DB )。
客户的多套开发测试环境:发布时需要同时发布到多个环境满足不同的开发测试要求。
应用 :代表完整的一套应用系统,应用里面会分成多个微服务,所有的微服务共同组件一个完整的应用系统。
微应用:代表在微服务体系下,对单个微服务的封装,包含微服务本身的业务定义和部署定义。
模版源 :定义应用元数据代码的来源,可以是 Git 仓库,可以是 Helm Release。
部署单元 :描述的是真正被下发的 K8S 资源对象,也就是工作负载、负载均衡、路由等这些应用需要的资源。
还有其他一些比较常见,功能类似的比如部署位置,描述部署应用所选位置;差异化配置,描述不同集群间的差异化配置(DSP 的差异化配置是在部署单元中描述)。
多云架构中除了多云应用管理,还需要考虑包括组织用户、流程审批、监控告警、资源管理等模块的方案策略,这些功能共同为企业多云环境的运行提供更方便、更安全的保障。多云已经从一种趋势,变成了事实。加快云化步伐,拥抱多云时代,企业将继续获得更高的性能、可靠性、灵活性,以及更低的成本,这些都为企业发展提供了更多可能性。
DaoCloud 公司简介:「DaoCloud 道客」云原生领域的创新领导者,成立于 2014 年底,拥有自主知识产权的核心技术,致力于打造开放的云原生操作系统为企业数字化转型赋能。产品能力覆盖云原生应用的开发、交付、运维全生命周期,并提供公有云、私有云和混合云等多种交付方式。成立迄今,公司已在金融科技、先进制造、智能汽车、零售网点、城市大脑等多个领域深耕,标杆客户包括交通银行、浦发银行、上汽集团、东风汽车、海尔集团、屈臣氏、金拱门(麦当劳)等。目前,公司已完成了 D 轮超亿元融资,被誉为科技领域准独角兽企业。公司在北京、武汉、深圳、成都设立多家分公司及合资公司,总员工人数超过 400 人,是上海市高新技术企业、上海市“科技小巨人”企业和上海市“专精特新”企业,并入选了科创板培育企业名单。
未经允许不得转载:DaoCloud道客博客 » 解析多云应用,拥抱新趋势