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.
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}}
- 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
- 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- 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