Kor 是一个发现未使用的 Kubernetes 资源的工具。目前,Kor 可以识别并列出未使用的:
- ConfigMaps
- Secrets
- Services
- ServiceAccounts
- Deployments
- StatefulSets
- Roles
- HPAs
- PVCs
- Ingresses
- PDBs
- CRDs
- PVs
- Pods
- Jobs
安装
二进制安装
支持从 release 页面下载二进制文件
Docker
支持从 docker 运行
docker run --rm -i yonahdissen/kor
docker run --rm -i -v "/path/to/.kube/config:/root/.kube/config" yonahdissen/kor all
Helm
在集群中作为 cronjob 运行(带有发送 slack 更新的选项)
helm upgrade -i kor \
--namespace kor \
--create-namespace \
--set cronJob.enabled=true
./charts/kor
在集群中作为部署运行,公开 prometheus 指标
helm upgrade -i kor \
--namespace kor \
--create-namespace \
./charts/kor
用法
Kor 提供了各种子命令来识别和列出未使用的资源。可用的命令有:
- all- 获取指定命名空间或所有命名空间的所有未使用资源。
- configmap- 获取指定命名空间或所有命名空间未使用的 ConfigMap。
- secret- 获取指定命名空间或所有命名空间的未使用的 Secret。
- services- 获取指定命名空间或所有命名空间的未使用服务。
- serviceaccount- 获取指定命名空间或所有命名空间的未使用的 ServiceAccount。
- deployments- 获取指定命名空间或所有命名空间的未使用部署。
- statefulsets- 获取指定命名空间或所有命名空间未使用的 StatefulSet。
- role- 获取指定命名空间或所有命名空间的未使用角色。
- hpa- 获取指定命名空间或所有命名空间的未使用 HPA。
- pods- 获取指定命名空间或所有命名空间未使用的 Pod。
- pvc- 获取指定命名空间或所有命名空间的未使用 PVC。
- pv- 获取集群中未使用的 PV(非命名空间资源)。
- ingress- 获取指定命名空间或所有命名空间的未使用 Ingress。
- pdb- 获取指定命名空间或所有命名空间的未使用 PDB。
- crd- 获取集群中未使用的 CRD(非命名空间资源)。
- jobs- 获取指定命名空间或所有命名空间的未使用作业。
- exporter- 导出 prometheus 指标。
支持的 Flags
--delete Delete unused resources
-l, --exclude-labels string Selector to filter out, Example: --exclude-labels key1=value1,key2=value2.
-e, --exclude-namespaces string Namespaces to be excluded, splited by comma. Example: --exclude-namespace ns1,ns2,ns3. If --include-namespace is set, --exclude-namespaces will be ignored.
-h, --help help for kor
-n, --include-namespaces string Namespaces to run on, splited by comma. Example: --include-namespace ns1,ns2,ns3.
-k, --kubeconfig string Path to kubeconfig file (optional)
--newer-than string The maximum age of the resources to be considered unused. This flag cannot be used together with older-than flag. Example: --newer-than=1h2m
--no-interactive Do not prompt for confirmation when deleting resources. Be careful using this flag!
--older-than string The minimum age of the resources to be considered unused. This flag cannot be used together with newer-than flag. Example: --older-than=1h2m
-o, --output string Output format (table, json or yaml) (default "table")
--slack-auth-token string Slack auth token to send notifications to. --slack-auth-token requires --slack-channel to be set.
--slack-channel string Slack channel to send notifications to. --slack-channel requires --slack-auth-token to be set.
--slack-webhook-url string Slack webhook URL to send notifications to
-v, --verbose Verbose output (print empty namespaces)
删除未使用的资源
如果您想使用 Kor 以交互方式删除资源,您可以运行:
kor configmap --include-namespaces my-namespace --delete
系统将提示您:
Do you want to delete ConfigMap test-configmap in namespace my-namespace? (Y/N):
不提示删除 (⚠️ 谨慎使用):
kor configmap --include-namespaces my-namespace --delete --no-interactive