游乐游手机版
首页/AI教程/文章详情

阿里开源云原生应用自动化引擎OpenKruise亮相KubeCon

时间:2026-08-15 14:58
阿里云在KubeCon上海开源OpenKruise,这是一套基于Kubernetes的云原生应用自动化引擎,源自阿里经济体大规模部署实践与客户需求。核心组件包括支持原地升级的AdvancedStatefulSet、BroadcastJob和SidecarSet,旨在自动化应用的部署、升级与管理。

2019年6月,在上海 KubeCon 大会期间,阿里云容器平台团队正式宣布开源 OpenKruise——一个承载阿里巴巴经济体多年大规模应用部署、发布与运维管理最佳实践的项目。OpenKruise 本质上是一套运行在 Kubernetes 之上的云原生应用自动化引擎,核心能力来自阿里经济体超大规模业务场景的长期实战沉淀,同时也融合了阿里云 Kubernetes 服务数千家客户的真实使用需求。

OpenKruise,顾名思义,是阿里巴巴基于 Kubernetes 打造的一套云原生应用自动化引擎。Kruise 的命名源于“cruise”的谐音,其中“k”代表 Kubernetes,字面含义是“巡航”或“豪华游艇”,寓意让应用在 Kubernetes 平台上实现自动巡航,承载阿里巴巴多年应用部署、发布和管理经验,帮助企业更高效地进行容器化与云原生落地。

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

随着云原生技术的快速发展,越来越多的企业应用开始在云原生体系中演进。那么,究竟什么是云原生?简单来说,云原生是一套能够充分利用“云”能力,高效构建、交付和运行应用的方法论。应用完成容器化之后,便可以更好地享受云平台带来的弹性伸缩能力以及“不可变基础设施”的优势,从而将更多精力聚焦在核心业务创新与价值创造上。

当前,阿里巴巴基础设施的云原生升级正在持续推进。在整个经济体全面上云的过程中,阿里内部已经在超大规模互联网业务场景中大范围实践云原生理念,例如轻量级容器化。阿里经济体正在大规模推进应用的轻量级容器化建设,借助容器敏捷、标准化、一致性强等特性,快速打造符合云原生理念的电商站点交付能力,以应对类似“双十一”大促这类高并发、高稳定性要求的技术挑战。与此同时,在云原生应用管理方面,阿里经济体也在将 Kubernetes 等项目的应用编排与自动化能力下沉并融入上层运维框架,驱动电商应用按照云原生架构的技术思路进行编排、交付和运行。

在整个云原生转型过程中,阿里技术团队逐步沉淀出一套紧贴上游社区标准、又适配互联网大规模场景的技术理念与最佳实践。其中最核心的问题,就是如何实现应用的自动化发布、稳定运行与高效管理。

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

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

Kruise 的目标是 automate everything on Kubernetes!项目源自阿里经济体多年来在大规模应用部署、发布与管理中的最佳实践,也来自容器平台团队在集团级规模化运维、规模化建站方面的能力沉淀,同时还结合了阿里云 Kubernetes 服务数千客户的真实需求。Kruise 借助云原生社区生态,汇聚阿里云原生实践精华,再反哺社区,为行业提供更具参考价值的 Kubernetes 云原生最佳实践,帮助企业在云原生转型过程中少走弯路。

Kruise 的核心价值在于自动化,它从多个维度解决 Kubernetes 平台之上应用自动化管理的问题,包括部署、升级、弹性伸缩、QoS 调节、健康检查、迁移修复等。本次开源的内容主要聚焦于应用部署与升级能力,即一套增强版 controller 组件,用于应用的部署、升级与日常运维。未来,Kruise 还会陆续开源智能弹性扩缩容组件,以及应用 QoS 自调节等能力组件。

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

下面重点介绍 Kruise Controllers——一套用于 Kubernetes 应用自动化部署与管理的 controller 组件。

