Analysis updated 2026-05-18
Automatically reduce over-allocated CPU and memory across all workloads in a Kubernetes cluster
Right-size running pod resources without restarts using Kubernetes in-place resize on version 1.35 and later
Track per-workload resource history and apply it automatically when new pods start
| tight-line/ballast | home-operations/flate | srijanmukherjee/gomupdf | |
|---|---|---|---|
| Stars | 16 | 16 | 16 |
| Language | Go | Go | Go |
| Setup difficulty | hard | easy | moderate |
| Complexity | 4/5 | 2/5 | 3/5 |
| Audience | ops devops | ops devops | developer |
Figures from each repo's GitHub metadata at analysis time.
Requires Kubernetes 1.35+ for in-place resize, cert-manager pre-installed, and a Redis-compatible store.
Ballast is a Kubernetes operator written in Go that automatically adjusts how much CPU and memory each workload in a cluster is allowed to request and use, based on what those workloads have actually consumed over time. The problem it addresses is straightforward: when you configure a Kubernetes application, you typically specify how much CPU and memory it should be allocated. In practice, most applications are allocated far more than they use, which means the cluster appears full on paper while remaining mostly idle in reality. Ballast watches real usage, builds a history for each workload, and then applies that history in two ways. First, it adjusts resource requests when a new pod starts, using an admission webhook. Second, for clusters running Kubernetes 1.35 or later, it can resize resources on already-running pods without restarting them, using the in-place pod resize feature added in that version. Workloads opt in through annotations on their pod template specs. A single annotation called autoresize enables measurement, admission patching, and live resizing together. Nothing changes on a workload until it opts in and until enough history has accumulated to meet a readiness threshold. Ballast groups pods into profiles using a configurable set of pod label keys. By default it groups by application name and component. If you run forty separate development environments running the same application, they all contribute measurements to the same profile, producing a well-sampled history instead of forty sparse ones. Installation is done with Helm. The chart ships with a bundled Redis-compatible store for history (Valkey) and requires cert-manager to already be in the cluster. The README covers edge cases such as mixed environments and warns that changing the identity label configuration wipes existing history. This is a tool for platform engineers and DevOps teams managing multi-workload Kubernetes clusters who want to reduce resource waste without manually tuning each deployment.
Ballast is a Kubernetes operator that watches actual CPU and memory usage per workload and automatically right-sizes resource requests to cut cluster waste.
Mainly Go. The stack also includes Go, Kubernetes, Helm.
Setup difficulty is rated hard, with roughly 1day+ to a first successful run.
Mainly ops devops.
This repo across BitVibe Labs
Verify against the repo before relying on details.