Global Scheduler is an open source large scale cloud resource orchestration and scheduling platform. It breaks resource boundary, extends resource limitation, and optimizes resource utilization among cloud data centers and edge sites. It has a global view of all the DCs' available resource capacity and edge sites' available resource capacity, and intelligently schedules VMs/Containers on a DC/edge site based on traffic patterns and optimal global resource utilization. It is evolved from the open source Kubernetes v1.15 codebase with some fundamental redesign of the scheduler.
Global Scheduler aims to address key scheduling challenges of compute units (e.g. VM and containers) across a large number of DC clouds and edge clouds---large scalability, low scheduling latency, global resource sharing, high resource utilization, application-performance-aware, etc.
The following graph is the global resource scheduler high level architecture.
Global Scheduler achieves a scalable architecture by partitioning system components, such as API Server, storage, scheduler, etc. It achieves large scalability through an end-to-end dynamic geolocation and resource profile-based partition scheme which enables multiple schedulers running in a real concurrent mode. The eventual goal of Global Scheduler is to support 10K clusters with a single cross-AZ control plane.
Global Scheduler achieves low shceduling latency through the use of lock-free concurrent scheduling design. It supports full parallelism without any inter-scheduler head of line blocking. All the Schedulers operate completely in parallel and do not have to wait for each other. Each scheduler has its own local cache for fast information retrieval.
The following graph shows the performance improvement over the latency metrix. For more details, please refer to the performance test result.
Global Scheduler implements a multi-dimension optimization model based scheduling algorithm. Its weight based scoring mechanism allows flexible scheduling policy. The scheudling algorithm design allows easy extension of more dimensions in the future
Global Scheduler achieves high resource utitlization through global view of resources across all the DCs and edge sites as well as a scheduling algorithm that considers resource equivalance which avoids depletion of one type of resource while leaving other types of resources wasted.
The Global Scheduler Monitors each application’s input flow characteristics and automatically scale out/in VMs/Containers or migrate the hosting VMs/Containers to a better geo-location to meet the application QOS requirement
To build Global Scheduler, you just need to clone the repo and run "make":
Note: you need to have a working Go 1.12 environment. Go 1.13 is not supported yet.
mkdir -p $GOPATH/src/github.com
cd $GOPATH/src/github.com
git clone https://github.com/futurewei-cloud/global-resource-scheduler
cd global-resource-scheduler
make
To run a single-node Global Scheduler cluster in your local development box:
cd $GOPATH/src/github.com/global-resource-scheduler
hack/global-scheduler-up.sh
The design document folder contains the detailed design of already implemented features, and also some thoughts for planned features.
The user guide folder provides information about these features from users' perspective.
To report a problem, please create an issue in the project repo.
To ask a question, here is the invitation to join Arktos slack channels. You can also post in the email group, or create an issue of question type in the repo.