OpenKruise 进入 CNCF 沙箱项目孵化
在 CNCF 官方网站(https://www.cncf.io/sandbox-projects/)上可以看到 OpenKruise 已经正式成为了 CNCF 沙箱项目。
介绍
Kruise 是 cruise的谐音,'k' for Kubernetes
,字面意义巡航,豪华游艇。寓意 Kubernetes 上应用的自动巡航,满载阿里巴巴多年应用部署管理经验。
Kruise 的目标是 automate everything on Kubernetes !
,Kruise 项目源自于阿里巴巴经济体应用过去多年的大规模应用部署、发布与管理的最佳实践,源于容器平台团队对集团应用规模化运维,规模化建站的能力,源于阿里云 Kubernetes 服务数千客户的需求沉淀。Kruise 借力于云原生社区,集成阿里巴巴云原生实践之精华,反哺社区,指引业界云原生化最佳实践,少走弯路。Kruise 核心在于自动化,从不同维度解决 Kubernetes 之上应用的自动化,包括部署、升级、弹性扩缩容、Qos 调节、健康检查、迁移修复等等。
核心功能
原地升级这是一种新的更新容器镜像的方法,与 Deployment 和 StatefulSet 中 Pod 重建升级的方法不同,原地升级只是用新镜像重新启动特定的容器,并不会重新创建 Pod。这使得更新速度更快,对其他子系统(如调度器、CNI 或 CSI)的影响也更小。
允许最大不可用实例的配置社区原生的 StatefulSet 在升级的过程中是不允许同时升级多个实例的,这主要是为了某些有状态应用需要依次按序升级的需求。但是,从阿里巴巴场景,以及阿里云容器平台之上的客户了解到,许多应用不需要依次按序升级的语义,这样带来的问题是效率太低。特别是像阿里巴巴一些应用实例数巨大的场景,问题尤其显著。MaxUnavailable
的功能正式为了解决这个问题,它允许应用实例被并行升级,且保持始终保持最大不可用的实例数不超过 MaxUnavailable
的限制数。
Sidecar 容器管理支持在一个单独的 CR 中定义 Sidecar 容器,Kruise 控制器将在创建 Pod 时把它们注入到所有符合条件的 Pod 中。除此之外,通过更新 CR 中的 container Spec ,也可以在原地升级 Sidecar 容器镜像。主容器管理和 Sidecar 容器管理的分离,极大地简化了开发者的合作。
UnitedDeployment是一种新的 CRD,用于在由多个区域组成的集群中实现高可用部署。它管理多个同类的工作负载,每个工作负载都专用于一个区域。跨域的 Pod 分配由每个工作负载的副本数决定。由节点标签标识的域可以是一个可用区(AZ)或一组同类节点。
Broadcast Job会在集群中每个 node 上面跑一个 pod 直至结束。类似于社区的 DaemonSet, 区别在于 DaemonSet 始终保持一个 pod 长服务在每个 node 上跑,而 BroadcastJob 中最终这个 pod 会结束。相比 DaemonSet,Broadcast 结束后不再占用资源,这在某些场景中特别适用,比如升级 node 中某些组件,检测 node 上一些配置是否正确等。
特性
原生 Kubernetes
使用 CRDs 进行拓展 支持 Stateful/Stateless/Job Workloads 和各类 Operators
生产级别可用
在生产环境用于管理数以万计的 Pod 支持具有数千个节点的大规模集群
简单易用
安装/卸载 简单 安装控制器可选
策略丰富
可以指定 Pod 升级/删除 可以管理升级顺序 升级期间 Pod 优雅离线
“更多信息移步 https://github.com/openkruise/kruise
”