Releases: openkruise/kruise
v0.10.2
To install or upgrade to the old version, see installation doc.
Changes since v0.10.1
SidecarSet
- Add SourceContainerNameFrom and EnvNames in sidecarset transferenv.
Advanced StatefulSet
- Fix update expectation to be increased when a pod updated.
WorkloadSpread
- Fix bug: read conditions from nil old subset status.
Other
- Do not set timeout for webhook ready.
Thanks to all our contributors! 😊
v1.0.0
To install or upgrade to the stable version, see installation doc.
Changes since v0.10.1
Project
- Bump CustomResourceDefinition(CRD) from v1beta1 to v1
- Bump ValidatingWebhookConfiguration/MutatingWebhookConfiguration from v1beta1 to v1
- Bump dependencies: k8s v1.18 -> v1.20, controller-runtime v0.6.5 -> v0.8.3
- Generate CRDs with original controller-tools and markers
So that Kruise can install into Kubernetes 1.22 and no longer support Kubernetes < 1.16.
New feature: in-place update with env from metadata
When update spec.template.metadata.labels/annotations
in CloneSet or Advanced StatefulSet and there exists container env from the changed labels/annotations,
Kruise will in-place update them to renew the env value in containers.
New feature: ContainerLaunchPriority
Container Launch Priority provides a way to help users control the sequence of containers start in a Pod.
It works for Pod, no matter what kind of owner it belongs to, which means Deployment, CloneSet or any other Workloads are all supported.
New feature: ResourceDistribution
For the scenario, where the namespace-scoped resources such as Secret and ConfigMap need to be distributed or synchronized to different namespaces,
the native k8s currently only supports manual distribution and synchronization by users one-by-one, which is very inconvenient.
Therefore, in the face of these scenarios that require the resource distribution and continuously synchronization across namespaces, we provide a tool, namely ResourceDistribution, to do this automatically.
Currently, ResourceDistribution supports the two kind resources --- Secret & ConfigMap.
CloneSet
- Add
maxUnavailable
field inscaleStrategy
to support rate limiting of scaling up. - Mark revision stable as
currentRevision
when all pods updated to it, won't wait all pods to be ready (Behavior Change).
WorkloadSpread
- Manage the pods that were created before WorkloadSpread.
- Optimize webhook update and retry during injection.
PodUnavailableBudget
- Add pod no pub-protection annotation.
- PUB controller watch workload replicas changed.
Advanced DaemonSet
- Support in-place update daemon pod.
- Support progressive annotation to control if pods creation should be limited by partition.
SidecarSet
- Fix SidecarSet filter active pods.
UnitedDeployment
- Fix pod NodeSelectorTerms length 0 when UnitedDeployment NodeSelectorTerms is nil.
NodeImage
- Add
--nodeimage-creation-delay
flag to delay NodeImage creation after Node ready.
Other
- Kruise-daemon watch pods using protobuf.
- Export resync seconds args.
- Fix http checker reload ca.cert.
- Fix E2E for WorkloadSpread, ImagePulling, ContainerLaunchPriority.
Thanks to all our contributors! 😊
v1.0.0-beta.0
To install or upgrade to the latest version including alpha/beta/rc, see installation doc.
Changes since v1.0.0-alpha.2
New feature: ResourceDistribution
For the scenario, where the namespace-scoped resources such as Secret and ConfigMap need to be distributed or synchronized to different namespaces,
the native k8s currently only supports manual distribution and synchronization by users one-by-one, which is very inconvenient.
Therefore, in the face of these scenarios that require the resource distribution and continuously synchronization across namespaces, we provide a tool, namely ResourceDistribution, to do this automatically.
Currently, ResourceDistribution supports the two kind resources --- Secret & ConfigMap.
CloneSet
- Add
maxUnavailable
field inscaleStrategy
to support rate limiting of scaling up. - Mark revision stable when all pods updated to it, won't wait all pods to be ready.
Advanced DaemonSet
- Support progressive annotation to control if pods creation should be limited by partition.
UnitedDeployment
- Fix pod NodeSelectorTerms length 0 when UnitedDeployment NodeSelectorTerms is nil.
Thanks to all our contributors! 😊
v1.0.0-alpha.2
To install or upgrade to the latest version including alpha/beta/rc, see installation doc.
Changes since v1.0.0-alpha.1
Project
- Generate CRDs with original controller-tools and markers
WorkloadSpread
- Add discoveryGVK for WorkloadSpread
NodeImage
- Add
--nodeimage-creation-delay
flag to delay NodeImage creation after Node ready
Other
- Fix E2E for WorkloadSpread, ImagePulling, ContainerLaunchPriority
Thanks to all our contributors! 😊
v0.10.1
To install or upgrade to the latest version including alpha/beta/rc, see installation doc.
Changes since v0.10.0
WorkloadSpread
- Add discoveryGVK for WorkloadSpread
- Optimize webhook injection
Kruise-daemon
- Setup generic kubeClient with Protobuf
Other
- Fix E2E for WorkloadSpread, ImagePulling
Thanks to all our contributors! 😊
v1.0.0-alpha.1
To install or upgrade to the latest version including alpha/beta/rc, see installation doc.
Changes since v0.10.0
Project
- Bump CustomResourceDefinition(CRD) from v1beta1 to v1
- Bump ValidatingWebhookConfiguration/MutatingWebhookConfiguration from v1beta1 to v1
- Bump dependencies: k8s v1.18 -> v1.20, controller-runtime v0.6.5 -> v0.8.3
So that Kruise can install into Kubernetes 1.22 and no longer support Kubernetes < 1.16.
New feature: in-place update with env from metadata
When update spec.template.metadata.labels/annotations
in CloneSet or Advanced StatefulSet and there exists container env from the changed labels/annotations,
Kruise will in-place update them to renew the env value in containers.
New feature: ContainerLaunchPriority
Container Launch Priority provides a way to help users control the sequence of containers start in a Pod.
It works for Pod, no matter what kind of owner it belongs to, which means Deployment, CloneSet or any other Workloads are all supported.
WorkloadSpread
- Manage the pods that were created before WorkloadSpread.
- Optimize webhook update and retry during injection.
PodUnavailableBudget
- Add pod no pub-protection annotation.
- PUB controller watch workload replicas changed.
Advanced DaemonSet
- Support in-place update daemon pod.
SidecarSet
- Fix SidecarSet filter active pods.
Other
- Kruise-daemon watch pods using protobuf.
- Export resync seconds args.
- Fix http checker reload ca.cert.
Thanks to all our contributors! 😊
v0.10.0
To install or upgrade to the latest version, see installation doc.
Changes since v0.9.0
New feature: WorkloadSpread
WorkloadSpread supports to constrain the spread of stateless workload, which empowers single workload the abilities for multi-domain and elastic deployment.
It can be used with those stateless workloads, such as CloneSet, Deployment, ReplicaSet and even Job.
New feature: PodUnavailableBudget
Kubernetes offers Pod Disruption Budget (PDB) to help you run highly available applications even when you introduce frequent voluntary disruptions. PDB limits the number of Pods of a replicated application that are down simultaneously from voluntary disruptions. However, it can only constrain the voluntary disruption triggered by the Eviction API. For example, when you run kubectl drain, the tool tries to evict all of the Pods on the Node you're taking out of service.
PodUnavailableBudget can achieve the effect of preventing ALL application disruption or SLA degradation, including pod eviction, deletion, inplace-update, ...
CloneSet
- Scale-down supports topology spread constraints. doc
- Fix in-place update pods in Updated state.
SidecarSet
- Add imagePullSecrets field to support pull secrets for the sidecar images. doc
- Add injectionStrategy.paused to stop injection temporarily. doc
Advanced StatefulSet
- Support image pre-download for in-place update, which can accelerate the progress of applications upgrade. doc
- Support scaling with rate limit. doc
Advanced DaemonSet
- Fix rolling update stuck caused by deleting terminating pods.
Other
- Bump to Kubernetes dependency to 1.18
- Add pod informer for kruise-daemon
- More
kubectl ... -o wide
fields for kruise resources
Thanks to all our contributors! 😊
v0.9.0
To install or upgrade to the latest version, see installation.
Changes since v0.8.1
New feature: ContainerRecreateRequest
[doc]
ContainerRecreateRequest provides a way to let users restart/recreate one or more containers in an existing Pod.
New feature: Deletion Protection
[doc]
This feature provides a safety policy which could help users protect Kubernetes resources and
applications' availability from the cascading deletion mechanism.
CloneSet
- Support
pod-deletion-cost
to let users set the priority of pods deletion. [doc] - Support image pre-download for in-place update, which can accelerate the progress of applications upgrade. [doc]
- Add
CloneSetShortHash
feature-gate, which solves the length limit of CloneSet name. [doc] - Make
maxUnavailable
andmaxSurge
effective for specified deletion. [doc] - Support efficient update and rollback using
partition
. [doc]
SidecarSet
- Support sidecar container hot upgrade. [doc]
ImagePullJob
- Add
podSelector
to pull image on nodes of the specific pods.
Thanks to all our contributors! 😊
v0.8.1
To install or upgrade to the latest version, see installation.
Changes since v0.8.0
Kruise-daemon
- Optimize cri-runtime for kruise-daemon
BroadcastJob
- Fix broadcastjob expectation observed when node assigned by scheduler
Thanks to all our contributors! 😊
v0.8.0
To install or upgrade to the latest version, see installation.
Changes since v0.7.0
Breaking changes
- The flags for kruise-manager must start with
--
instead of-
. If you install Kruise with helm chart, ignore this. - SidecarSet has been refactored. Make sure there is no SidecarSet being upgrading when you upgrade Kruise,
and read the latest doc for SidecarSet. - A new component named
kruise-daemon
comes in. It is deployed in kruise-system using DaemonSet, defaults on every Node.
Now Kruise includes two components:
- kruise-controller-manager: contains multiple controllers and webhooks, deployed using Deployment.
- kruise-daemon: contains bypass features like image pre-download and container restart in the future, deployed using DaemonSet.
New CRDs: NodeImage and ImagePullJob
Kruise will create a NodeImage for each Node, and its spec
contains the images that should be downloaded on this Node.
Also, users can create an ImagePullJob CR to declare an image should be downloaded on which nodes.
apiVersion: apps.kruise.io/v1alpha1
kind: ImagePullJob
metadata:
name: test-imagepulljob
spec:
image: nginx:latest
completionPolicy:
type: Always
parallelism: 10
pullPolicy:
backoffLimit: 3
timeoutSeconds: 300
selector:
matchLabels:
node-label: xxx
SidecarSet
- Refactor the controller and webhook for SidecarSet:
- For
spec
:- Add
namespace
: indicates this SidecarSet will only inject for Pods in this namespace. - For
spec.containers
:- Add
podInjectPolicy
: indicates this sidecar container should be injected in the front or end ofcontainers
list. - Add
upgradeStrategy
: indicates the upgrade strategy of this sidecar container (currently it only supportsColdUpgrade
) - Add
shareVolumePolicy
: indicates whether to share other containers' VolumeMounts in the Pod. - Add
transferEnv
: can transfer the names of env shared from other containers.
- Add
- For
spec.updateStrategy
:- Add
type
: containsNotUpdate
orRollingUpdate
. - Add
selector
: indicates only update Pods that matched this selector. - Add
partition
: indicates the desired number of Pods in old revisions. - Add
scatterStrategy
: defines the scatter rules to make pods been scattered during updating.
- Add
- Add
- For
CloneSet
- Add
currentRevision
field in status. - Optimize CloneSet scale sequence.
- Fix condition for pod lifecycle state from Updated to Normal.
- Change annotations
inplace-update-state
=>apps.kruise.io/inplace-update-state
,inplace-update-grace
=>apps.kruise.io/inplace-update-grace
. - Fix
maxSurge
calculation when partition > replicas.
UnitedDeployment
- Support Deployment as template in UnitedDeployment.
Advanced StatefulSet
- Support lifecycle hook for in-place update and pre-delete.
BroadcastJob
- Add PodFitsResources predicates.
- Add
--assign-bcj-pods-by-scheduler
flag to control whether to use scheduler to assign BroadcastJob's Pods.
Others
- Add feature-gate to replace the CUSTOM_RESOURCE_ENABLE env.
- Add GetScale/UpdateScale into clientsets for scalable resources.
- Support multi-platform build in Makefile.
- Set different user-agent for controllers.
Thanks to all our contributors! 😊