2022云栖精选—如何在云原生时代下管理微服务应用

本文涉及的产品
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 杨轲Rainbond Maintainer

lQLPJxbcF2cqNBvMiM0FeLCMz4ifcSGHeANpqgFLAEAA_1400_136.png

一、在Kubernetes中管理微服务应用

image.png

K8s 应用中,管理微服务应用首先面临的问题是多套环境搭建。环境搭建流程非常繁琐,尤其是对于处于快速迭代中的产品,至少需要开发环境、测试环境、生产环境三套环境。

实际的部署中,开发环境可以通过制定流水线实现代码的不同分支,构建出不同 tag 的镜像,最后将其推送到镜像仓库中。但是真正部署在集群中时又会面临多个微服务之间依赖关系的定义,快速复制出一套测试环境需要大量人工操作脚本类的编写。

image.png


另一方面,微服务模块很多,如何编排也是 K8s 中管理微服务的痛点之一。比如微服务模块之间的依赖关系可能会是业务 A 依赖中间件依赖其他通用的业务模块。在集群中部署后,均以 workload 的形式存在,这会导致无法然一目了然地了解模块之间的依赖关系,也无法合理编排微服务组件。image.png

image.png

K8s 中部署微服务应用时往往会先部署 deployment ,再为其指定 service ,两者之间通过 label 进行选择和绑定。如果部署的微服务过多,YAML 文件的定义会很复杂,后续在同一集群中部署多套也较为复杂。也许 helm 能解决一部分问题,但是 Chart 的编写也是一大门槛。

image.png

另外,K8s 集群中微服务组件之间的复用也是一个痛点,比如使用中间件或在项目中开发定制较为通用的模块。我们希望将模块进行沉淀,在新项目开发中能够复用这些模块。而实际情况往往是代码已经沉淀,但部署中要真正使用的用户模块依然需要调整许多配置,比如 YAML 之间的配置服务之间的依赖关系,这也是影响组件复用的难题。

image.png

解决了以上问题后,我们如何将开发好的业务交付到客户环境中,也是一个亟待解决的痛点。

目前, K8s 中最常用的解决方案是通过 Helm进行交付,需要运维人员编写 Helm chart 、定义 values 文件以实现在客户环境的交付,对交付人员提出了较高要求.而且后期维护也比较复杂,因为 Helm本身没有合理的状态回流机制,资源部署到集群以后,仍然需要手动查看 POD 是否已正常启动。


二、RainBond中管理微服务

image.png

Rainbond是开源的云原生应用管理平台,基于 K8s 构建,做了一层应用级的抽象,将复杂的 K8s workload 资源抽象成Rainbond的应用模型。在模型之上支撑了应用的全生命周期管理。Rainbond 的应用模版作为应用模型的载体,可以将应用的能力沉淀下来,形成组件库。最终实现拼积木式的编排体验。

开发阶段,可以对接 git 仓库,将源码一键部署。完成部署后,微服务架构这一方面,会有拓扑图的实时显示,可以一目了然的观测到应用下各个服务的状态和依赖关系。同时支持微服务框架的一键切换以及依赖关系的编排。完成应用的编排后,进入交付阶段,通过应用模版将业务沉淀,发布到应用市场,最后实现基于应用模版的一键升级和交付。到了运维阶段,可以监控每一个服务的日志和状态,同时还可以利用插件扩展单个服务的能力

基于以上流程我们就可以实现应用整体能力的复用和共享,包括组件的发布、安装、升级、交付全流程

image.png

针对多套环境搭建问题,解决方案如下:将应用部署在平台以后,可以通过快速复制,一键复制出所有依赖关系、环境配置等。就像Fork一份代码一样简单。而且可以针对不同的镜像版本或代码分支修改组件的构建源,最终实现开发环境、测试环境到预发布环境到生产环境的一键复制和使用。

image.png

针对微服务编排,解决方案如下:应用模型定义了所有组件之间的业务依赖关系。在依赖关系之上实现了应用架构的解耦,微服务应用可以一键切换不同的治理类型,比如 Istio、K8s 原生service 模式内置的 Service Mesh框架。

针对用户的单个业务,利用了 K8s 中的 POD Sidecar 机制,提供了组件级的插件,包括日志管理、性能分析、监控等一系列工具。无需更改业务容器代码,即可提升业务的能力边界

image.png

上图为平台上部署好的完整的微服务应用。组件的运行状态和依赖关系一目了然,绿色代表组件运行正常,如果出现异常则会变成其他颜色。业务出现问题时,可以快速定位到问题所在。而在编排模式下,可以通过直接连线的方式将组件和组件连接在一起,建立两者之间的依赖关系,使组件具有直接访问到其依赖组件的能力。

image.png

针对微服务组件复用,解决方案如下:用户可以根据粒度大小定义需要复用的组件模块,然后将拼装好的模块发布到应用市场作为应用模板,供其他用户一键部署和使用

image.png

应用开始运行以后,无需学习应用模版的制作,便可以通过页面一键发布到应用市场,实现了业务定义应用模版的效果。让业务运行起来的过程就是定义模版的过程。也省去了再次验证模版的繁琐。最终发布到应用市场中的模版作为载体就能实现各类公有云、私有云场景下的交付。

