OpenKruise:阿里巴巴 双11 全链路应用的云原生部署基座

简介: Kruise 是 Cruise 的谐音,'K' for Kubernetes,寓意 Kubernetes 上应用的航行和自动巡行,它满载着阿里巴巴多年在大规模应用部署、发布与管理最佳实践,以及阿里云 Kubernetes 服务数千客户的需求沉淀。

来源 | 阿里巴巴云原生公众号

作者 | 王思宇(酒祝)

OpenKruise 是由阿里云于 2019 年 6 月开源的云原生应用自动化引擎,本质是基于 Kubernetes 标准扩展出来一个的应用负载项目,它可以配合原生 Kubernetes 使用,并为管理应用容器、sidecar、镜像分发等方面提供更加强大和高效的能力,从而在不同维度上通过自动化的方式解决 Kubernetes 之上应用的规模化运维和规模化建站问题,包括部署、升级、弹性扩缩容、Qos 调节、健康检查、迁移修复等等。

1.jpeg

  • OpenKruise 官网:https://openkruise.io/
  • GitHub 项目地址:https://github.com/openkruise/kruise

Kruise 是 Cruise 的谐音,'K' for Kubernetes,寓意 Kubernetes 上应用的航行和自动巡行,它满载着阿里巴巴多年在大规模应用部署、发布与管理最佳实践,以及阿里云 Kubernetes 服务数千客户的需求沉淀。

OpenKruise: 阿里巴巴 双11 全链路应用的云原生部署基座

在阿里巴巴经济体的整体云原生化过程当中,阿里的技术团队逐渐沉淀出了一套紧贴上游社区标准、适应互联网规模化场景的技术理念与最佳实践。这其中,最重要的无疑是如何对应用进行自动化的发布、运行和管理。于是,阿里云容器团队将这些能力通过  OpenKruise 反哺社区,以期指引业界云原生化最佳实践,少走弯路。

今年 双11,阿里巴巴实现了核心系统的全面云原生化。截至 2020 年 双11,阿里巴巴内部已运行近十万 OpenKruise 的 workload、管理着上百万容器。

1. 内部运行的 OpenKruise 版本代码超 95% 来自社区仓库

下图展示了阿里巴巴内部运行的 OpenKruise 版本与开源版本之间的关系:

2.png

从上图可以看出:Github 上的 OpenKruise 就是我们主体的上游仓库,而内部的下游仓库只基于公共接口实现了极少数内部耦合功能(这部分代码只占据了不到 5%),也就是说阿里巴巴内部运行的 OpenKruise 其中 95% 以上的代码完全来自于社区仓库。

有两点值得说明:

  • 所有通用能力,我们都会直接基于开源仓库开发和提交,然后再同步到内部环境。
  • 社区成员为 OpenKruise 贡献的每一行代码,都将运行在阿里内部环境中。

2. 在 Kubernetes 上自动化应用程序工作负载管理

做上层业务的同学可能对 “应用负载(workload)” 缺乏概念,这里先简单做个介绍。不知道你是否有好奇过,每一次应用扩缩容、发布操作的背后是如何实现的呢?在云原生的环境下,我们都是通过面向终态的方式去描述应用的部署需求(需要的机器数、镜像版本等等),见下图:

3.png

应用负载(workload)主要指的就是这个 YAML 定义和对应的控制器:

当应用扩缩容时,PaaS(运维平台)会修改上述 YAML 对象中的需求机器数(比如扩容 10 台改为 110,再缩容 5 台则改为 105),然后控制器就会按照 workload 期望的数量来调整实际运行的 Pod(容器)数量。当应用触发发布或回滚时,PaaS(运维平台)则会修改上述 YAML 对象中的镜像版本和发布策略,控制器就会按照给指定的发布策略来将所有管理的 Pod(容器)重建为期望版本(这只是一些便于理解的简化描述,实际工作机制会复杂得多)。

也就是说,应用负载(workload)管理着应用所有容器的生命周期。不仅应用扩容、缩容、发布都依赖于 workload 的工作,workload 还负责持续维持应用运行时的 Pod(容器)数量,来保证持续有符合期望数量的实例在跑着。如果有宿主机发生故障、上面的应用实例被驱逐,那么 workload 会立即再为应用扩出新的容器。

3. 双11 核心应用全面基于 OpenKruise 部署

