Workload Movement
Nova may move workloads between workload clusters when placement conditions change.
Initial placement is determined through scheduling and placement behavior. Over time, Nova may re-evaluate those decisions and relocate workloads as needed.
When Movement Happens
Workload movement can be triggered by:
- updates to a
SchedulePolicy - changes to eligible workload clusters
- capacity constraints in the current workload cluster
- updates to grouped workloads
- changes to workload annotations
Annotation-based Movement
For annotation-based scheduling, changing the target workload cluster triggers movement.
Before
metadata:
annotations:
nova.elotl.co/cluster: wlc-1
After
metadata:
annotations:
nova.elotl.co/cluster: wlc-2
Nova moves the workload from wlc-1 to wlc-2.
Policy-based Movement
Movement can also occur when a policy changes.
For example, this policy initially allows placement only in us-east-1:
apiVersion: policy.elotl.co/v1alpha1
kind: SchedulePolicy
metadata:
name: app-policy
spec:
resourceSelectors:
labelSelectors:
- matchLabels:
app: demo
clusterSelector:
matchLabels:
nova.elotl.co/cluster.region: "us-east-1"
Changing the selector to us-west-2 changes the eligible workload cluster set:
apiVersion: policy.elotl.co/v1alpha1
kind: SchedulePolicy
metadata:
name: app-policy
spec:
resourceSelectors:
labelSelectors:
- matchLabels:
app: demo
clusterSelector:
matchLabels:
nova.elotl.co/cluster.region: "us-west-2"
If the workload no longer matches its current placement, Nova can move it to a matching workload cluster.
Capacity-based Movement
Nova can also relocate workloads when a workload cluster no longer has enough available capacity for the workload or workload group.
This is especially important for grouped workloads, where all related resources must be placed together.
Example Verification
After movement, workload metadata can show the new target workload cluster:
kubectl --context=nova get deployment demo -o yaml
Example output:
metadata:
labels:
nova.elotl.co/target-cluster: wlc-2
Considerations
- Movement behavior depends on the workload type and Kubernetes semantics.
- Stateful applications may require storage and data movement planning.
- Services, DNS, and traffic routing may need to be updated depending on the application.
- Policy changes should be tested before applying them to production workloads.