Skip to main content
Version: v1.5

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.