Back to Blog
Cost Optimization

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.

KorPro Team
March 24, 2026
7 min read
KorKubernetesOpen SourceCleanupCost OptimizationDevOpsCLI

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)

bash
brew 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

bash
docker run --rm -v ~/.kube/config:/root/.kube/config ghcr.io/yonahd/kor all

Verify Installation

bash
kor 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:

bash
kor 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:

bash
kor configmap kor secret kor service kor pvc kor deployment kor ingress

Scan a Specific Namespace

To limit the scan to one Namespace:

bash
kor all -n production

Output Formats

Kor supports multiple output formats for integration with other tools:

bash
kor 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:

bash
kubectl 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 json after 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

KorKorPro
ClustersSingle clusterUnlimited clusters across GKE, EKS, AKS
CostFree, open-sourceFree tier available, paid plans for enterprise
InterfaceCLIWeb dashboard + REST API + CLI
Cost analysisNoYes — per-resource cost estimates
Cascading detectionNoYes — dependency-aware cleanup
InstallationLocal binaryLightweight read-only agent per cluster
Best forIndividual developers, small teams, homelab practicePlatform 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

bash
brew 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.

Stop Wasting Kubernetes Resources

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.

Written by

KorPro Team

View All Posts