阿里开源!云原生应用自动化引擎 OpenKruise | 直击 KubeCon

在近期开展的 KubeCon China 2019 上,阿里云将陆续为全球用户分享阿里巴巴超大规模云原生落地实践、云原生前沿技术与应用包括 OpenKruise 开源项目、开放云原生应用中心(Cloud Native App Hub),同时将重磅发布边缘容器、云原生应用管理与交付体系等产品和服务。

接下来的三天,阿里妹将连线会场,为你带来实时报道。

2019年6月24日至26日,由 CNCF 主办的云原生技术大会 KubeCon 在中国上海盛装启幕,阿里云容器平台团队正式宣布开源重量级项目 OpenKruise,将基于阿里巴巴经济体多年大规模应用部署、发布与管理最佳实践沉淀的能力开放给业界。

OpenKruise 是阿里巴巴开源的 Kubernetes 之上云原生应用自动化的引擎。Kruise 项目源自于阿里巴巴经济体应用过去多年的大规模应用部署、发布与管理的最佳实践,源于阿里云Kubernetes服务数千客户的需求沉淀。

“云原生应用自动化引擎”加持下的阿里经济体“全面上云”

随着云原生概念的兴起,越来越多的应用开始尝试在云原生的土壤上耕耘。那么什么是云原生?简而言之,云原生就是一套能够充分利用“云”的能力,高效构建与交付应用的方法论集合,使得应用容器化的用户可以充分的利用云的弹性和“不可变基础设施”等优势专注于自身核心业务价值。

当前,阿里巴巴基础设施的云原生演进与升级也正在如火如荼的进行。而在这个阿里巴巴经济体整体云化的过程中,阿里内部在超大规模的互联网场景中,已经开始进行大量的云原生的理念落地实践,比如轻量级容器化。

阿里巴巴经济体正在大规模推进应用的轻量级容器化,从而达成利用容器的敏捷和一致等特性快速构建符合云原生理念的电商站点交付的能力,适应类似“双十一”大促的严苛技术需求。再比如说云原生应用管理,阿里巴巴经济体正在将 Kubernetes 等项目的应用编排与自动化能力,穿透到上层运维框架当中,驱动电商应用按照云原生的技术理念进行编排、交付、运行。

在阿里巴巴经济体的整体云原生化过程当中,阿里的技术团队逐渐沉淀出了一套紧贴上游社区标准,适应互联网规模化场景的技术理念与最佳实践。这其中,最重要的无疑是如何对应用进行自动化的发布、运行和管理。

OpenKruise:来自阿里经济体云原生化历程的宝贵经验与最佳实践

在 KubeCon 上海,阿里云容器平台团队正式宣布了重量级项目 OpenKruise(以下简称 Kruise)的开源。

Kruise 是 cruise 的谐音,"k" for Kubernetes。字面意义是巡航或豪华游艇,寓意 Kubernetes 上应用的自动巡航,满载阿里巴巴多年应用部署管理经验。

Kruise 的目标是 automate everything on Kubernetes ! Kruise 项目源自于阿里巴巴经济体应用过去多年的大规模应用部署、发布与管理的最佳实践,源于容器平台团队对集团应用规模化运维,规模化建站的能力,源于阿里云 Kubernetes 服务数千客户的需求沉淀。Kruise 借力于云原生社区,集成阿里巴巴云原生实践之精华,反哺社区,指引业界云原生化最佳实践,少走弯路。

OpenKruise 是阿里巴巴开源的 Kubernetes 之上云原生应用自动化的引擎。Kruise 核心在于自动化,我们将从不同维度解决 Kubernetes 之上应用的自动化,包括,部署、升级、弹性扩缩容、Qos 调节、健康检查、迁移修复等等。此次 Kruise 开源的内容主要在应用部署,升级方面,即一套增强版 controller 组件用于应用的部署、升级、运维。后续,Kruise 会依次开源智能化的弹性扩缩容组件,以及应用 Qos 自调节能力的组件等。

Kruise Controllers:将 Kubernetes 的“控制器模式”进行到底

以下内容主要介绍 Kruise Controllers 一套用于 Kubernetes 之上应用自动化部署管理的 controller 组件。

众所周知,Kubernetes 项目的核心原理就是“控制器模式”。

目前,Kubernetes 项目默认已经提供了一套 Controller 组件,例如 Deployment、Statefulset、DaemonSet 等,这些 Controller 提供了比较丰富的应用部署和管理功能。但是,随着 Kubernetes 的使用范围越来越广,真实的企业与规模性场景中的业务诉求与上游 Controller 功能不匹配的情况也越来越常见。

以阿里巴巴为例:阿里巴巴内部的 Kubernetes 集群需要服务涵盖50几个BU,上万种应用。这个体量非常庞大,对规模性和高可用性带来了巨大的挑战。与此同时,阿里云上的 Kubernetes 服务也接入了上千家企业客户,收集并支撑了各种各样的客户需求。这些诉求与最后阿里经济体的实践经验,最终促成了 Kruise 开源项目的诞生。

Kruise 第一期开源主要包含以下Controller,后续会加入更多。

Advanced StatefulSet:具备丰富发布策略、支持原地升级的 StatefulSet

Advanced StatefulSet扩展了原生的StatefulSet,加入了两个新的特性。

  • 原地升级 (In-place update strategy)

原生的 StatefulSet 在做 rolling update 的时候会销毁并且重建 pods. 这在阿里巴巴规模体量的场景下,代价巨大。

  • 首先,所有被删除的应用的 Pods 需要被重新调度一遍,由于 pod 数量大,这对调度带来了不必要的开销,更糟的是,重新调度的 pod 无法正常被调度,由于资源被占用,亲和特性等其他原因。Pod 被重新调度到新的 node上,损失了原来的本地 state, 虽然通常可以被重建,但是还是带来额外开销。
  • 重调度后的 pods 很有可能分布在不同的机器上,由于网络拓扑结构的改变,需要重新申请 IP, 有些依赖 IP 保持的应用无法正常工作,此外,对网络流量的传输带来了不确定性。
  • 针对多容器的 Pod,升级 sidecar 容器而导致主容器重建,通常是不可接受的。

Advanced StatefulSet 引入了原地升级功能,允许在不销毁 pod 的情况下,更新容器 image。这样带来的好处是效率和稳定性。效率很明显,pod 不需要被重新调度了,还是跑在原来的 node,一些本地存储 state 还是可以保留。稳定性体现在 IP 保持,网络拓扑以及流量结构基本不变,稳定性在阿里巴巴及阿里云经济体中一直以来是一个极其重要的指标。

  • 允许最大不可用实例的配置(Max Unavailable)

社区原生的 StatefulSet 在升级的过程中是不允许同时升级多个实例的,这主要是为了某些有状态应用需要依次按序升级的需求。但是,从阿里巴巴场景,以及阿里云容器平台之上的客户了解到,许多应用不需要依次按序升级的语义,这样带来的问题是效率太低。特别是像阿里巴巴一些应用实例数巨大的场景,问题尤其显著。

MaxUnavailable 的功能正是为了解决这个问题,它允许应用实例被并行升级,且保持始终保持最大不可用的实例数不超过 MaxUnavailable 的限制数。

Broadcast Job:像 DaemonSet 那样运行的一次性 Job

Broadcast Job 会在集群中每个node上面跑一个 pod 直至结束。类似于社区的DaemonSet,区别在于 DaemonSet 始终保持一个 pod 长服务在每个 node 上跑,而 BroadcastJob 中最终这个 pod 会结束。相比 DaemonSet,Broadcast 结束后不再占用资源,这在某些场景中特别适用,比如升级 node 中某些组件,检测node 上一些配置是否正确等。

SidecarSet:大规模场景下 Sidecar 管理利器

Sidecar 在 Kubernetes 中是一个辅助容器的概念,和主容器跑在同一个 pod 中。Sidecar 容器一般是一些基础服务组件如 monitoring 容器,log collection 容器等。

