text: Title: core v1 Event API needs improvement?
  Body: **What happened**:
  
  ```yaml
  apiVersion: v1
  kind: Event
  ```
  
  When creating the above resource (for testing), I'm getting this:
  
  ```
  error: error validating "event-v1.yaml": error validating data: [ValidationError(Event): missing required field "metadata" in io.k8s.api.core.v1.Event, ValidationError(Event): missing required field "involvedObject" in io.k8s.api.core.v1.Event]; if you choose to ignore these errors, turn validation off with --validate=false
  ```
  
  After checking the source code (https://github.com/kubernetes/kubernetes/blob/master/pkg/apis/core/types.go#L4569-L4576):
  
  ```go
  type Event struct {
  	metav1.TypeMeta
  	// +optional
  	metav1.ObjectMeta
  
  	// Required. The object that this event is about. Mapped to events.Event.regarding
  	// +optional
  	InvolvedObject ObjectReference
           ...
  ```
  
  The declaration says metadata is optional, which is wrong.  So the API spec generated is wrong.
  
  The declaration of `InvolvedObject` is contradictary. It is both "Required" and "+optional".
  
  
  **What you expected to happen**:
  
  Be consistent about field definitions.
  
  **How to reproduce it (as minimally and precisely as possible)**:
  
  ```
  kubectl create -f config.yaml
  ```
  
  **Anything else we need to know?**:
  
  **Environment**:
  - Kubernetes version (use `kubectl version`): 1.19
  