Skip to content

v0.8.0

Compare
Choose a tag to compare
@adrienjt adrienjt released this 22 Apr 08:00
· 269 commits to master since this release

This release removes the central scheduler, replaced by a decentralized algorithm creating candidate pods in all targets (of which only one becomes the proxy pod's delegate). See the proposal for details.

New Features

  • Advanced scheduling: all Kubernetes standard scheduling constraints are now respected, not just node selectors, but affinities, etc., because the candidate scheduler uses the Kubernetes scheduling framework.
  • There's now one virtual node per target, making it possible to drain clusters, e.g., for blue/green cluster upgrades.
  • Delegate pods are now controlled by intermediate pod chaperons. This was a technical requirement of the new scheduling algorithm, with the added benefit that if a delegate pod dies (e.g., is evicted) while its cluster is offline, a new pod will be created to replace it.

Breaking Changes

  • Invitations have been removed. The user is responsible for creating service accounts for sources in target clusters. Only the multicluster-scheduler-source cluster role is provided, which can be bound to service accounts with cluster-scoped or namespaced role bindings.
  • You can no longer enforce placement with the multicluster.admiralty.io/clustername annotation. Use a more idiomatic node selector instead.

Internals

  • We've started internalizing controller runtime logic (for the new feedback and pod chaperon controllers), progressively decoupling multicluster-scheduler from controller-runtime and multicluster-controller, to be more agile.