在上一篇文章中,小编为您详细介绍了关于《即时策略养成大作我去玩《三国战》荀彧培养指南》相关知识。本篇中小编将再为您讲解标题神结合!一招玩转K8s和微服务治理。
原标题:神结合!一招玩转K8s和微服务治理
发布会传送门:https://developer.aliyun.com/live/2841?spm=a2c6h.12873581.0.0.23bf7f7emRj0uV&groupCode=cloudproduct
进入直播间还有好礼等你拿!
EDAS产品免费试用:https://www.aliyun.com/activity/middleware/edaspromotiononmay
首届云原生编程挑战赛正式开战!立即报名瓜分330000现金奖:https://tianchi.aliyun.com/specials/promotion/cloudnative#problem-definition
观看《云原生架构师培训课程》领取新用户折扣:https://yqh.aliyun.com/live/AlibabaCloudNative
云原生的发展速度日新月异,要用好却绝非轻而易举,当开发者开始使用云原生或向云原生架构迁移时,往往会面临一些困境:
总之,了解云原生和K8s只是开始,想要将云原生在业务落地,发挥云原生的价值,选择一条合理的“原生化”路径,才是开发者要关注的核心问题。
阿里巴巴对于云原生的运用起步很早,对于在具有大规模,高可靠和分布式特征的系统上应用云原生技术有丰富经验。EDAS作为出品自阿里巴巴云原生团队,阿里云上aPaaS的旗舰产品,在早期也提供了容器和K8s的支持能力。近期随着EDAS 3.0版本的重磅发布,更是将云原生融入了EDAS的功能核心,致力于帮助业务进行云原生落地,立足云原生平台打造更强大的应用管理能力,释放技术红利,服务广大开发者。
下文将通过一些示例,带领大家一窥究竟,看EDAS如何帮开发者“躺着”进入云原生时代,玩转云原生。
无法否认,EDAS是阿里云平台上的商业化产品,而云原生主要由开源社区所倡导,两者显然出自泾渭分明的两个阵营,那“纯粹”是在掩耳盗铃?
其实不然,商业化与开源并非水火不容,相反在很多领域他们总是相辅相成,这个话题并非本文关注的重点,若抛开“出身”的因素,我们理解的“纯粹”指的是:
得益于K8s的开放性,EDAS实现的原理并不复杂,用户只需要在K8s配置资源(应用),通过声明式的配置将其置于期望的状态上,EDAS就能感知变更,自动维护并调整状态,使其最终与用户期望一致,从而达到管控应用的目的,这一切并不需要修改K8s的版本,只需要安装EDAS提供的扩展即可。
下面从两方面来具体介绍EDAS的做法和因之带来的优势。
前文提到,EDAS将应用抽象成了资源,这个过程中,应用定义的设计是至关重要的。在声明式的规则下,应用定义需要能覆盖软件生命周期过程中每个主体的配置,状态和关系的描述,并保证良好的可读性,因此,它必须归纳自大量应用,复杂场景和长久维护的经验总结,也只有这样才能保证定义不脱离实际,能被高效的推演到其他应用上。
EDAS没有重复造轮子,选择了“开放应用模型(OAM)”这一开放标准来作为应用定义,并选择与之共建的方式来丰富标准的内容。可以说,EDAS是OAM在阿里云上的一个实现。
对于开发者来说,EDAS使用OAM提供了两大好处:
由于ApplicationConfiguration也是K8s自定义资源(CR),所以开发者可以直接使用kubectl工具对其进行增删查改操作,EDAS遵循K8s面向终态的设计原则,最终将应用调整到预期的状态,对开发者来说操作应用与操作常规的Deployment资源并没有差异,也可以非常方便的与其他CI/CD工具或者GitOps工作流相集成。
下面给出了一份EDAS的应用yaml示例片段,通过kubectl apply这样一份配置即可创建一个用指定Jar包部署的EDAS应用:
apiVersion: core.oam.dev/v1alpha1
kind: ApplicationConfiguration
metadata:
name: helloedas
namespace: default
spec:
components:
EDAS通过OAM给用户提供了统一的应用模型,而对底层工作负载的管理主要是借助Deployment来完成。
对于无状态应用的管理,Deployment的使用是相当普遍的,它的配置项也颇为丰富。对于习惯了使用Deployment来管理应用的开发者,常常会存在一些相对复杂的配置需求,这里会产生一个矛盾,当特定workload(这里是Deployment)的配置能力超过了OAM模型所定义的运维能力,如何在保留底层自定义配置同时还能维持OAM规范的简洁性和管控的有效性?
纵观软件开发历史,类似的问题并不新鲜,编程语言的发展也是如此,在通用开发领域,高级语言早就替代了机器语言成为开发的主流,因为人的智力是有限的,“抽象”一定是解决复杂问题的利器,这也是前文应用定义产生的重要原因,但对于特殊领域和过渡时期,需要一些“例外”手段来提供足够的灵活性。
因此,尽管用Deployment来直接操作应用存在一些问题,但EDAS并没有“一刀切”的将Deployment的控制权完全收回,而是用“插件式”增强的能力给出了一个答案。
从实现看,EDAS在操作Deployment时默认会通过patch的方式,若需要新建Deployment(比如分批发布),EDAS也会先以之前Deployment为蓝本复制后再进行对应配置调整。因此,只要在配置不冲突的情况下,用户自定义的配置是完全可以继承的,用户可以在EDAS控制台,通过EDAS的API/SDK,或是直接用kubectl工具来修改Deployment,体验上与独立使用Deployment完全一样。

