kubectl top

2 min read | by Jordi Prats

If we have the metrics-server installed on our kubernetes cluster, we can use kubectl to see the amount of resources out pods are using and how much loaded are our worker nodes

To check the amount of resources currently in use for each node we can use kubectl top nodes:

$ kubectl top nodes NAME CPU(cores) CPU% MEMORY(bytes) MEMORY% canterbury.pet2cattle.com 254m 2% 1729Mi 5% scopuli.pet2cattle.com 1047m 26% 1203Mi 15% anubis.pet2cattle.com 154m 1% 2729Mi 9% 

We can also get the CPU and memory each pod is currently using by running kubectl top pod. This command is namespaced, so we can either specify the namespace we are interested in:

$ kubectl top pod -n jenkins NAMESPACE NAME CPU(cores) MEMORY(bytes)  jenkins jenkins-0 1m 685Mi  

Or use the -A flag for getting the pod usage for all the namespaces:

$ kubectl top pod -A NAMESPACE NAME CPU(cores) MEMORY(bytes)  jenkins jenkins-0 1m 685Mi  kube-system coredns-f9fd979d6-g2bp8 3m 12Mi  kube-system etcd-minikube 30m 40Mi  kube-system ingress-nginx-controller-558664778f-t64dl 4m 189Mi  kube-system kube-apiserver-minikube 85m 337Mi  kube-system kube-controller-manager-minikube 25m 55Mi  kube-system kube-proxy-6khw8 0m 21Mi  kube-system kube-scheduler-minikube 2m 19Mi  kube-system metrics-server-d9b576748-57k42 0m 15Mi  kube-system storage-provisioner 1m 14Mi  

kubectl top can also sort it's output by CPU usage:

$ kubectl top pod -A --sort-by=cpu NAMESPACE NAME CPU(cores) MEMORY(bytes)  kube-system kube-apiserver-minikube 90m 337Mi  kube-system etcd-minikube 29m 40Mi  kube-system kube-controller-manager-minikube 26m 55Mi  kube-system ingress-nginx-controller-558664778f-t64dl 5m 189Mi  kube-system coredns-f9fd979d6-g2bp8 3m 12Mi  kube-system kube-scheduler-minikube 2m 19Mi  kube-system storage-provisioner 2m 15Mi  jenkins jenkins-0 1m 685Mi  kube-system kube-proxy-6khw8 0m 21Mi  kube-system metrics-server-d9b576748-57k42 0m 15Mi  

Or per memory usage using --sort-by=memory:

$ kubectl top pod -A --sort-by=memory NAMESPACE NAME CPU(cores) MEMORY(bytes)  jenkins jenkins-0 1m 685Mi  kube-system kube-apiserver-minikube 90m 337Mi  kube-system ingress-nginx-controller-558664778f-t64dl 5m 189Mi  kube-system kube-controller-manager-minikube 26m 55Mi  kube-system etcd-minikube 29m 40Mi  kube-system kube-proxy-6khw8 0m 21Mi  kube-system kube-scheduler-minikube 2m 19Mi  kube-system metrics-server-d9b576748-57k42 0m 15Mi  kube-system storage-provisioner 2m 15Mi  kube-system coredns-f9fd979d6-g2bp8 3m 12Mi  

Posted on 04/01/2021