/global-resource-scheduler

Arktos for large-scale cloud platform

Primary LanguageGoApache License 2.0Apache-2.0

Global Scheduler

Go Report Card LICENSE

What Global Scheduler is

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.

Key Features of Global Scheduler

Large Scalability

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.

Low Scheduling Latency

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.

Intelligent Scheduling Algorithm

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

High Resource Utilization

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.

Application Aware Scheduling

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

Build Global Scheduler

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

Run Global Scheduler

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

Documents and Support

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.