This repository extends the Kubernetes scheduling pipeline with custom plugins designed for service placement in edge-cloud infrastructures. Instead of treating all nodes as equivalent, it introduces decision logic that accounts for degraded performance, runtime node metrics, service dependencies, and realtime constraints.
The project is packaged to run as a dedicated secondary scheduler through Helm, making it practical to evaluate advanced policies without replacing the cluster’s default scheduler behavior. In applied deployments, this allows critical and latency-sensitive workloads to be placed with more context-aware criteria, particularly in smart-city and distributed computing environments.
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}}
-
manifests/install/charts/as-a-second-scheduler/templates/rbac.yaml
- List of API resources that the component is allowed to access
-
pkg/degradedperformance/degradedperformance.go
- Main logic for the DegradedPerformance plugin
-
pkg/nodemetrics/nodemetrics.go
- Main logic for the NodeMetrics plugin
-
pkg/dependencies/dependencies.go
- Main logic for the Dependencies plugin
-
pkg/realtime/realtime.go
- Main logic for the Realtime plugin
-
manifests/install/charts/as-a-second-scheduler/templates/configmap.yaml
- Configuration of arguments to the Scheduler service
-
manifests/install/charts/as-a-second-scheduler/values.yaml
- Configuration of plugins to the Scheduler service
-
cmd/scheduler/main.go
- Instantiation of the various plugins
- 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- Deploy the scheduler to the cluster for the first time
helm install scheduler-plugins manifests/install/charts/as-a-second-scheduler/- Update existing deployments of the scheduler
helm upgrade scheduler-plugins manifests/install/charts/as-a-second-scheduler/