user avatar
bedca72e
Name Last commit Last update
.circleci Support minReadySeconds for CloneSet (#236)
.github install kruise before start e2e test (#132)
api add advanced daemonset as a new member in Kruise Project (#274)
charts/kruise Add v0.5.0 changelog and chart (#273)
cmd/manager Optimize CloneSet test cases and documents (#216)
config Update the crd yaml, add copyright info and fix a typo
docs Update README for new docs (#296)
hack Add Kruise v0.3.1 changelog and charts (#210)
pkg Fix CloneSet blocked by terminating PVC
scripts remove admissionReviewVersions, scope and timeoutSeconds field in webhook configuration for compatibility
test/e2e cloneset controller supports pod update (#200)
vendor add advanced daemonset as a new member in Kruise Project (#274)
.gitignore Add vendor with go mod (#287)
.travis.yml Improve README and add contributing (#288)
ADOPTERS.md docs: better readme to add more details
CHANGELOG.md Add v0.5.0 changelog and chart (#273)
CODE_OF_CONDUCT.md Improve README and add contributing (#288)
CONTRIBUTING.md Improve README and add contributing (#288)
Dockerfile Use go.mod instead of dep (#284)
FAQ.md docs: better readme to add more details
Gopkg.lock cloneset controller supports pod update (#200)
Gopkg.toml cloneset controller supports pod update (#200)
LICENSE.md md link style
Makefile Fix CRDs using openkruise/controller-tools (#310)
OWNERS [Kruise] Update OWNERS file format
PROJECT
README-zh_CN.md
README.md
go.mod
go.sum

OpenKruise/Kruise

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

English | 简体中文

notification What is NEW!
May 19th, 2020. Kruise v0.5.0 is RELEASED! It supports maxSurge for CloneSet and fixes bugs for StatefulSet/SidecarSet, please check the CHANGELOG for details.
Mar 20th, 2020. Kruise v0.4.1 is RELEASED! It provides graceful in-place update for Advanced StatefulSet and CloneSet, please check the CHANGELOG for details.
Nov 24th, 2019. A blog about new UnitedDeployment controller is posted in Kruise Blog (link).

Introduction

Kruise is the core of the OpenKruise (official site: https://openkruise.io) project. It consists of several controllers which extend and complement the Kubernetes core controllers for workload management.

As of now, Kruise offers five workload 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.

  • 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.

The project roadmap is actively updated in here. This video demo by Lachlan Evenson is a good introduction for new users.

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.

Quick Start

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

helm install kruise https://github.com/openkruise/kruise/releases/download/v0.5.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 enable/disable specific controllers.

For more details, see quick-start.

Documentation

You can view the full documentation from the OpenKruise website.

We also provider tutorials to demonstrate how to use Kruise controllers.

Contributing

You are warmly welcomed 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.