v0.8.0
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.