image.png

上图就是微服务交付的完整流程开始用户通过源码镜像等拼装出整体应用,最后基于应用模型导出完整的应用模板,沉淀到应用市场,实现了像安装手机App一样的安装体验。

image.png上图为发布到应用市场的模板。在离线场景下可以导出应用模版包其包含了应用的元数据定义以及所有的镜像,用户在其他环境下一键导入,即可实现和原应用模版一致的安装体验


关于龙蜥峰会云原生专场课件获取方式:

【PPT 课件获取】:关注微信公众号(OpenAnolis),回复“龙蜥课件” 即可获取。有任何疑问请随时咨询龙蜥助手—小龙(微信:openanolis_assis)。


【视频回放】:视频回放可前往龙蜥官网https://openanolis.cn/video 查看。

lQLPJxbcF2cqM2TM-M0CnrCgW_7LDpyh1wNpqgFKAPsA_670_248.png

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
24天前
|
运维 Cloud Native 持续交付
深入理解云原生架构及其在现代企业中的应用
随着数字化转型的浪潮席卷全球,企业正面临着前所未有的挑战与机遇。云计算技术的迅猛发展,特别是云原生架构的兴起,正在重塑企业的IT基础设施和软件开发模式。本文将深入探讨云原生的核心概念、关键技术以及如何在企业中实施云原生策略,以实现更高效的资源利用和更快的市场响应速度。通过分析云原生架构的优势和面临的挑战,我们将揭示它如何助力企业在激烈的市场竞争中保持领先地位。
|
25天前
|
运维 Cloud Native 安全
云原生技术在现代企业中的应用与挑战####
本文探讨了云原生技术在现代企业IT架构中的关键作用,分析了其带来的优势和面临的主要挑战。通过实际案例分析,揭示了如何有效应对这些挑战,以实现业务敏捷性和技术创新的平衡。 ####
|
22天前
|
Kubernetes Cloud Native 微服务
探索云原生技术:容器化与微服务架构的融合之旅
本文将带领读者深入了解云原生技术的核心概念,特别是容器化和微服务架构如何相辅相成,共同构建现代软件系统。我们将通过实际代码示例,探讨如何在云平台上部署和管理微服务,以及如何使用容器编排工具来自动化这一过程。文章旨在为开发者和技术决策者提供实用的指导,帮助他们在云原生时代中更好地设计、部署和维护应用。
|
22天前
|
Cloud Native 持续交付 开发者
云原生技术在现代企业中的应用与实践####
本文深入探讨了云原生技术的核心概念及其在现代企业IT架构转型中的关键作用,通过具体案例分析展示了云原生如何促进企业的敏捷开发、高效运维及成本优化。不同于传统摘要仅概述内容,本部分旨在激发读者对云原生领域的兴趣,强调其在加速数字化转型过程中的不可或缺性,为后续详细论述奠定基础。 ####
|
27天前
|
Kubernetes Cloud Native 物联网
云原生技术在现代软件开发中的应用与挑战####
本文探讨了云原生技术的兴起背景、核心理念及其在现代软件开发中的广泛应用。通过具体案例分析,揭示了云原生架构如何促进企业数字化转型,并指出了在实施过程中面临的主要挑战及应对策略。 ####
|
17天前
|
人工智能 缓存 异构计算
云原生AI加速生成式人工智能应用的部署构建
本文探讨了云原生技术背景下,尤其是Kubernetes和容器技术的发展,对模型推理服务带来的挑战与优化策略。文中详细介绍了Knative的弹性扩展机制,包括HPA和CronHPA,以及针对传统弹性扩展“滞后”问题提出的AHPA(高级弹性预测)。此外,文章重点介绍了Fluid项目,它通过分布式缓存优化了模型加载的I/O操作,显著缩短了推理服务的冷启动时间,特别是在处理大规模并发请求时表现出色。通过实际案例,展示了Fluid在vLLM和Qwen模型推理中的应用效果,证明了其在提高模型推理效率和响应速度方面的优势。
云原生AI加速生成式人工智能应用的部署构建
|
18天前
|
Cloud Native API 微服务
微服务引擎 MSE 及云原生 API 网关 2024 年 11 月产品动态
微服务引擎 MSE 及云原生 API 网关 2024 年 11 月产品动态。
|
19天前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2024 年 11 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
|
22天前
|
Cloud Native JavaScript Docker
云原生技术:构建现代应用的基石
在数字化转型的浪潮中,云原生技术如同一艘承载梦想的航船,引领企业驶向创新与效率的新海域。本文将深入探索云原生技术的核心价值,揭示其如何重塑软件开发、部署和运维模式,同时通过一个简易代码示例,展现云原生应用的构建过程,让读者领略到云原生技术的魅力所在。
|
23天前
|
Kubernetes Cloud Native Docker
云原生之旅:从容器化到微服务
本文将带领读者踏上云原生的旅程,深入探讨容器化和微服务架构的概念、优势以及它们如何共同推动现代软件的发展。我们将通过实际代码示例,展示如何在Kubernetes集群上部署一个简单的微服务应用,并解释相关的配置和操作。无论你是云原生新手还是希望深化理解,这篇文章都将为你提供有价值的见解和实操指南。