Skip to content

Kuberina

AlphaAGPLv3Rust solver

Kuberina is a CLI tool that uses maritime stowage optimisation mathematics to generate pre-deployment scheduling blueprints for heterogeneous Kubernetes clusters.

Inspired by how supercomputers solve the stowage planning problem for MSC Irina, it applies combinatorial optimisation to pack pods tightly into non-standard infrastructure — mixed CPU, RAM and GPU — before you run them.

The default kube-scheduler is built to make dynamic decisions in milliseconds. It works by seeing an empty spot and putting something in it. On expensive heterogeneous clusters, that greedy behaviour produces severe resource fragmentation: industry analyses consistently report cloud environments running at only 30–40% CPU utilisation.

Worse, the decision is invisible. When Node 7 hits 98% CPU while Node 12 sits at 15%, nobody can explain why — the reasoning was never written down.

Kuberina does not race the clock. It is a static planning tool: it spends seconds solving a Constraint Satisfaction Problem and a multi-dimensional bin packing problem, and emits an optimal blueprint you can read.

kuberina plan → blueprint.yaml # seconds
# Team review:
"Move Loki to Node 4, it's stressing frontend disk I/O."
"Rejected — Node 4 has Redis, kernel tuning conflict. Add a rule instead."
kuberina plan → blueprint-v2.yaml
# Repeat until consensus.
kubectl apply -f blueprint-final.yaml # Peer-reviewed. Mathematically grounded.

Git brought reviewable diffs to code. Terraform brought plan to infrastructure. Kuberina brings the same to Kubernetes scheduling.

Maritime-inspired CSP engine

Applies the stowage planning model to cloud computing, minimising fragmentation and resource waste.

Heterogeneous-first

Understands the difference between ordinary nodes, GPU nodes (A100, T4) and memory-optimised nodes. Cold cargo always lands in the right socket.

Zero-touch

Runs entirely offline. Never interferes with a running cluster and never slows down kube-apiserver.

Auto-injected constraints

Takes plain configuration as input and writes nodeSelector, podAffinity, podAntiAffinity and tolerations into the output YAML.

On a synthetic benchmark of 186 nodes, 2,714 pods and 5,128 affinity constraints, Kuberina reports 100% scheduling success with zero constraint violations, consolidating onto 152 of 186 nodes — an 18.3% node reduction — at 88.7% average CPU utilisation, with an approximation ratio of α = 1.34 against the LP lower bound, in under 44 seconds.

The full derivation, methodology and Monte Carlo significance testing are in the paper.