Kubectl Resource Plugin
A plugin to access Kubernetes resource requests, limits, and usage.
Install
go get github.com/howardjohn/kubectl-resources
Usage
Plugin to access Kubernetes resource requests, limits, and usage.
Usage:
kubectl-resources [flags]
Flags:
-A, --all-namespaces If present, list the requested object(s) across all namespaces. Namespace in current context is ignored even if specified with --namespace.
-b, --by string column to aggregate on. Default is pod (default "POD")
-c, --color show colors for pods using excessive resources (default true)
-h, --help help for kubectl-resources
-n, --namespace string If present, the namespace scope for this CLI request
-l, --selector string Selector (label query) to filter on, supports '=', '==', and '!='.(e.g. -l key1=value1,key2=value2)
-d, --show-nodes include node names
-v, --verbose show full resource names
-w, --warnings only show resources using excessive resources
Example output:
$ kubectl resources
NAMESPACE POD CPU USE CPU REQ CPU LIM MEM USE MEM REQ MEM LIM
default details-v1 6m 110m 2000m 36Mi 39Mi 1000Mi
default productpage-v1 12m 110m 2000m 71Mi 39Mi 1000Mi
default ratings-v1 5m 110m 2000m 34Mi 39Mi 1000Mi
default reviews-v1 6m 110m 2000m 117Mi 39Mi 1000Mi
default reviews-v2 7m 110m 2000m 106Mi 39Mi 1000Mi
default reviews-v3 6m 110m 2000m 114Mi 39Mi 1000Mi
default shell-f2g7f 4m 20m 2500m 24Mi 164Mi 1465Mi
default shell-p6ggs 5m 20m 2500m 24Mi 164Mi 1465Mi
kubectl resources
will by default shorten pod and node names. This can be disabled with -v
.
In the above example, the details-v1
deployment has just one replica, so only the deployment name is shown.
For shell
, which has multiple replicas, just the replicaset's identifier is shown.
For nodes, only the unique segment of the name is shown.
You can also aggregate info at different levels. By default this is at the pod level, but can also be namespace, node, or container.
For example, to see resource utilization by namespace
$ kubectl resources --by namespace
NAMESPACE CPU USE CPU REQ CPU LIM MEM USE MEM REQ MEM LIM
default 3m 110m 2100m 29Mi 144Mi 1152Mi
istio-system 70m 2140m 14800m 570Mi 3641Mi 8934Mi
kube-system 82m 1831m 3222m 1312Mi 1203Mi 2365Mi
155m 4081m 20122m 1912Mi 4989Mi 12452Mi
Known Issues
While init containers play a role in resource allocation, they are not accounted for in this tool.