How to format the output of kubectl describe to JSON

kubectl get command has this flag -o to format the output.

Is there a similar way to format the output of the kubectl describe command?

For example:

kubectl describe -o="jsonpath={...}" pods my-rc

would print a JSON format for the list of pods in my-rc replication controller. But -o is not accepted for the describe command.


Solution 1:

kubectl describe doesn't support -o or equivalent. It's meant to be human-readable rather than script-friendly. You can achieve what you described with kubectl get pods -l <selector_of_your_rc> -o <output_format>, for example:

$ kubectl get pods -l app=guestbook,tier=frontend -o name
pod/frontend-a4kjz
pod/frontend-am1ua
pod/frontend-yz2dq

Solution 2:

In my case, I needed to get the load balancer address from the service. I did it using kubectl get service:

$ kubectl -n <namespace> -ojson get service <service>

{
    "apiVersion": "v1",
    "kind": "Service",
    [...]
    "status": {
        "loadBalancer": {
            "ingress": [
                {
                    "hostname": "internal-xxxxxxxxxxxxxxxxxxxxxxxxxxx-yyyyyyyyyy.us-east-1.elb.amazonaws.com"
                }
     [...]
}