在一个公司中,主业务容器和基础组件容器通常由不同的团队开发和维护,多个团队同时操作和修改同一份 yaml 文件或同一个 API 资源对象,时常会产生一些冲突,且不便于管理。SidecarSet 的理念在于将主业务容器和辅助容器的运维模式解耦。当业务用户提交应用时,不需要显示指定 sidecar 容器,由 sidecar 容器相应的团队编写规则负责自动注入。并且在容器运维和升级时候,利用 Advanced Statefulset 原地升级的功能,业务团队和基础架构团队分别按照自己定义的策略升级各自相应的容器,而不需要耦合在一起升级,产生不必要的影响。Istio 其实采用类似的思想自动给业务容器注入 sidecar 容器的功能,但是其缺乏 sidecar 容器后续升级运维的能力。SidecarSet 有效地把 Sidecar 容器的部署和管理抽象出来。

OpenKruise 正在面向开源社区招募合作伙伴与子项目!

Kruise 社区的准则,是基于 Kubernetes 的核心技术理念来构建更强大的自动化能力。目前,Kruise 正在计划发布更多的 Controller 来覆盖更多的场景和功能比如丰富的发布策略、金丝雀发布、蓝绿发布、分批发布等等。

更为重要的是,OpenKruise 是一个 Umbrella 项目,OpenKruise 的维护者们,正以最开放的姿态面向全球招募合作伙伴和贡献者。没错,我们非常期待您能够为 OpenKruise 贡献和共建新的自动化能力,或者一起来共同推Kubernetes 云原生应用编排能力的演进与发展。


原文链接
本文为云栖社区原创内容,未经允许不得转载。

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

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

相关文章

Java-方法重写

方法重写只针对非静态方法,且不能是 private 类型的 如果是静态方法 // 重写都是方法的重写,和属性无关 public class B {public static void test() {System.out.println("B>test()");} }// 继承 public class A extends B{public stati…

Flowable 数据库表结构 ACT_GE_BYTEARRAY

二进制数据表,存储通用的流程定义和流程资源。(act_ge_bytearray) 保存流程定义图片和xml、Serializable(序列化)的变量,即保存所有二进制数据,特别注意类路径部署时候,不要把svn等隐藏文件或者其他与流程无关的文件也…

Express 的使用

以下内容,基于 Express 4.x 版本 Node.js 的 Express Express 估计是那种你第一次接触,就会喜欢上用它的框架。因为它真的非常简单,直接。 在当前版本上,一共才这么几个文件: lib/ ├── application.js ├── e…

数据库设计的 10 个最佳实践

作者 | Emily Williamson译者 | 孙薇,责编 | 屠敏出品 | CSDN(ID:CSDNnews)以下为译文:数据库是应用及计算机的核心元素,负责存储运行软件应用所需的一切重要数据。为了保障应用正常运行,总有一…

Flowable 数据库表结构 ACT_GE_PROPERTY

属性数据表(act_ge_property) 属性数据表。存储整个流程引擎级别的数据 字段名称字段描述数据类型主键为空取值说明NAME_名称nvarchar(64)√schema.versionschema.historynext.dbidVALUE_值nvarchar(300)√5.create(5.)REV_乐观锁int√version

原理解析 | 深入了解 Apache Flink 的网络协议栈

Flink 的网络协议栈是组成 flink-runtime 模块的核心组件之一,是每个 Flink 作业的核心。它连接所有 TaskManager 的各个子任务(Subtask),因此,对于 Flink 作业的性能包括吞吐与延迟都至关重要。与 TaskManager 和 JobManager 之间通过基于 A…

从未如此简单:10分钟带你逆袭Kafka!

来源 | 51CTO 技术栈作者 | 故事凌封图| CSDN下载于视觉中国Apache Kafka 是一个快速、可扩展的、高吞吐的、可容错的分布式“发布-订阅”消息系统, 使用 Scala 与 Java 语言编写,能够将消息从一个端点传递到另一个端点。较之传统的消息中间件&#xff0…

Flowable 数据库表结构 ACT_HI_ACTINST

历史节点表(act_hi_actinst) 历史活动信息。这里记录流程流转过的所有节点,与HI_TASKINST不同的是,taskinst只记录usertask内容 字段名称字段描述数据类型主键为空取值说明ID_ID_nvarchar(64)√主键IDPROC_DEF_ID_流程定义IDnvar…

