KubeadaptDocsBack to site
Sign inStart free
DocsAPI ReferenceCLI
  • Introduction
  • Getting Started
  • Capabilities
    • Connect a cluster
    • Right-size your workloads
    • Monitor GPU workloads
    • Trace cost to a team
    • Plan a safe spot migration
    • Clean up abandoned workloads
    • Invite teammates and set roles
    • Configure SAML SSO
    • Mint an API key
    • Rotate an API key
Docs homev1How To GuidesClean Up Abandoned Workloads

How-to Guides

Clean up abandoned workloads

Tell forgotten workloads apart from intentionally-idle ones and scale down the ones that are pure cost.


A quarterly cleanup turns up the same three patterns: a side-project that shipped two years ago and still has three replicas, a staging deployment of a service that was retired in February, and a backup tool nobody remembers naming. Kubeadapt's Abandoned Workloads page surfaces all three. This guide is about reading the signals correctly so you delete what's safe and leave what isn't.


1. Open the Abandoned Workloads page

Clusters → pick a cluster → Abandoned Workloads in the cluster nav.

Each row shows a workload Kubeadapt has flagged based on three signals over the last 14 days:

  • Network activity — ingress, egress, and connection rate. A workload nobody talks to is suspicious.
  • Resource efficiency — CPU and memory usage vs. requests. Workloads sitting at < 5% of requested CPU rarely earn their keep.
  • Last active — when activity was last observed.

Kubeadapt computes a status from those signals and assigns each workload to one of three buckets.


2. Read the status column

The status filter at the top splits workloads three ways:

StatusMeans
Safe to scale downBoth signal floors crossed and no recent activity. Most likely abandoned.
Review firstOne signal floor crossed but the other is borderline. Owner conversation required.
Keep runningSignals indicate the workload is doing real work despite low resource usage.

Start with Safe to scale down. Sort by Current Monthly Cost descending — the goal is to free real money, not chase $4 deployments.


3. Distinguish forgotten from intentional

Click a workload to open the detail panel. The signals view shows raw numbers — ingress bytes per hour, CPU usage percentile, last active timestamp. Cross-check against three things you know about your environment:

  • Cron-like patterns. A workload with zero activity on weekdays but heavy spikes on Sundays at 2 a.m. is a scheduled job, not abandoned. Look at the time series, not just the 14-day average.
  • Disaster recovery and standby. Standby replicas of stateful services exist precisely to do nothing until they're needed.
  • Owned by someone who left. The Owner column comes from the owner Kubernetes label (configurable in Settings → Label Keys). If it's empty or points to a former employee, that's a flag — but not by itself a reason to delete.

If a workload is intentionally idle, leave it running. Kubeadapt doesn't track per-workload exceptions in the UI, so the durable answer is to capture intent in a label your team agrees on:

yaml
metadata:
  labels:
    team: data-platform
    owner: ops@example.com
    workload-purpose: dr-standby

A consistent workload-purpose label gives owners a one-line answer to "why is this still here?" the next time someone reviews this page.


4. Scale down or delete the rest

For workloads you've confirmed as abandoned, scale to zero first, watch for 48 hours, then delete. Scaling to zero is reversible; deletion is not.

bash
# Scale to zero, keep the manifest for one weekly cycle
kubectl scale deployment <name> -n <namespace> --replicas=0

# After 48-72 hours with no escalations, delete
kubectl delete deployment <name> -n <namespace>

For StatefulSets with PVCs, scaling to zero leaves storage costs in place. After deletion, clean up the PVCs separately — the Orphaned Resources page surfaces these once they're detached from any workload.

Warning

Coordinate deletions with the workload owner before running kubectl delete. The Abandoned Workloads page reports signals, not intent. A workload that ran heavy traffic two months ago and goes quiet might be queued behind a launch you don't have visibility into.


5. Confirm the savings

Refresh the page after the 14-day signal window catches up. Deleted workloads disappear; scaled-to-zero workloads remain visible with Current Monthly Cost: $0 until they're removed. Cost Explorer's namespace view shows the cluster-level reduction within a day of the change.


Next steps

  • Abandoned workloads concepts — the signal floors and the methodology behind the status assignment
  • Orphaned resources — PVCs and load balancers left behind after a workload is deleted
  • Right-sizing — for workloads that aren't abandoned but are clearly over-provisioned

Related

  • Abandoned workloads
  • Orphaned resources
  • Right-sizing Guide
PreviousTrace cost to a teamHow-to GuidesNextInvite teammatesHow-to Guides

On this page

  • 1. Open the Abandoned Workloads page
  • 2. Read the status column
  • 3. Distinguish forgotten from intentional
  • 4. Scale down or delete the rest
  • 5. Confirm the savings
  • Next steps
Edit this page
Kubeadapt

Kubernetes FinOps platform. Cost visibility, rightsizing, and capacity planning that pays for itself in 30 days.

Product

  • Cost Monitoring
  • Cost Attribution
  • Workload Rightsizing
  • Recommendations
  • Smart Alerting
  • Best Practices
  • Network Cross-AZ

Resources

  • Documentation
  • Status Page
  • Feature Requests

Company

  • About Us
  • Security
  • Careers
  • Contact

© 2026 Kubeadapt. All rights reserved.

PrivacyTermsSecurity