众所周知,Kubernetes 项目的核心机制之一就是“控制器模式”。当前,Kubernetes 默认已经提供了一套 Controller 组件,例如 Deployment、StatefulSet、DaemonSet 等,这些组件具备较为丰富的应用部署与管理能力。但问题在于,随着 Kubernetes 使用范围不断扩大,越来越多真实企业场景和大规模业务诉求开始出现,而这些需求与上游原生 Controller 的功能并不完全匹配,这种差异也变得越来越普遍。

以阿里巴巴为例,内部 Kubernetes 集群需要服务 50 多个 BU、上万种应用,整体规模极其庞大,这对系统的规模性与高可用能力提出了非常高的要求。与此同时,阿里云上的 Kubernetes 服务也已接入上千家企业客户,持续积累并支撑了丰富多样的业务需求。正是这些现实场景中的诉求,结合阿里经济体的实践经验,最终推动了 Kruise 开源项目的诞生。

Kruise 第一期开源主要包含以下几类 Controller,后续还会持续扩展,加入更多能力。

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

Advanced StatefulSet 在原生 StatefulSet 的基础上进行了增强,新增了两个关键特性。

原地升级(In-place update strategy)

原生 StatefulSet 在执行 rolling update 时,通常会销毁并重建 Pod。但在阿里巴巴这类超大规模业务场景中,这种升级方式代价非常高。首先,被删除的应用 Pod 需要重新调度,而当 Pod 数量非常庞大时,会给调度系统带来额外压力;更重要的是,重新调度后的 Pod 可能因为资源不足、亲和性约束等原因无法成功落位。与此同时,Pod 一旦被调度到新的 Node 上,原有的本地 State 会丢失,虽然很多情况下可以重建,但依然会带来额外成本。重调度后的 Pod 若分布在不同机器上,由于网络拓扑变化,需要重新申请 IP,一些依赖固定 IP 的应用就可能受到影响,网络流量路径也会变得更不确定。对于多容器 Pod 而言,如果只是升级 Sidecar 容器却导致主容器被一并重建,通常也是业务无法接受的。

Advanced StatefulSet 引入原地升级能力,允许在不销毁 Pod 的前提下直接更新容器镜像。这样带来的优势主要体现在效率与稳定性两个方面。效率上,Pod 无需重新调度,仍然运行在原有 Node 上,本地存储 State 也能够得到保留;稳定性上,IP 保持不变,网络拓扑和流量结构基本稳定。而在阿里巴巴及阿里云的海量业务场景中,稳定性始终是极其关键的核心指标。

允许最大不可用实例的配置(Max Una vailable)

社区原生 StatefulSet 在升级过程中默认不允许多个实例同时升级,这主要是为了满足部分有状态应用必须按顺序逐个升级的需求。但从阿里巴巴内部场景以及阿里云容器平台客户反馈来看,很多应用其实并不需要严格的顺序升级语义,继续沿用这种方式会导致升级效率偏低,尤其在实例规模巨大的情况下问题更加明显。MaxUna vailable 功能正是为此而设计——它允许应用实例并行升级,同时始终保证最大不可用实例数不超过 MaxUna vailable 所设定的阈值,从而兼顾升级效率与业务可用性。

image

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

Broadcast Job 会在集群中的每一个 Node 上运行一个 Pod,直到任务完成。它与社区中的 DaemonSet 比较相似,但二者的区别在于:DaemonSet 会持续保证每个 Node 上长期运行一个服务型 Pod,而 BroadcastJob 中的 Pod 在任务执行结束后会退出。相比 DaemonSet,Broadcast Job 在结束后不会继续占用集群资源,因此特别适用于某些一次性任务场景,例如升级 Node 上的某些组件、检查 Node 配置是否正确等。

image

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