随着阿里巴巴经济体上云,双11 主体相关的电商类业务、以及中间件等应用都迁移到了云原生环境下,统一使用 OpenKruise 的应用负载能力做部署。OpenKruise 提供了多种不同类型的 workload 来支持不同的部署方式:

4.png

  • CloneSet:(无状态应用)这是规模最大的部分,绝大部分泛电商业务都是通过 CloneSet 来部署发布。
  • Advanced StatefulSet:(有状态应用)目前主要是用于中间件在云原生环境的部署。
  • SidecarSet:(sidecar 生命周期管理)可以将定义好的 sidecar 容器动态注入到新建的 Pod 中,云上的运维容器、 mesh 容器都是通过这种机制加入到业务 Pod 中。
  • Advanced DaemonSet:将宿主机级别的守护进程部署到所有节点上,包括各种用于给业务容器配置网络、存储的基础组件。

因此,我们看到从上层电商业务到中间件,再到运维容器、基础组件,整个上下游链路都是依赖于 OpenKruise 提供的 workload 做部署和运行。不管是应用运行时的机器数量、版本管理,还是紧急扩容、发布等操作,都有 OpenKruise 无时无刻在维护着。

可以想象,如果 OpenKruise 出现了故障会发生什么?

  • 如果只是控制器挂了,则应用扩缩容、发布操作全量失败。
  • 而如果控制器逻辑存在重大 bug,比如数量或版本号计算错误,甚至可能引起业务容器大规模误删或是升级为错误的版本。

当然,针对以上高危情况,我们做了很多重的防护措施,务必保障业务的稳定可用。

这就是阿里巴巴的云上部署基座,OpenKruise 几乎承载了全量 双11 业务的部署管理与运维职责。

4. 主要能力

OpenKruise 从何而来?或者说什么问题或需求促使了 OpenKruise 的诞生呢?

当上云成为大势、当云原生逐渐成为标准,我们却发现 Kubernetes 原生提供的 workload 能力根本无法满足阿里巴巴超大规模业务场景的需求:

  • 应用发布时,所有容器都要飘移重建:对于我们来说几乎无法接受,在发布高峰期如果阿里巴巴的大规模应用都在大规模重建,这是不管对于业务自身还是其他调度器、中间件、网络/存储组件都是一种灾难性的压力。
  • 无状态应用负载(Deployment)无法灰度升级容器。
  • 有状态应用负载(StatefulSet)无法并行升级容器。
  • 还有很多,这里不一一列举......

在这种背景下,OpenKruise 出现了。我们通过或是全新开发(CloneSet、SidecarSet),或是兼容性增强(Advanced StatefulSet、Advanced DaemonSet),来使得上层业务终于可以顺利落地云原生。

OpenKruise 首推的功能就是“原地升级”。通过这种能力,我们终于可以使应用发布不需要将容器飘移重建,而是在原地、原 Pod 上只升级需要更新的镜像。这样带来的好处太多了:

  • 发布效率大大提升。根据不完全统计数据,在大部分业务场景下原地升级至少比完全重建升级提升了 80% 以上的发布速度:不仅省去了调度、分配网络、分配远程盘的耗时,连拉取新版本镜像的时候都得益于 node 上已有旧镜像、只需要拉取较少的增量 layer。
  • 发布前后 IP 不变、升级过程 Pod 网络不断,并且 Pod 中除了正在升级容器之外的其他容器都一直保持正常运行。
  • Volume 不变,完全复用原容器的挂载设备。
  • 确保了集群确定性,使全链路压测通过后的集群拓扑为大促提供保障。

当然,除此之外我们还增强了许多其他的高级能力,满足了许多种面向大规模场景下的业务诉求,本文不做一一介绍,但下图可以看到 OpenKruise 与 Kubernetes 原生应用负载针对无状态、有状态应用的功能对比:

5.png

OpenKruise 已正式进入 CNCF Sandbox

2020 年 11 月 11 日,在这个特殊的时点,阿里巴巴技术人又迎来一件大事:经 CNCF 技术监督委员会全体成员投票,一致同意将阿里云开源的 OpenKruise 正式晋级为 CNCF 托管项目。

