3.0 KiB
Kruise 2019 Q3 Roadmap
By the end of October, we plan to enhance the existing workload controllers with new features based on our original development plan and the feedbacks from the users. We also plan to release a few new workload controllers!
Terminology
M# represents the milestone starting from M1. Each milestone corresponds to a three-four weeks release cycle. M1 is expected to be released by the end of July 2019.
Enhancements
SidecarSet
-
[M1] Rolling Upgrade: Support rolling upgrading the sidecar containers for matched Pods if the sidecar container image is the only updated component, i.e., the upgrade can be done via "InPlaceUpgrade" strategy. In other cases where Pod recreation is needed, SidecarSet will not proactively delete the affecting Pods. Instead, it "lazily" relies on user to trigger Pod workload upgrade to recreate the Pods. The new version of sidecar containers will be injected during Pod creation. The rolling upgrade is done in a sequential manner, which means
MaxUnavailableis equal to one. -
[M1] Paused Rollout: User can pause the current rollout process to avoid potential conflicts with other controllers by setting the
Pausedflag. The rollout can be resumed by settingPausedto false. -
[M2] Selective Upgrade: An upgrade Pod selector is added. The new sidecar container version will only be applied to the Pods that match the upgrade selector.
-
[M2] Parallel Upgrade: Support
MaxUnavailablefeature, which allows upgrading sidecar containers for multiple Pods simultaneously.
Advanced StatefulSet
-
[M1] Paused Rollout: If the StatefulSet rollout takes a long time due to large number of replicas, a
Pausedflag is introduced to allow user to pause the current rollout process. The rollout can be resumed by setting thePausedflag to false. -
[M2] Auto Remediation: When creating new Pods in scaling or rollout workflow, it is possible that a created Pod cannot reach
Readystate due to certain node problems. For example, node misconfiguration may cause constant failures on pulling images or starting the containers.AutoRemediationflag enables controller to delete a stuck pending Pod, and create an SchedPatch CRD which injects a Pod-to-node anti-affinity rule for all new Pods created by this controller. -
[M2] Condition Report: Leverage the
StatefulSetConditionTypeAPI to report the StatefulSet condition based on the scaling or roll out results.
New Controller
SchedPatch
- [M2] This controller implements a Pod creation mutating webhook that adds auxiliary scheduling rules for Pods created by a target workload. The purpose is to change the Pod specification without modifying the target workload's Pod template, hence avoiding rolling out all existing Pods, in order to accommodate the new scheduling requirements. The auxiliary scheduling rules specified in the CRD include affinity, tolerations and node selectors. The CRD status reports the changed Pods for record.
-- TBD --