Skip to content
NewFinOps, Kubernetes and AI, on one platform
Book a demo

Savings

Savings priced against your own bill

KubeOn measures what each workload uses and prices the difference with your billed rates. Every finding shows the rule that found it and a monthly saving, and turns into a change proposal your team can review.

Spot planner

Spot candidates backed by evidence, never a static discount

The Spot planner picks workloads ready to move, with their prices and savings from real data. On AWS it shows interruption risk per instance type from the public Spot Instance Advisor, and it keeps on-demand as the fallback. The candidates you select become reviewed proposals.

  • Prices from real quotes, not assumed discounts
  • On-demand fallback kept through Karpenter
  • Selected candidates become proposals

Commitments

What you committed to, and when it ends

KubeOn reads AWS Savings Plans and Reserved Instances, Google Cloud committed use discounts, and Azure reservations and savings plans, so renewals and coverage gaps show before the bill reflects them. A node change never leaves family-bound commitments paid for and unused.

  • Coverage and expiry by commitment
  • Read-only cloud APIs
  • Node proposals respect what you already bought

Managed databases

Database savings the bill can prove

From the billing export, KubeOn finds steady on-demand database spend you could reserve, previous-generation instance classes, gp2 storage and Multi-AZ outside production, for RDS and Aurora, Cloud SQL, Azure SQL, Cosmos DB, DynamoDB and other managed databases.

  • No database access needed
  • Reservations sized to the 30-day floor
  • Older classes and gp2 storage

Container requests

Requests sized from p95 usage, with headroom and a floor

For each workload, KubeOn takes p95 CPU and memory per pod over 7 days, from Prometheus when it is configured and from the agent's hourly samples when it is not. Requests under 30% utilized are flagged, and the recommendation is p95 plus 20%, never below 0.025 cores or 0.25 GB.

  • p95 over 7 days, per pod, per container group
  • 20% headroom, with floors so small services stay schedulable
  • Workloads at 2% or less are flagged as abandoned instead

Node groups and families

Smaller nodes when both resources sit idle, a new family when one does

Node groups are sized from 14 days of peak hourly requests with 20% headroom. When 40% or more of both CPU and memory is spare, KubeOn proposes smaller nodes. When 50% or more of one resource is spare, it proposes a different family, with the saving capped at the typical price gap of one family step.

  • Peak requests, not averages, so the sizing survives your busiest hour
  • Karpenter NodePool snippets or managed node group steps
  • Works for EC2, Azure VM and Compute Engine node pools
Proposed NodePool change
# Use smaller nodes in prod-use1-a / generalapiVersion: karpenter.sh/v1kind: NodePoolmetadata:  name: generalspec:  template:    spec:      requirements:        - key: karpenter.k8s.aws/instance-category          operator: In          values: ["m"]        - key: karpenter.k8s.aws/instance-cpu          operator: Lt          values: ["9"]   # was 16 vCPU; peak requests fit in 8

Volumes and storage

Orphaned, released and oversized volumes, checked before deletion

A volume that keeps billing a day after its PersistentVolume disappeared is orphaned. A PV left in Released or Available that still bills is reclaimable. A volume whose peak use over 14 days is far below its size is oversized. Volumes without a PV or a cluster tag are shown as an upper bound until checked.

  • Snapshot-then-delete scripts that touch only available volumes
  • Over-provisioned PVCs sized to peak times 1.5, never below 1 GiB
  • File system volumes estimated as an even share of their file system

Off-hours schedules

Dev and test namespaces that sleep at night

Namespaces in dev, test and QA clusters that cost $200 a month or more get an off-hours proposal: scaled down outside 07:00 to 20:00 on weekdays. The saving is estimated on the 103 hours a week they would be idle.

  • kube-downscaler annotations, ready to commit
  • Only non-production environments
  • Up to 20 schedule proposals at a time, largest first
Off-hours schedule
# Generated for dev-use2 / catalog ($1,410/month, dev environment)apiVersion: v1kind: Namespacemetadata:  name: catalog  annotations:    downscaler/uptime: Mon-Fri 07:00-20:00 UTC

Where the Kubernetes savings are

83%

of container cost is tied to idle resources

Datadog, State of Cloud Costs 2024
29%

of container cost is requested by pods but never used

Datadog, State of Cloud Costs 2024
10%

off the monthly bill: $21,842 a month found at our sample company

Sample company, not a customer result

Savings rules

Every finding, with the rule behind it

Savings are monthly, recomputed every 30 minutes, and ranked high above $100 a month and medium above $10.

FindingRule
Right-size container requestsp95 usage over 7 days, flagged under 30% of request, recommended max(p95 x 1.2, 0.025 cores / 0.25 GB)
Right-size node groupsPeak hourly requests over 14 days x 1.2; oversized when 40% or more of both CPU and memory is spare
Change node family50% or more of one resource spare; saving capped at the typical price gap of one family step
Abandoned workloadsCPU at or below 2% of request over 14 days; the whole cost counts as recoverable
Orphaned volumesStill billing 24 hours or more after the PV disappeared, from a cluster that is still reporting
Released volumesPV in Released, Available or Failed with a backing volume that still bills
Over-provisioned volumesAt least 24 hourly samples over 14 days; recommends max(peak x 1.5, 1 GiB) when 30% or more is reclaimable
Off-hours schedulesDev, test and QA namespaces at $200 or more a month, scaled down outside weekday working hours
GPUGPU nodes and GPU requests with low utilization, priced at the GPU node rate
Possible orphansBilled every day for 7 days with no PV and no cluster tag; shown as an upper bound, kept out of the total

Savings your engineers can check

Container rightsizing

CPU and memory requests from p95 usage with headroom.

Node sizing

Smaller nodes or a different family from peak requests.

Storage cleanup

Orphaned, released and oversized volumes, priced per month.

Off-hours schedules

Non-production namespaces scaled down at night and weekends.

GPU utilization

Idle and under-used GPU nodes priced at their real rate.

Proposals for every finding

Each saving becomes a reviewable change with a patch.

Savings: your questions answered

Evaluate savings with your team

Bring your platform and FinOps priorities. We will walk through the data, controls and evidence for your evaluation.