GMTC2019|闲鱼-基于Flutter的架构演进与创新

2012年应届毕业加入阿里巴巴,主导了闲鱼基于Flutter的新混合架构,同时推进了Flutter在闲鱼各业务线的落地。未来将持续关注终端技术的演变及趋势 Flutter的优势与挑战 Flutter是Google开源的跨端便携UI工具包,除了具有非常优秀的跨端渲染一致…

python-小数点保留位数问题

看了之后发现所有四舍五入都有点问题 https://blog.csdn.net/chenmozhe22/article/details/81666831

Flowable 数据库表结构 ACT_HI_ATTACHMENT

历史附件表( act_hi_attachment ) 字段名称字段描述数据类型主键为空取值说明ID_ID_nvarchar(64)√主键IDREV_乐观锁integer√VersionUSER_ID_用户IDnvarchar(255)√用户IDNAME_名称nvarchar(255)√附件名称DESCRIPTION_描述nvarchar(4000)√描述TYPE_类型nvarchar(255)√附件类…

别吹了!Python程序员正在消失! 资深CTO:你才发现?

程序员你有没有感觉到,Python最近已经刷屏到爆炸了?细分析Python之所以刷屏,主要是因为人红是非多,在编程界它是一种特殊的存在,有人认为,只有用Python才能优雅写代码,提高代码效率;…

Tableau BI工具对接 AnalyticDB for PostgreSQL数据源

AnalyticDB for PostgreSQL(原HybridDB for PostgreSQL)作为高性能分析型数据库,可以支持用户对其业务数据进行实时分析,能够让企业敏锐感知市场动态,做出必要决策。 Tableau是一款数据分析与可视化工具,它…

蚂蚁区块链BaaS:开放在云端,落地于实体

自 2018 年 6 月上线以来,蚂蚁区块链 BaaS 不断在技术上实现突破,形成自身独特的优势,并做为行业领军者在不同领域的几十个场景实现落地。在区块链的商用时代加速到来之际,通过开放自身的技术体系,与国内外各合作伙伴一…

Java-instanceof和类型转换

instanceof public class Person {public void run(){System.out.println("run");} }public class Student extends Person{ }public class Teacher extends Person{ }public class Application {public static void main(String[] args) {// instanceof 是 Java 的…

Flowable 数据库表结构 ACT_HI_COMMENT

历史意见表( act_hi_comment ) 字段名称字段描述数据类型主键为空取值说明ID_ID_nvarchar(64)√主键IDTYPE_类型nvarchar(255)√类型:event(事件)comment(意见)TIME_时间datetime填写时间’USER_ID_用户IDnvarchar(64)…

大麦云原生边缘计算探索,让观众剧院看戏也能实现个性化

作者 | 阿里文娱技术专家 草薰责编 | 夕颜出品 | CSDN(ID:CSDNnews)背景近年来,我国文化产业蓬勃发展,文化产业价值年均增速远高于同期 GDP 增速,尽管中 国演出市场在开放竞争中逐步规范有序,但目前仍处于…

Linus 本尊来了!为什么 KubeCon 越来越火?

阿里妹导读: 从200人的小会议到3500 多位云原生和开源领域工程师齐聚一堂的大会,KubeCon 只用了四年,昨天,在KubeCon China 2019 上阿里巴巴宣布开源 OpenKruise,今天,Linus 本尊竟然现身会场! …

Flowable 数据库表结构 ACT_HI_DETAIL

历史详情表( act_hi_detail ) 流程中产生的变量详细,包括控制流程流转的变量,业务表单中填写的流程需要用到的变量等。 字段名称字段描述数据类型主键为空取值说明ID_ID_nvarchar(64)√主键TYPE_类型nvarchar(255)见备注2PROC_INST_ID_流程实例IDnvarch…

MaxCompute 费用暴涨之新增SQL分区裁剪失败

现象:因业务需求新增了SQL任务,这SQL扫描的表为分区表,且SQL条件里表只指定了一个分区,按指定的分区来看数据量并不大,但是SQL的费用非常高。费用比预想的结果相差几倍甚至10倍以上。 分析:我们先明确MaxC…