Spread scheduling
Spread scheduling enables user to create a kubernetes resource once, in the Nova Control Plane, and have it run in the multiple workload clusters.
It has a two different modes (.spec.spreadConstraints.spreadMode
): Divide and Duplicate. Say you have a Namespace, ServiceAccount and a Deployment that you want to spread.
Your Deployment runs 10 pod replicas. In Duplicate mode, each selected workload cluster will run 10 replicas of your Deployment.
In Divide mode, you can specify the % split, using .spec.spreadConstraints.percentageSplit
field to configure the desired behavior, e.g. workload clusters A and B running 3 replicas, and workload cluster C running 4 replicas.
You can also specify overrides per cluster. This is useful if you have a kubernetes object which is in general almost the same in each workload cluster, but you need to customize a few things based on cluster.
In our example, imagine that you need to apply service-mesh label on the Namespace object, describing the network and the value of this label has to be different for each cluster.
You can use .spec.spreadConstraints.overrides
to achieve it. It is possible to add overrides both in Divide and Duplicate mode.