Cloud Cost Optimization

Kubernetes Cost Optimization: A 12-Step Audit That Recovers 25–40% Routinely

6 min read

EKS, GKE, and AKS bills consistently surprise enterprises. The same 12-step audit process recovers 25–40% routinely.

  1. 01Install KubeCost or OpenCost

    Without per-namespace cost visibility, audits are guesses.

  2. 02Run kubectl top across all namespaces

    Find the gap between requested and actual usage.

  3. 03Right-size requests + limits with VPA recommendations

    Vertical Pod Autoscaler in recommendation mode for 7 days first.

  4. 04Switch to Karpenter (or Cluster Autoscaler v2)

    Bin-packing is dramatically more efficient.

  5. 05Adopt spot for stateless workloads via topology spread

    60-90% savings on those workloads.

  6. 06Move PVs to gp3 from gp2

    ~20% storage savings, faster IO.

  7. 07Audit LoadBalancer services

    One ALB per environment via ingress controllers, not per-service.

  8. 08Tighten log levels

    DEBUG in prod is the silent #1 cost in CloudWatch Logs.

  9. 09Review HPA target utilization

    Default 80% is wasteful. 65–70% for compute, 75–80% for IO-bound.

  10. 10Run a Pod Disruption Budget audit

    Misconfigured PDBs prevent node consolidation.

  11. 11Enforce resource quotas at namespace level

    Stop noisy-neighbor inflation.

  12. 12Set up weekly cost reports per namespace + Slack alerts

    Ownership is the only thing that keeps savings sticky.

5-Lever FinOps FrameworkFrom audit to optimization — week-by-week01RightsizingEC2 + RDSnWeek 1–202CommitmentsSavings PlansnWeek 303Idle AuditEBS, EIPs, NATnWeek 3–404Data TransferVPC EndpointsnWeek 5–705Cost AllocationPer-customernWeek 8–10Result: 38% cost reduction · $420K annualized savings · 99.97% uptimeReal engagement · B2B SaaS · 90 days
The 5-lever framework Ohveda used to cut a B2B SaaS client’s AWS bill by 38% in 90 days.

Karpenter Provisioner Example

apiVersion: karpenter.sh/v1
kind: NodePool
metadata:
  name: spot-pool
spec:
  template:
    spec:
      requirements:
        - key: kubernetes.io/arch
          operator: In
          values: ["arm64", "amd64"]
        - key: karpenter.sh/capacity-type
          operator: In
          values: ["spot", "on-demand"]
        - key: karpenter.k8s.aws/instance-category
          operator: In
          values: ["c", "m", "r"]
      nodeClassRef:
        name: default
  limits:
    cpu: 1000
  disruption:
    consolidationPolicy: WhenEmptyOrUnderutilized
    consolidateAfter: 30s

Ready to optimize your cloud or AI footprint?

Book a free 30-minute architecture review. We will deliver a written cost-and-architecture audit within 48 hours.

Book a free architecture review · sales@ohveda.com

Need help with Kubernetes cost optimization?

Ohveda runs free 30-minute architecture reviews. We will identify your top opportunities in writing within 48 hours — at no cost.

Book a Free Architecture Review →