正如开篇所说,OpenKruise 已经完成了社区开源,并且内外的版本做到几乎完全一致。除此之外,我们还将 OpenKruise 提供到了阿里云容器服务的应用目录中,公有云上的任意客户都可以一键安装和使用 OpenKruise,真正实现 OpenKruise 在阿里集团内部业务、云产品、开源社区中的“三位一体”。目前在 ACK 上使用 OpenKruise 的客户主要包括斗鱼 TV、申通、有赞等,而开源社区中携程、Lyft 等公司也都是 OpenKruise 的用户和贡献者。

OpenKruise 将基于阿里巴巴超大规模场景锤炼出的云原生应用负载能力开放出来,不仅在云原生社区中补充了扩展应用负载的重要板块,还为云上客户提供了阿里巴巴多年应用部署的管理经验和云原生化历程的最佳实践成果。从正式开源之日起,OpenKruise 项目已经建立多个关键里程碑: 

  • Maintainer 5 位成员来自阿里巴巴、腾讯、Lyft 
  • 44 位贡献者

    • 国内:阿里云、蚂蚁集团、携程、腾讯、拼多多...
    • 国外:微软、Lyft、Spectro Cloud、Dsicord...
  • 1900+ GitHub Stars
  • 300+ Forks

后续,OpenKruise 的重点包括但不限于以下几个目标:

  • 继续将阿里巴巴内部沉淀的通用云原生应用自动化能力输出,走可持续的三位一体发展战略。
  • 深度挖掘细分领域的应用负载需求,比如我们正在探索针对 FaaS 场景的池化能力。
  • 与其他相关领域的开源产品做更紧密的结合,如 OAM/KubeVela 等,打造更完整的云原生应用体系。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/514677.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI 如何推动双碳目标达成?施耐德电气这么说

以当前的排放总量而言,中国是全球碳排放第一大国。如何兼顾经济转型与能源低碳转型成为国家重要的发展战略之一,因此中国提出 2030 年碳达峰以及 2060 年碳中和的目标,并被写进《政府工作报告》中,成为各行各业关注的热点话题。 …

轻松玩转全链路监控

简介: 好的产品总是能给予用户最轻松的使用体验,并在实际生产中发挥出巨大的业务价值。我们不妨从现在开始,就将所有微服务应用通过无侵入的方式接入ARMS,构建一体化的全链路监控体系,而不是等到真正遇到生产故障的那一…

深度解读 MongoDB 最全面的增强版本 4.4 新特性

MongoDB 在今年正式发布了新的 4.4 大版本,这次的发布包含众多的增强 Feature,可以称之为是一个维护性的版本,而且是一个用户期待已久的维护性版本,MongoDB 官方也把这次发布称为「User-Driven Engineering」,说明新版…

四大招让无处不在的工作空间成为可能?揭秘Ivanti 的战略布局

如今二维码已成为我们生活、工作的“必需品”,大家往往会通过简单扫码获取内容信息或进行交易。受疫情的影响,人们对非接触式交易需求增多,二维码的应用场景更无处不在。 与此同时,二维码带来的安全问题也受到人们的关注&#xf…

深度| 每秒1.4亿次!再度刷新TPS记录的PolarDB如何应对双11“尖峰时刻”?

2020年是云原生数据库PolarDB全面支撑天猫双十一的第二年,天猫交易、买家、卖家以及物流等系统在双十一期间基于PolarDB为亿万客户提供了顺滑的体验。同时,PolarDB还刷新了去年由自己创造的数据库处理峰值(TPS)纪录,今…

Hologres是如何完美支撑双11智能客服实时数仓的?

简介: 本文重点介绍Hologres如何帮助阿里巴巴客户体验部(CCO),构建集实时化、自助化、系统化于一体的用户体验实时数仓,完美助力双11场景,支持上千服务大屏,削峰30%,节约成本近30%。…

云原生与AI时代的存储该是什么样?新华三发布全NVMe智能闪存与智慧中枢数据平台

编辑 | 宋慧 出品 | CSDN云计算 7月8日,紫光股份旗下新华三集团以“智以致用速达未来”为主题,召开“2021新华三存储新品发布会”,重磅推出云智原生的新一代端到端NVMe闪存存储H3C/HPE Alletra、分布式融合存储H3C UniStor X10000&#xff0…

java客户端程序用什么自动化测试_五大Java自动化测试框架

51CTO官微技术资讯/行业精华/产品心得多年来,Java一直是服务器端应用开发的首选编程语言。随着时间的推移和自动化测试的兴起,业界出现了许多基于Java,并根据不同的业务逻辑而发展起来的开源框架。在此,我向大家介绍并比较五种用到…

