Repository: kubernetes
Issue: `PodExecOptions`, `PodPortForwardOptions` and other *Options resources should contain `ObjectMeta`
Labels: priority/awaiting-more-evidence,sig/api-machinery,kind/feature,triage/accepted

### What would you like to be added?

**Referencing** https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#metadata

Currently some kinds like `PodExecOptions`, `PodPortForwardOptions`, `NodeProxyOptions` do not contain `ObjectMeta`.
```go
type PodExecOptions struct {
	metav1.TypeMeta `json:",inline"`

	// Redirect the standard input stream of the pod for this call.
	// Defaults to false.
	// +optional
	Stdin bool `json:"stdin,omitempty" protobuf:"varint,1,opt,name=stdin"`

	// Redirect the standard output stream of the pod for this call.
	// +optional
	Stdout bool `json:"stdout,omitempty" protobuf:"varint,2,opt,name=stdout"`

	// Redirect the standard error stream of the pod for this call.
	// +optional
	Stderr bool `json:"stderr,omitempty" protobuf:"varint,3,opt,name=stderr"`

	// TTY if true indicates that a tty will be allocated for the exec call.
	// Defaults to false.
	// +optional
	TTY bool `json:"tty,omitempty" protobuf:"varint,4,opt,name=tty"`

	// Container in which to execute the command.
	// Defaults to only container if there is only one container in the pod.
	// +optional
	Container string `json:"container,omitempty" protobuf:"bytes,5,opt,name=container"`

	// Command is the remote command to execute. argv array. Not executed within a shell.
	Command []string `json:"command" protobuf:"bytes,6,rep,name=command"`
}
```

Other subresources like `Eviction` contain `ObjectMeta`:
```go
type Eviction struct {
	metav1.TypeMeta `json:",inline"`

	// ObjectMeta describes the pod that is being evicted.
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`

	// DeleteOptions may be provided
	// +optional
	DeleteOptions *metav1.DeleteOptions `json:"deleteOptions,omitempty" protobuf:"bytes,2,opt,name=deleteOptions"`
}
```

`ObjectMeta` should be added to the kinds mentioned above and kinds similar to them.

### Why is this needed?

This added feature would be really helpful for [Kyverno](https://kyverno.io/). It relies on admission webhooks, Kyverno creates [`AdmissionReport`](https://github.com/kyverno/kyverno/blob/main/api/kyverno/v1alpha2/admission_report_types.go#L54) (CRD) for policies running in `audit` mode.

Admission Reports contain `spec.owner` of type [`metav1.OwnerReference`](https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/types.go#L291). Admission Report is created from data present in the `AdmissionReview`.

`object.metdata.name` and `object.metadata.uid` are not present in the `AdmissionReview` for above mentioned kinds.

`name` can still be sourced from `request.name` but `uid` of the parent object i.e. `Pod` in this case in not present in the `AmdissionReview`:

`AdmissionReview.json`
```json
{
  "kind": "AdmissionReview",
  "apiVersion": "admission.k8s.io/v1beta1",
  "request": {
    "uid": "0db99c4c-43d0-4ea2-a64d-7be6ba1c43d0",
    "kind": {
      "group": "",
      "version": "v1",
      "kind": "PodExecOptions"
    },
    "resource": {
      "group": "",
      "version": "v1",
      "resource": "pods"
    },
    "subResource": "exec",
    "requestKind": {
      "group": "",
      "version": "v1",
      "kind": "PodExecOptions"
    },
    "requestResource": {
      "group": "",
      "version": "v1",
      "resource": "pods"
    },
    "requestSubResource": "exec",
    "name": "nginx",
    "namespace": "default",
    "operation": "CONNECT",
    "userInfo": {
      "username": "kubernetes-admin",
      "groups": [
        "system:masters",
        "system:authenticated"
      ]
    },
    "object": {
      "kind": "PodExecOptions",
      "apiVersion": "v1",
      "stdin": true,
      "stdout": true,
      "tty": true,
      "container": "nginx",
      "command": [
        "sh"
      ]
    },
    "oldObject": null,
    "dryRun": false,
    "options": null
  }
}
```
`ObjectMeta` should be added to kinds ending with `*Options` as `uid` is required for creating `AdmissionReport` (rest is still available in the `AdmissionReview`)