MC-Kube is a Kubernetes operator designed for mixed-criticality real-time workloads (e.g., autonomous driving, industrial IoT). It overcomes the limitations of the default CFS scheduler by integrating a hierarchical-CBS kernel patch and eBPF-based overrun detection, ensuring strong temporal guarantees with minimal overhead.
📄 Paper: SDV에서의 Mixed-Criticality Task Orchestrator (Submitted to HUFS, 2025)
- ⚡ Zero-Overhead Monitoring: eBPF-based detection with 246× lower latency (299µs) compared to API polling.
- 🛡️ Strong Isolation: Container-level
SCHED_DEADLINEsupport via custom Kernel patches. - 🧠 Adaptive Orchestration:
- Runtime Escalation: Automatically boosts runtime (
runtime_low→runtime_hi) upon deadline miss. - Smart Preemption: Migrates high-criticality tasks to secure cores by preempting lower-priority pods.
- Runtime Escalation: Automatically boosts runtime (
- 📈 Proven Performance: Achieved 86% reduction in deadline misses in high-load scenarios.
- Kubernetes v1.34+ Cluster
- Linux Kernel v6.13+ with hierarchical-CBS patch (REQUIRED)
kubectl,docker
Deploy the MC-Kube operator and CRDs in one go:
# 1. Install CRDs & Operator
make install
make deploy IMG=ghcr.io/hufs-ese-lab/mc-kube:v1
# 2. Check Deployment
kubectl get pods -n mc-kube-systemApply a sample mixed-criticality workload:
kubectl apply -k config/samples/To verify the real-time configuration applied to the container:
kubectl exec <pod-name> -- cat /sys/fs/cgroup/cpu.rt_multi_runtime_usOur experiments show that MC-Kube significantly outperforms standard kubernetes under heavy loads.
Reproduce the experiments:
# Run scenarios
kubectl apply -f config/samples/test-preemption-scenario.yaml
# Monitor status
kubectl get mckubes -o wideThis project is licensed under the Apache 2.0 License.
Research Group: ESE Lab, Hankuk University of Foreign Studies