因为“纯粹”云原生,开发者可以以原生的方式去理解和使用EDAS,但仅有这一点是远远不够的,云原生只是一个技术框架,而应用管理则是个更具体的业务命题,aPaaS平台必须要有血有肉,才能完成在应用托管,应用可观测性,微服务治理等诸多领域,全方位解决问题的任务。
EDAS既然帮开发者打开了云原生的大门,下一步自然就是将阿里云和阿里中间件的技术优势融入aPaaS,以专业领域的技术优势来帮开发者更好更省的管理应用,这些才是EDAS的“血”和“肉”。
不可否认,开源社区确实贡献了很多的优秀工具,解决了很多的问题,但他们的短板也同样存在,比如:
EDAS从开始就摒弃了使用开源工具集合来拼凑功能的路线,而是基于经过验证的技术或成熟的云产品,从问题出发,构建一整套专业的解决方案给用户。这样对常见的问题更具有针对性,没有整合和维护的问题。如果开源工具就像瑞士军刀,小巧灵活,随取随用;那EDAS提供的能力更像是数控机床,精准高效,可规模化。
当然,对于开发者而言,使用开源工具或EDAS从不是单选题,在云原生平台下,完全可以通过组合的方式来取长补短,形成最合适的方案。
这里没有全量讲解EDAS功能,仅列举几个典型的微服务治理的场景。
金丝雀发布是比较理想的发布方式,可以有效的降低版本发布的风险,也被广泛的用于线上系统的运维过程中,这里不赘述它的好处,对于一次简单的金丝雀发布过程来说,只需要在全量部署前先部署金丝雀实例,能够在验证新版本,验证完发布到全网即可。
但要在生产系统的实现金丝雀发布,至少还需要解决几个问题:
可见,“完整”的金丝雀发布所需要的能力并不只是应用托管能力,还需要配合可观测性和微服务治理一起协作完成,因此单纯用某个工具或者用简单的Deployment可能很难解决这些问题。
EDAS也提供了金丝雀发布功能,EDAS的金丝雀发布支持SpringCloud和Dubbo两种开发框架的流量调度,用户只需要上传Jar包,不需要对应用做任何修改,开箱即用。关于EDAS金丝雀发布的使用这里不做详细介绍,可以参考这篇文章
https://mp.weixin.qq.com/s?__biz=MzU4NzU0MDIzOQ==&mid=2247489003&idx=3&sn=a7827438814bec3175743d77e3cb4aab&chksm=fdeb278bca9cae9dc08912e7b23669b67bb8145f709d155e84f0d6b63fd278df5b954c3b41f9&token=209782105&lang=zh_CN#rd
这里简要列出了EDAS金丝雀发布的重要步骤和参与的组件,可看到一些云产品参与了金丝雀发布的过程,其中ACM用来推送灰度流量规则,ARMS负责采集并呈现监控数据,运行于用户侧的Agent则保证了程序可在用户完全无感知下,按照灰度的规则进行服务注册和数据上报:

另一个例子是日志管理,应用日志对线上运维有着非比寻常的意义,日志查询也一直是EDAS使用频度最高的功能之一,对于开发者来说完备的日志管理功能就是刚需,EDAS将日志管理的功能通过“日志中心”提供给开发者来使用,其中:
• 实时日志功能可以让开发者在控制台查看到指定容器在前台产生的输出。
• 日志目录功能可以方便用户收藏应用需要关注的特定日志项,并提供了即席查询指定的日志文件内容,和检索特定模式的功能。
实时日志和日志目录功能主要用于满足常用的即席查询需求,但全面的日志管理功能并不仅仅是查询,还包括汇聚,转储,统计分析,监控告警等很多场景,对于这些需求,阿里云的日志服务(SLS)提供了完善的解决方案,SLS完全可以胜任海量日志数据存储,检索,复杂统计分析,多维度数据可视化等场景;而且与流行的开源日志系统(如EFK)相比,SLS在日志管理的功能丰富度,效率,稳定性,成本等方面也均有过之而无不及。
所以,EDAS与阿里云日志服务(SLS)做了很好的集成,开发者只需要在日志中心配置待采集的日志项,即可将相应的日志转储到SLS,完全免去了配置logtail客户端的操作。EDAS + SLS的组合对开发者来说是一对“黄金搭档”,将应用与数据无缝的衔接起来,带来的不仅是流畅的用户体验,而且是直接将产生的数据服务于数据化运营或智能运维决策的能力,这对产品的带来的价值是不言而喻的。
下图描述了EDAS日志管理功能的设计思路:

软件开发是软件生命周期的重要环节,开发与运维是密不可分的,开发的质量决定了现网故障数量和维护工作的投入,开发的效率影响着版本迭代速度和问题修复速度。EDAS在提升软件开发者维护效率的同时,也同样关注开发者软件在生产阶段的体验,从提升开发体验中获取更高的生产力。
EDAS提供了丰富的开发者工具集来帮助开发者更高效的完成测试和部署,目前全面支持了EDAS云原生应用,工具如下表:
工具适用场景参考文档OpenAPI使用编程的方式来使用EDAS功能https://help.aliyun.com/document_detail/62038.htmlSDK同OpenAPI,支持Java,Pythonhttps://help.aliyun.com/document_detail/62123.htmlhttps://help.aliyun.com/document_detail/123354.htmlCLI用命令行的方式使用EDAS功能https://help.aliyun.com/document_detail/104440.htmlMaven Plugin快速将Java代码部署到EDAS上https://help.aliyun.com/document_detail/150674.htmlAlibabaCloudToolkit快速部署代码和端云互联测试等https://help.aliyun.com/document_detail/150670.htmlTerraform Provider快速创建EDAS应用和依赖的资源https://www.terraform.io/docs/providers/alicloud/d/edas_applications.html
EDAS努力为开发者提供“更好”的云原生技术,一方面致力于让云原生从少数人能玩转的“阳春白雪”变成真正成熟易用的技术,释放云原生的价值;另一方面,通过集成阿里云的各种优势技术来增强云原生下aPaaS平台的能力,提供更强大和稳定的应用托管服务。
但如果这些能力需要用户付出高昂的改造成本才能获取,那就是南辕北辙了,所以,使用EDAS必须要比直接使用K8s更为简易,EDAS确实也做到了。对于使用常见的Java框架如SpringCloud,Dubbo开发的应用,EDAS都提供了很方便的接入途径,多数时候并不需要修改软件或者开发流程即可顺利使用,在EDAS创建应用并部署对应的程序包即可;对于使用镜像的应用,EDAS也可以提供正常的功能支持。
这里举一些例子看看各种不同的应用如何轻松的接入EDAS:
当下云原生已经蔚然成荫,未来已来,是否使用云原生技术不再是问题。如果您渴望治理软件的纷乱绕杂,但对于驾驭云原生没有十足信心,对后期的维护成本倍感压力,不妨把这些难题都交给EDAS,您只需要关注好业务自身,轻装上阵,快速进入云原生时代。游戏网
编后语:关于《神结合!一招玩转K8s和微服务治理》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《《火线精英》全新关卡天使前哨站》,感兴趣的同学可以点击进去看看。
小鹿湾阅读 惠尔仕健康伙伴 阿淘券 南湖人大 铛铛赚 惠加油卡 oppo通 萤石互联 588qp棋牌官网版 兔牙棋牌3最新版 领跑娱乐棋牌官方版 A6娱乐 唯一棋牌官方版 679棋牌 588qp棋牌旧版本 燕晋麻将 蓝月娱乐棋牌官方版 889棋牌官方版 口袋棋牌2933 虎牙棋牌官网版 太阳棋牌旧版 291娱乐棋牌官网版 济南震东棋牌最新版 盛世棋牌娱乐棋牌 虎牙棋牌手机版 889棋牌4.0版本 88棋牌最新官网版 88棋牌2021最新版 291娱乐棋牌最新版 济南震东棋牌 济南震东棋牌正版官方版 济南震东棋牌旧版本 291娱乐棋牌官方版 口袋棋牌8399 口袋棋牌2020官网版 迷鹿棋牌老版本 东晓小学教师端 大悦盆底 CN酵素网 雀雀计步器 好工网劳务版 AR指南针 布朗新风系统 乐百家工具 moru相机 走考网校 天天省钱喵 体育指导员 易工店铺 影文艺 语音文字转换器