A Deep Reinforcement Learning enhanced Kubernetes Scheduler for Microservice-based System
scheduler/
: The source code of kube-scheduler for Kubernetes (version 1.23.4). The DRS scheduler is in registed in scheduler/framework/plugins/dqn/dqn.go
deploy/
:
apps/
: the application configure file and deploy script.
The docker images of the applications in available on DockerHub.
Application | Type | Description | Docker Image |
---|---|---|---|
Video Scale | CPU-intensive | Scale the video to a certain size with ffmpeg | jolyonjian/apps:cpu-1.0 |
Transmission | Network-intensive | Transfer data of a certain size to the server | jolyonjian/apps:net-1.0 |
Data Write | IO-intensive | Read a file on the disk and write a copy | jolyonjian/apps:io-1.0 |
scripts/
: Scripts for cluster creation, initialization, deletion, etc.drs-scheduler/
: DRS scheduler runs on the master node of the k8s clusterdrs-monitor/
: DRS monitor runs on the worker node of the k8s cluster
# Configure go environment
$ git clone -b v1.23.4 https://github.com/kubernetes/kubernetes.git
$ mv ./kubernetes
$ git clone https://github.com/JolyonJian/DRS $ cd DRS
$ mv ./scheduler
$ make cmd/kube-scheduler
2. Initalize the Kubernetes cluster.
$ cd
$ kubeadm join
$ cd
3. Start the DRS scheduler and DRS the monitor.
$ cd
$ python dqn.py
$ cd
$ ./monitor.sh
4. Deploy applications to the cluster.
$ cd
$ ./apply.sh
## Contact
The link of our paper (Under Review): [https://www.authorea.com/doi/full/10.22541/au.167285897.72278925](https://www.authorea.com/doi/full/10.22541/au.167285897.72278925)
If you have any questions, please contact us.
Zhaolong Jian: jianzhaolong@mail.nankai.edu.cn