Kor: The Open-Source Kubernetes Cleanup Tool (and How KorPro Extends It)
Kor is an open-source CLI that finds unused Kubernetes resources in your cluster. Learn how to install and use Kor, what it detects, and how KorPro extends it to multi-cloud with cost analysis.
Kor is a free, open-source CLI tool that finds unused resources in Kubernetes clusters. It scans for orphaned ConfigMaps, Secrets, Services, PVCs, Deployments, and more — giving DevOps teams a clear list of what can be safely cleaned up. KorPro is the enterprise platform built on top of Kor, adding multi-cloud support, cost analysis, and a web interface.
What is Kor?
Kor is an open-source Kubernetes resource cleanup tool. It connects to your cluster using your existing kubeconfig and scans for resources that are not referenced by any active workload. The output is a simple list of unused resources organized by type and Namespace.
Kor was created to solve a problem that every Kubernetes team encounters: clusters accumulate unused resources over time. Developers deploy ConfigMaps and Secrets during development, change direction, and forget to clean up. Services get created for Deployments that no longer exist. PersistentVolumeClaims remain bound to volumes that nothing uses. Over weeks and months, this waste adds up — consuming etcd storage, cluttering kubectl get output, and in the case of PVCs and LoadBalancers, costing real money.
Kor is the detection layer. It tells you what is unused. What you do with that information is up to you.
What Kor Detects
Kor scans for the following unused resource types:
- ConfigMaps — not referenced by any Pod, Deployment, StatefulSet, DaemonSet, or Job
- Secrets — not mounted or referenced by any active workload
- Services — not targeting any running Pods
- ServiceAccounts — not used by any Pod or ClusterRoleBinding
- PersistentVolumeClaims — not mounted by any Pod
- Deployments — with zero replicas or no active ReplicaSet
- StatefulSets — with zero replicas
- Roles and RoleBindings — not referenced by any active binding or subject
- HPAs — targeting Deployments or StatefulSets that no longer exist
- PDBs — targeting selectors with no matching Pods
- Ingresses — not routing to any existing Service
This covers the most common sources of Kubernetes waste. Each resource type is checked independently, and the results are grouped by Namespace for easy review.
Installing Kor
Kor is available through several installation methods.
Homebrew (macOS/Linux)
bashbrew install kor
Download from GitHub
Visit the releases page and download the binary for your platform. Place it in your PATH.
Run as a Container
bashdocker run --rm -v ~/.kube/config:/root/.kube/config ghcr.io/yonahd/kor all
Verify Installation
bashkor version
Kor uses your existing kubeconfig for cluster access. No additional credentials or API keys are needed.
Using Kor
Scan All Resource Types
The simplest command scans for all supported unused resource types across all Namespaces:
bashkor all
This outputs a list of unused resources grouped by type and Namespace. It is the fastest way to get a complete picture of cluster waste.
Scan a Specific Resource Type
To focus on a single resource type:
bashkor configmap kor secret kor service kor pvc kor deployment kor ingress
Scan a Specific Namespace
To limit the scan to one Namespace:
bashkor all -n production
Output Formats
Kor supports multiple output formats for integration with other tools:
bashkor all -o json kor all -o yaml kor all -o table
JSON output is useful for piping results into scripts, dashboards, or alerting systems.
Exclude Resources
If certain resources are intentionally unused (such as a standby ConfigMap), you can exclude them using labels:
bashkubectl label configmap my-standby-config kor/used=true
Kor will skip any resource with the kor/used=true label.
Where Kor Fits in Your Workflow
Kor is most valuable as a regular hygiene check. Teams that run it frequently catch waste before it accumulates. Common integration points include:
- CI/CD pipelines — Run
kor all -o jsonafter each deployment and fail the pipeline or post a Slack alert if new orphaned resources are detected - Scheduled CronJobs — Deploy Kor as a Kubernetes CronJob that scans your cluster daily and reports findings to a monitoring dashboard
- Pull request reviews — Include Kor scan results in pre-merge checks to ensure that infrastructure changes clean up after themselves
- Sprint cleanup — Run Kor at the start of each sprint to identify and remove waste accumulated during the previous cycle
For teams practicing FinOps, Kor is the first step in the optimization loop: discover what is unused, quantify the impact, and clean it up.
From Kor to KorPro: What Changes at Scale
Kor is excellent for a single cluster. It is fast, free, and requires nothing more than CLI access. But organizations running Kubernetes across multiple clusters and cloud providers hit limitations that Kor alone cannot solve:
Multi-Cloud Visibility
Kor scans one cluster at a time. If you run 5 GKE clusters, 3 EKS clusters, and 2 AKS clusters, you need to run Kor against each one individually and aggregate the results yourself. KorPro connects to all your clusters automatically through a lightweight, read-only Inspector agent and presents a unified view across every cluster and cloud provider.
Cost Analysis
Kor tells you what is unused. It does not tell you how much that waste costs. A single orphaned PVC might cost $5/month or $500/month depending on the storage class and size. KorPro estimates the cost of every unused resource, giving you a dollar figure to prioritize cleanup efforts and justify the work to management.
Cascading Orphan Detection
When a Deployment is unused, the ConfigMaps, Secrets, and Services it references may also be unused — but only because of the parent. Kor detects each resource independently. KorPro maps the dependency chain and identifies cascading orphans: resources that become safe to remove when their parent workload is cleaned up. This finds waste that surface-level scans miss.
Web Dashboard and REST API
Kor is a CLI tool. KorPro provides a web dashboard for browsing findings, tracking trends over time, and sharing reports with non-technical stakeholders. The REST API enables integration with existing tooling — ITSM platforms, cost management dashboards, and custom automation.
Confidence Scoring
Deleting resources in production requires confidence. KorPro adds a confidence score to each finding based on multiple verification checks, usage patterns, and dependency analysis. This reduces the risk of accidentally removing something that is still needed through an indirect reference.
When to Use Kor vs KorPro
| Kor | KorPro | |
|---|---|---|
| Clusters | Single cluster | Unlimited clusters across GKE, EKS, AKS |
| Cost | Free, open-source | Free tier available, paid plans for enterprise |
| Interface | CLI | Web dashboard + REST API + CLI |
| Cost analysis | No | Yes — per-resource cost estimates |
| Cascading detection | No | Yes — dependency-aware cleanup |
| Installation | Local binary | Lightweight read-only agent per cluster |
| Best for | Individual developers, small teams, homelab practice | Platform teams, multi-cloud enterprises, FinOps |
If you are running a single cluster or practicing in a homelab, Kor gives you everything you need. If you are managing Kubernetes at scale across cloud providers and need cost visibility, start with Kor to validate the concept, then upgrade to KorPro when you are ready.
Getting Started
Try Kor Now
bashbrew install kor kor all
Review the output, clean up what is safe, and run it again. That loop is the foundation of Kubernetes hygiene.
Try KorPro
Create a free account — no credit card required. Install the Inspector agent with a single Helm command and see your first results in under 5 minutes.
Keep Your Clusters Clean
Whether you start with Kor or KorPro, the goal is the same: find what is unused, understand the impact, and clean it up safely. Get started with KorPro for multi-cloud visibility and cost analysis, or contact our team to discuss your Kubernetes optimization strategy.
Ready to Clean Up Your Clusters?
KorPro automatically detects unused resources, orphaned secrets, and wasted spend across all your Kubernetes clusters. Start optimizing in minutes.
Related Articles
Extended Kubernetes Support: How Kor Pro Helps Teams Reduce Risk, Optimize Cost, and Modernize Safely
Extended Kubernetes support helps teams manage aging clusters safely. Learn how Kor Pro improves visibility into workloads, pods, ingress, and cost to reduce risk and plan modernization.
Kubernetes End of Life and Extended Support: What Happens When Your Version Expires [2026]
Kubernetes versions lose support faster than most teams realize. Learn the release cycle, what extended support means on EKS, GKE, and AKS, and how to plan upgrades before your cluster becomes a liability.
How to Find Orphaned Kubernetes Resources That Are Still Costing You Money
Orphaned Services, PVCs, ConfigMaps, and Secrets silently inflate your cloud bill. This step-by-step audit guide shows you how to find them, calculate the cost, and safely remove them.
Written by
KorPro Team