Printing the status of the Kubernetes resources using fields


Print the fields from the JSON Path

Note: JSON Path can also be read from a file using -o custom-columns-file.

  • JSON Path template is composed of JSONPath expressions enclosed by {}. In addition to the original JSONPath syntax, several capabilities are added:
  • The $ operator is optional (the expression starts from the root object by default).
  • Use "" to quote text inside JSONPath expressions.
  • Use range operator to iterate lists.
  • Use negative slice indices to step backwards through a list. Negative indices do not “wrap around” a list. They are valid as long as -index + listLength >= 0.

JSON Path Symbols Table

Function Description Example Result
text the plain text kind is {.kind} kind is List
@ the current object {@} the same as input
. or [] child operator {.kind} or {[‘kind’]} List
.. recursive descent {} myself e2e
* wildcard. Get all objects {.items[*]} []
[start:end :step] subscript operator {.users[0].name} myself
[,] union operator {.items[*][‘’, ‘status.capacity’]} map[cpu:4] map[cpu:8]
?() filter {.users[?(“e2e”)].user.password} secret
range, end iterate list {range .items[*]}[{}, {.status.capacity}] {end} [, map[cpu:4]] [, map[cpu:8]]
quote interpreted string {range .items[*]}{}{’\t’} {end}

Print the JSON representation of the first Deployment in the list on a single line.

Command I

kubectl get deployment.v1.apps -o=jsonpath='{.items[0]}{"\n"}'


map[apiVersion:apps/v1 kind:Deployment...replicas:1 updatedReplicas:1]]

Print the field for the first Deployment in the list.

Command II

kubectl get deployment.v1.apps -o=jsonpath='{.items[0]}{"\n"}'



For each Deployment, print its field and a newline afterward.

Command III

kubectl get deployment.v1.apps -o=jsonpath='{range .items[*]}{}{"\n"}{end}'



For each Deployment, print its and .status.availableReplicas.

Command IV

kubectl get deployment.v1.apps -o=jsonpath='{range .items[*]}{}{"\t"}{.status.availableReplicas}{"\n"}{end}'


nginx	1
nginx2	1

Print the list of Deployments as single line.

Command V

kubectl get deployment.v1.apps -o=jsonpath='{@}{"\n"}'


map[kind:List apiVersion:v1 metadata:map[selfLink: resourceVersion:] items:[map[apiVersion:apps/v1 kind:Deployment...replicas:1 updatedReplicas:1]]]]

Print each Deployment on a new line.

Command VI

kubectl get deployment.v1.apps -o=jsonpath='{range .items[*]}{@}{"\n"}{end}'



Last modified September 30, 2020: SIG CLI docs - guide changes (d705a6d)