Sometimes I need to get the number of objects inside Kubernetes cluster(s). Or I need to compare two or more clusters to see the number and age of the objects that get replicated.
kcount
counts Kubernetes objects across namespaces and clusters. It can be
used as CLI tool or as daemon (service) exposing Prometheus metrics.
Count all (supported) kinds of objects in all namespaces and show their age
info. Use cluster configuration from KUBECONFIG
environment variable or
$HOME/.kube/config
.
$ kcount -A -a
Cluster Namespace Label Kind Count Newest Oldest
------- --------- ----- ---- ----- ------ ------
cluster1.example.com <All> configmap 2735 1d4h 37d
cluster1.example.com <All> pod 551 1d4h 10d
cluster1.example.com <All> secret 360 23d 23d
cluster1.example.com <All> service 116 2d4h 137d
cluster1.example.com <All> deployment 78 2d4h 110d
cluster1.example.com <All> ingress 39 33d 123d
-----
3879
Count pods and ingresses with a given label across multiple clusters.
$ kcount -k pod,ingress -l env=prod $HOME/.kube/project/*/*
Cluster Namespace Label Kind Count
------- --------- ----- ---- -----
cluster1.example.com ns1 env=prod pod 68
cluster2.example.com ns1 env=prod pod 68
cluster3.example.com ns1 env=prod pod 42
cluster1.example.com ns1 env=prod ingress 34
cluster2.example.com ns1 env=prod ingress 34
cluster3.example.com ns1 env=prod ingress 21
-----
267
Installation
git clone [email protected]:pan-net-security/kcount.git
cd kcount
go install
or download a release binary for your system and architecture.
# Deploy kcount service and deployment
kubectl apply -f k8s-example.yaml
# Check Prometheus metrics
kubectl run alpine --image=alpine --rm -it --restart=Never --command -- \
wget -O- kcount/metrics --timeout 5 | grep objects_