Automatic merge from submit-queue. If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>.
Make kubectl explain print the Kind and APIVersion of the resource
**What this PR does / why we need it**:
Kubectl explain currently doesn't print out the Kind and APIversion of the resource being explained. When running `kubectl explain hpa.spec`, for example, there is no way of knowing whether you're looking at the `autoscaling/v1` or the `autoscaling/v2beta1` version.
Also, `kubectl explain` is often used as a reference when writing YAML/JSON object manifests. It allows you to look up everything except the API version. Currently, you either need to know the API Version of a resource by heart or look it up in the online API docs.
This PR fixes both problems by having `kubectl explain` print out the full Kind and APIVersion of the resource it is explaining.
Here are a few examples of the new output:
```
$ kubectl explain deploy
KIND: Deployment
VERSION: extensions/v1beta1
DESCRIPTION:
...
$ kubectl explain hpa.spec
KIND: HorizontalPodAutoscaler
VERSION: autoscaling/v1
RESOURCE: spec <Object>
DESCRIPTION:
...
$ kubectl explain hpa.spec.maxReplicas
KIND: HorizontalPodAutoscaler
VERSION: autoscaling/v1
FIELD: maxReplicas <integer>
DESCRIPTION:
...
$ kubectl explain hpa.spec --recursive
KIND: HorizontalPodAutoscaler
VERSION: autoscaling/v1
RESOURCE: spec <Object>
DESCRIPTION:
behaviour of autoscaler. More info:
https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status.
specification of a horizontal pod autoscaler.
FIELDS:
maxReplicas <integer>
minReplicas <integer>
scaleTargetRef <Object>
apiVersion <string>
kind <string>
name <string>
targetCPUUtilizationPercentage <integer>
```
**Release note**:
```release-note
Kubectl explain now prints out the Kind and API version of the resource being explained
```
kubectl explain ingress.spec.rules.http.paths. is valid
and defaults to kubectl explain ingress.spec.rules.http.paths
Rational: We use kubectl explain by adding fields
(e.g. service, then service.spec, then service.spec.ports ...)
so it's very easy to forget a trailing . at the end. We should
ignore the trailing period and display the result without it.