微服务框架Go-Micro集成Nacos实战之服务注册与发现

简介: 本文主要介绍如何使用 Golang 生态中的微服务框架 Go-Micro(v2) 集成 Nacos 进行服务注册与发现。(Go-Micro 目前已经是 v3 版本,但由于某些原因项目已经更名为 nitro 具体原因大家可以去 github 中查看) 相关背景知识 Go-Micro Go Micro 是一个…

「深度学习知识体系总结(2021版)」开放下载了!

随着世界技术的迭代与发展,人工智能和机器学习正在超自动化领域,扮演着越来越重要的角色。2020年的冠状病毒疫情突发,整个世界都在防疫的道路上披荆斩棘。人工智能发挥了重大作用,智能测温、智能消毒、智能建设都能看到AI的影子。…

2020双11,阿里巴巴集团数万数据库系统全面上云揭秘

作者:阿里云高级技术专家 改天阿里云高级产品专家 胜通 2020年天猫双十一成交额突破4982亿,在双十一走过12个年头之际,我们的订单创建峰值达到58.3万笔/秒,再次刷新全球在线交易系统的记录。历年双十一都是对技术人的一次大考&…

以 Kubernetes 为代表的容器技术,已成为云计算的新界面

简介: 可以说,以 Kubernetes 为代表的容器技术正成为云计算新界面。容器提供了应用分发和交付标准,将应用与底层运行环境进行解耦。Kubernetes 作为资源调度和编排的标准,屏蔽底层架构差异性,帮助应用平滑运行在不同基…

2020双11养猫技术大揭秘

简介: 你养猫了没? 作者 | 淘系-珑晴 在电商领域,互动是一个重要的用户增长方案,在提升用户黏性、活跃以及拉新上都发挥着重要的作用。今年双11,淘系互动团队推出了“超级星秀猫”,我们不盖楼、不开车&…

GitHub 遭抵制!AI 代码生成神器竟成“抄袭工具”?

整理 | 郑丽媛出品 | CSDN(ID:CSDNnews)上周,微软、GitHub、OpenAI 三方联手推出的 AI 代码生成神器 GitHub Copilot 一经官宣便引起巨大关注:试问哪个开发者不想要这么一位“虚拟程序员”来解放自己的双手&#xff1f…

阿里云性能测试工具PTS介绍

简介: 性能测试 PTS(Performance Testing Service)是具备强大的分布式压测能力的 SaaS 压测平台,可模拟海量用户的真实业务场景,全方位验证业务站点的性能、容量和稳定性。 阿里云 阿里云智能GTS-平台技术部-SRE团队 1…

php微信公众号的服务器配置,微信公众号服务器配置选项PHP示例代码

最近微信公众号遇到有点奇怪的问题,使用的是tp框架,之前配置都ok的,最近有需求重新填写url选项,可配置时一直显示token失败,解决方案,参考以下php示例代码来修改,同时最好把输出注释掉。最后通过…

Dubbo 3.0 前瞻系列 | 2020双11,Dubbo3.0 在考拉的超大规模实践

很多开发者一直以来好奇:阿里自己有没有在用Dubbo,会不会用Dubbo?在刚刚结束的双11,我们了解到阿里云今年提出了“三位一体”的理念,即将“自研技术”、“开源项目”、“商业产品”形成统一的技术体系,最大…

OpenStack管理界面开源啦!

日前,木兰开源社区TOC召开了孵化项目审议会议,其项目分别覆盖数据库、大数据处理、网络、流媒体、云计算等关键领域。其中,浪潮数据纯自研产品Skyline成功入围。 自开源至今,OpenStack常被诟病的一点是原生界面不太好用&#xff…

厂商 push 不通排查指南

简介: MPS 集成多个三方渠道,保障 push 使命必达的必须知道的几件事。 为了提升「MPS 消息推送」的推送的到达率,mPaaS 集成了华为、小米等厂商的推送功能,从而有效地提高用户留存率,提升用户体验。在日常运维过程中&a…

Hologres助力飞猪双11实时数据大屏秒级响应

简介: 本文重点介绍Hologres如何落地阿里巴巴飞猪实时数仓场景,并助力飞猪双11实时数据大屏3秒起跳,全程0故障。 摘要:刚刚结束的2020天猫双11中,MaxCompute交互式分析(下称Hologres)实时计算F…