OpenKruise (官网: https://openkruise.io) 是托管在 Cloud Native Computing Foundation (CNCF) 下的 Sandbox 项目。 它提供一套在 Kubernetes核心控制器 之外的扩展工作负载、应用管理能力。
一、核心能力
1、通用工作负载
通用工作负载能帮助你管理 stateless(无状态)、stateful(有状态)、daemon 类型的应用。
它们不仅支持类似于 Kubernetes 原生 Workloads 的基础功能,还提供了如 原地升级、可配置的扩缩容/发布策略、并发操作 等。
CloneSet - 无状态应用
Advanced StatefulSet - 有状态应用
Advanced DaemonSet - daemon 类型应用
2、任务工作负载
BroadcastJob - 部署任务到一批特定节点上
AdvancedCronJob - 周期性地创建 Job 或 BroadcastJob
3、Sidecar 容器管理
Sidecar 容器可以很简单地通过 SidecarSet 来定义,然后 Kruise 会将它们注入到所有匹配的 Pod 中。
它是通过 Kubernetes webhook 机制来实现的,和 istio 的注入实现方式类似, 但是它允许你指定管理你自己的 sidecar 容器。
SidecarSet - 定义和升级你的 sidecar 容器
4、多区域管理
它可以帮助你在一个 Kubernetes 集群中的多个区域上部署应用,比如 不同的 node 资源池、可用区、机型架构(x86 & arm)、节点类型(kubelet & virtual kubelet)等。
这里我们提供两种不同的方式:
WorkloadSpread - 旁路地分发 workload 创建的 pods
UnitedDeployment - 一个新的 workload 来管理多个下属的 workloads
5、增强运维能力
原地重启 pod 中的容器
指定的一批节点上拉取镜像
6、应用安全防护
保护 Kubernetes 资源及应用 pods 不被级联删除
PodUnavailableBudget - 覆盖更多的 Voluntary Disruption 场景,提供应用更加强大的防护能力
二、部署和使用
1、安装kruise(安装具体参数参考:https://openkruise.io/zh/docs/installation)
helm install kruise openkruise/kruise --version 1.1.0 --set manager.image.repository=openkruise-registry.cn-hangzhou.cr.aliyuncs.com/openkruise/kruise-manager --debug
2、卸载
注意:卸载会导致所有 Kruise 下的资源都会删除掉,包括 webhook configurations, services, namespace, CRDs, CR instances 以及所有 Kruise workload 下的 Pod。 请务必谨慎操作!
helm uninstall kruise