Skip to main content
Version: v1.1

Workload Scheduling

Nova enables users to schedule Kubernetes workloads on a fleet of Kubernetes clusters via a number of flexible, scheduling mechanisms.

The two main methods for scheduling workloads are:

  1. Annotation-based scheduling
  2. Policy-based scheduling

Annotation-based scheduling

In Annotation-based scheduling, Kubernetes workloads are scheduled to run on any one of the workload clusters managed by the Nova control plane simply by adding an annotation to the workload manifest.

Here is an example of an annotation that will schedule the corresponding Kubernetes object to a workload cluster named workload-dev-1:

metadata:
annotations:
nova.elotl.co/cluster: workload-dev-1

Policy-based scheduling

In policy-based scheduling, users define a custom Kubernetes resource called the Schedule Policy to specify where Kubernetes resources will be scheduled.

This Schedule Policy enables the user to specify the following aspects about workload placement:

  • Which Kubernetes resources are included to be scheduled by the current policy, and
  • Which subset of workload clusters need to be considered by the current policy

Each of these two aspects can be specified in a number of flexible ways. Kubernetes resources to be matched by a Schedule Policy can be selected using labels or by specifying a namespace or a combination of both. Workload clusters that will be considered by a Schedule policy can be specified as a list with cluster names or via cluster labels. Cluster labels allow users to group clusters. For example, all dev clusters could be considered for certain workloads by adding a env:dev label to all these workload clusters.

Workload Migration

Workload migration in Nova refers to moving Kubernetes resources from one workload cluster to another. Workload migration can be initiated by the user by editing the destination cluster specified in a workload's annotation. It can also be initiated by editing the eligible set of clusters specified in the Schedule Policy. In addition to these direct user-initiated workload migrations, Nova can also automatically choose a different cluster for certain workloads when the current resources needed for a workload exceed a cluster's capacity.