在 Kubernetes 中,Sidecar 是一种辅助容器模式,与主容器共同运行在同一个 Pod 中。Sidecar 容器通常承载基础服务能力,例如 monitoring 容器、log collection 容器等。在企业实际场景中,主业务容器与基础组件容器往往由不同团队分别开发和维护,多个团队如果同时操作或修改同一份 YAML 文件、同一个 API 资源对象,容易产生冲突,也不利于统一管理。SidecarSet 的核心理念,就是将主业务容器和辅助容器的运维方式进行解耦:业务用户在提交应用时,无需显式声明 Sidecar 容器,而是由负责 Sidecar 的团队通过编写规则实现自动注入。在后续容器运维和升级过程中,还可以配合 Advanced StatefulSet 的原地升级能力,让业务团队和基础架构团队按照各自定义的策略分别升级对应容器,无需绑定在一起统一升级,从而避免不必要的影响。Istio 实际上也采用了类似思路来自动为业务容器注入 Sidecar,但它相对缺少对 Sidecar 容器后续升级与运维的完整管理能力。SidecarSet 则更有效地将 Sidecar 容器的部署、注入和管理进行了抽象与统一。

image

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

Kruise 社区的准则,是基于 Kubernetes 的核心技术理念构建更强大的自动化能力。目前,Kruise 正在规划发布更多 Controller,覆盖更加丰富的应用场景和功能方向,例如多样化发布策略、金丝雀发布、蓝绿发布、分批发布等,进一步增强 Kubernetes 应用发布与运维自动化能力。

更重要的是,OpenKruise 是一个 Umbrella 项目,维护者正以开放的姿态面向全球招募合作伙伴与贡献者。非常期待您参与 OpenKruise 的共建,为项目贡献新的自动化能力,或与社区一起持续推动 Kubernetes 云原生应用编排、自动化运维与发布管理能力的演进和发展。

来源:https://developer.aliyun.com/article/706458
上一篇AI音乐情智模型创作机制:神经原理与复杂性美学探索 下一篇大数据架构运维成本高怎么降低?多模托管一站式解决方案
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
CAD零基础入门教程:坐标输入、图层管理与基础绘图命令
AI教程 · 2026-09-01

CAD零基础入门教程:坐标输入、图层管理与基础绘图命令

本文面向CAD零基础学习者,系统讲解坐标输入、图层管理与基础绘图命令的核心用法。通过分步实操与常见问题排查,帮助新手建立精确绘图习惯,掌握规范出图的基础能力。

CAD从入门到项目交付:绘图、标注、图块与实战工作流
AI教程 · 2026-09-01

CAD从入门到项目交付:绘图、标注、图块与实战工作流

掌握CAD的核心在于建立“画得准、标得清、复用快、交付稳”的工作流。本文提供从环境设置、高频命令组合、标注规范、图块标准化到项目分阶段交付的完整路径,帮助初学者避免常见返工陷阱,独立完成可检查、可复用、可打印的工程图纸。

Claude Code 登录指南:个人、Teams 与企业账号区分与授权步骤
AI教程 · 2026-09-01

Claude Code 登录指南:个人、Teams 与企业账号区分与授权步骤

本文详细解析 Claude Code 登录前的账号类型区分方法,涵盖个人订阅、Teams 席位与企业 Enterprise 席位的授权路径差异。提供终端登录命令、环境变量排查及常见异常处理步骤,帮助用户快速完成正确授权并避免登录路径混淆。

Claude Code 文件修改前的权限模式配置与命令审批指南
AI教程 · 2026-09-01

Claude Code 文件修改前的权限模式配置与命令审批指南

本文详细介绍Claude Code在修改文件前的权限模式配置方法,包括defaultMode可选值、permissions allow与deny规则设置、多层级配置文件管理以及 status验证技巧,帮助开发者安全高效地使用AI编程助手。

Claude Code接入VS Code后先测扩展和终端命令
AI教程 · 2026-09-01

Claude Code接入VS Code后先测扩展和终端命令

在VS Code中接入Claude Code后,建议优先验证扩展面板与集成终端两条入口。本文提供标准检查顺序、关键命令与常见故障排查路径,帮助你快速确认环境就绪,避免后续开发受阻。