Skip to content

nap-it/descheduler

Repository files navigation

Descheduler for Kubernetes

This repository adapts Kubernetes descheduling behavior to edge-cloud environments where node conditions can change quickly and unpredictably. Instead of relying only on static balancing policies, it introduces strategies that react to degraded nodes and to real scheduling pressure observed in the cluster.

The project combines custom descheduling logic, including BetterNode and DegradedNode strategies, with a modified cluster-capacity simulation flow to estimate placement effects before large-scale changes. In practice, this makes the component useful for experiments and deployments that need more resilient pod redistribution under heterogeneous infrastructure constraints.

Citation

Text format:

R. Rosmaninho, D. Raposo, P. Rito and S. Sargento, "Edge-Cloud Continuum Orchestration of Critical Services: A Smart-City Approach," in IEEE Transactions on Services Computing, vol. 18, no. 3, pp. 1381-1396, May-June 2025, doi: 10.1109/TSC.2025.3568251. keywords: {Resource management;Real-time systems;Computer architecture;Monitoring;Training;Quality of service;Network topology;Load management;5G mobile communication;Topology;Edge computing;smart-city;real-time;Kubernetes;MEC;5G},

BibText format:

@ARTICLE{10994362,
  author={Rosmaninho, Rodrigo and Raposo, Duarte and Rito, Pedro and Sargento, Susana},
  journal={IEEE Transactions on Services Computing}, 
  title={Edge-Cloud Continuum Orchestration of Critical Services: A Smart-City Approach}, 
  year={2025},
  volume={18},
  number={3},
  pages={1381-1396},
  keywords={Resource management;Real-time systems;Computer architecture;Monitoring;Training;Quality of service;Network topology;Load management;5G mobile communication;Topology;Edge computing;smart-city;real-time;Kubernetes;MEC;5G},
  doi={10.1109/TSC.2025.3568251}}

Important files

  • kubernetes/base/rbac.yaml
    • List of API resources that the component is allowed to access
  • kubernetes/base/configmap.yaml
    • Configuration of arguments to the Scheduler service
  • pkg/descheduler/strategies/betternodescore.go
    • High-level logic of the BetterNode plugin
  • pkg/descheduler/strategies/degradednode.go
    • Logic of the DegradedNode plugin
  • pkg/cluster-capacity/framework/simulator.go
    • High-level logic of the modified scheduler simulator

Basic Usage

  1. Build and push docker images
LOCAL_REGISTRY=<registry_url>/scheduler-plugins LOCAL_IMAGE=kube-scheduler:latest make local-image && docker push <registry_url>/scheduler-plugins/kube-scheduler:latest
  1. Run As A Deployment
kubectl create -f kubernetes/base/rbac.yaml
kubectl create -f kubernetes/base/configmap.yaml
kubectl create -f kubernetes/deployment/deployment.yaml

License

Descheduler is under LGPL v3 and GPL v3 licenses.

About

No description, website, or topics provided.

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages