Skip to content

polaris-slo-cloud/vela-scheduler

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Vela Scheduler

Vela Scheduler is an orchestrator-independent distributed scheduler for the Edge-to-Cloud continuum. Detailed design and architecture documentation is available here.

The Edge-to-Cloud continuum may span hundreds of thousands of nodes and can be formed of multiple Edge and Cloud clusters, which may be operated by different orchestrators, e.g., one cluster could be managed by Kubernetes and another one by Nomad. Vela Scheduler can be run as an arbitrary number of instances. To be compatible with the Vela Scheduler, each cluster must run the Vela Cluster Agent, which is the only interface needed by the scheduler to interact with the cluster.

Vela Scheduler Workflow Overview

The high-level scheduling workflow of Vela Scheduler is depicted in the diagram above. A user or a system component submits a job to an arbitrary scheduler instance through its Submit Job API, which adds this job to the scheduler’s queue. Once dequeued, the job enters the scheduling pipeline, which begins by obtaining a sample of candidate nodes from every cluster. To this end, the scheduler contacts the Vela Cluster Agent in each cluster and sends it the description of the job to be scheduled. Using the Cluster Agent prevents the scheduler from having to communicate with each node directly. For each node picked by the sampling algorithm, the Cluster Agent performs initial filtering and scoring, i.e., it determines if the node meets the requirements set forth by the received job description and assigns a score to each node that passes filtering to indicates how well it is suited for the job. The list suitable nodes along with their scores is returned to the scheduler. The scheduler may run additional filtering and scoring steps and subsequently chooses the node with the highest score. Finally, the scheduler submits the job to the Cluster Agent that is responsible for the chosen node to deploy the job.

Documentation

The documentation for the Vela Scheduler is available in the docs folder.

Repository Organization

This project is realized in Go 1.19 and relies on Go workspaces to divide code into multiple modules.

Directory Contents
deployment Configuration files for deploying Vela Scheduler and Vela Cluster Agent
docs Documentation files (Work in progress)
go Go workspace containing all Vela Scheduler modules
go/cluster-agent The polaris-cluster-agent executable module
go/context-awareness Context-aware scheduling plugins
go/framework The orchestrator-independent Vela Scheduler framework library that defines the scheduling pipeline and plugin structures.
go/k8s-connector Kubernetes orchestrator connector
go/scheduler Vela Scheduler executable module
testbed Scripts and configurations for setting testbeds for experimenting with Vela Scheduler

About

Orchestrator-independent Distributed Scheduler for the Edge-Cloud continuum

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Shell 57.9%
  • Go 41.1%
  • Other 1.0%