OpenKruise 进入 CNCF 沙箱项目孵化

k8s技术圈

共 1709字,需浏览 4分钟

 ·

2020-11-12 16:21

在 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



 点击屏末  | 即刻学习

浏览 35
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报