Automated management of large-scale applications on Kubernetes (incubating project under CNCF)
Go to file
Siyu Wang 117e676672
Preparing for v0.8.0 release (#543)
Signed-off-by: FillZpp <FillZpp.pub@gmail.com>
2021-03-03 20:41:01 -08:00
.github Add controllers for nodeimage and imagepulljob 2021-02-02 11:26:59 +08:00
apis Preparing for v0.8.0 release (#543) 2021-03-03 20:41:01 -08:00
charts/kruise Preparing for v0.8.0 release (#543) 2021-03-03 20:41:01 -08:00
cmd/daemon Add controllers for nodeimage and imagepulljob 2021-02-02 11:26:59 +08:00
config support lifecycle hook for asts 2021-02-22 16:12:58 +08:00
docs Optimize ci and docs (#477) 2020-12-10 10:58:48 -08:00
hack Preparing for v0.8.0 release (#543) 2021-03-03 20:41:01 -08:00
pkg Preparing for v0.8.0 release (#543) 2021-03-03 20:41:01 -08:00
scripts Preparing for v0.8.0 release (#543) 2021-03-03 20:41:01 -08:00
test/e2e Optimize CloneSet in-place update and e2e cases 2021-02-25 14:20:35 +08:00
vendor Preparing for v0.8.0 release (#543) 2021-03-03 20:41:01 -08:00
.gitignore Add controllers for nodeimage and imagepulljob 2021-02-02 11:26:59 +08:00
ADOPTERS.md docs: better readme to add more details 2019-07-12 08:59:07 +08:00
BUILDING_MULTI_ARCH.md Changes for multiplatform build. 2020-12-21 10:12:27 +08:00
CHANGELOG.md Preparing for v0.8.0 release (#543) 2021-03-03 20:41:01 -08:00
CODE_OF_CONDUCT.md fix typo (#354) 2020-08-27 09:56:57 -07:00
CONTRIBUTING.md fix typo (#354) 2020-08-27 09:56:57 -07:00
Dockerfile Preparing for v0.8.0 release (#543) 2021-03-03 20:41:01 -08:00
FAQ.md fix typo (#354) 2020-08-27 09:56:57 -07:00
GOVERNANCE.md create maintainer.md (#333) 2020-08-13 23:27:29 -07:00
LICENSE.md md link style 2019-07-11 22:10:30 +08:00
MAINTAINERS.md Optimize generation for webhook certs and configuration (#335) 2020-08-14 01:12:49 -07:00
Makefile Preparing for v0.8.0 release (#543) 2021-03-03 20:41:01 -08:00
OWNERS Add reviewers for Kruise (#450) 2020-11-16 23:07:58 -08:00
PROJECT Adding AdvancedCronJob api as per proposal (#440) 2020-11-20 18:10:27 -08:00
README-zh_CN.md Preparing for v0.8.0 release (#543) 2021-03-03 20:41:01 -08:00
README.md Preparing for v0.8.0 release (#543) 2021-03-03 20:41:01 -08:00
go.mod Preparing for v0.8.0 release (#543) 2021-03-03 20:41:01 -08:00
go.sum Preparing for v0.8.0 release (#543) 2021-03-03 20:41:01 -08:00
main.go Add feature-gate for Kruise to replace the CUSTOM_RESOURCE_ENABLE env (#532) 2021-02-12 11:05:06 -08:00

README.md

OpenKruise/Kruise

License Go Report Card CII Best Practices Build Status CircleCI codecov Contributor Covenant

English | 简体中文

notification What is NEW!
Feb 4th, 2021. Kruise v0.8.0 is RELEASED! It provides refactoring SidecarSet, Deployment hosted by UnitedDeployment, and a new kruise-daemon component which supports image pre-download, please check the CHANGELOG for details.
Dec 16th, 2020. Kruise v0.7.0 is RELEASED! It provides a new CRD named AdvancedCronJob, promotes AdvancedStatefulSet to v1beta1 and a few features in other controllers, please check the CHANGELOG for details.
Oct 1st, 2020. Kruise v0.6.1 is RELEASED! It provides various features and bugfix, such as CloneSet lifecycle hook and UnitedDeployment supported CloneSet, please check the CHANGELOG for details.

Introduction

OpenKruise (official site: https://openkruise.io) is now hosted by the Cloud Native Computing Foundation (CNCF) as a Sandbox Level Project. It consists of several controllers which extend and complement the Kubernetes core controllers for workload and application management.

As of now, Kruise mainly offers these controllers:

  • CloneSet: CloneSet is a workload that mainly focuses on managing stateless applications. It provides a rich set of features for more efficient, deterministic and controlled management, such as in-place update, specified Pod deletion, configurable priority/scatter based update, preUpdate/postUpdate hooks, etc. This post provides more details about why CloneSet is useful.

  • Advanced StatefulSet: An enhanced version of default StatefulSet with extra functionalities such as in-place update, pause and maxUnavailable.

  • SidecarSet: A controller that injects sidecar containers into the Pod spec based on the Pod selectors. The controller is also responsible for upgrading the sidecar containers.

  • Advanced DaemonSet: An enhanced version of default DaemonSet with extra upgrade strategies such as partition, node selector, pause and surging.

  • UnitedDeployment: This controller manages application Pods spread in multiple fault domains by using multiple workloads.

  • BroadcastJob: A job that runs Pods to completion across all the nodes in the cluster.

  • AdvancedCronJob: An extended CronJob controller, currently its template supports Job and BroadcastJob.

  • ImagePullJob: Help users download images on any nodes they want.

Key Features

  • In-place update

    In-place update provides an alternative to update container images without deleting and recreating the Pod. It is much faster compared to the recreate update used by the native Deployment/StatefulSet and has almost no side effects on other running containers.

  • Sidecar containers management

    The Sidecar containers can be simply defined in the SidecarSet custom resource and the controller will inject them into all Pods matched. The implementation is done by using Kubernetes mutating webhooks, similar to what istio does. However, SidecarSet allows you to explicitly manage your own sidecars.

  • Multiple fault domains deployment

    A global workload can be defined over multiple fault domains, and the Kruise controller will spread a sub workload in each domain. You can manage the domain replicas, sub workload template and update strategies uniformly using the global workload.

  • Image pre-download

    Help users download images on any nodes they want.

  • ...

Quick Start

For a Kubernetes cluster with its version higher than v1.13, you can simply install Kruise with helm v3.1.0+:

# Kubernetes 1.13 and 1.14
helm install kruise https://github.com/openkruise/kruise/releases/download/v0.8.0/kruise-chart.tgz --disable-openapi-validation

# Kubernetes 1.15 and newer versions
helm install kruise https://github.com/openkruise/kruise/releases/download/v0.8.0/kruise-chart.tgz

Note that installing this chart directly means it will use the default template values for the kruise-manager. You may have to set your specific configurations when it is deployed into a production cluster or you want to configure feature-gates.

For more details, see installation doc.

Documentation

You can view the full documentation from the OpenKruise website.

We also provide tutorials for ALL Kruise controllers to demonstrate how to use them.

Contributing

You are warmly welcome to hack on Kruise. We have prepared a detailed guide CONTRIBUTING.md.

Community

Active communication channels:

  • Slack: channel address
  • Mailing List: todo
  • Dingtalk Group(钉钉讨论群)

License

Kruise is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.