Repository: kubernetes
Issue: Make "--feature-gates" flag component-related
Labels: kind/documentation,kind/feature,lifecycle/frozen,wg/component-standard

<!-- Thanks for filing an issue! Before hitting the button, please answer these questions.-->

**Is this a request for help?** (If yes, you should use our troubleshooting guide and community support channels, see https://kubernetes.io/docs/tasks/debug-application-cluster/troubleshooting/.):

**Note:** Please file issues for subcomponents under the appropriate repo

| Component | Repo                                                               |
| --------- | ------------------------------------------------------------------ |
| kubectl   | [kubernetes/kubectl](https://github.com/kubernetes/kubectl/issues/new) |
| kubeadm   | [kubernetes/kubeadm](https://github.com/kubernetes/kubeadm/issues/new) |

**What keywords did you search in Kubernetes issues before filing this one?** (If you have found any duplicates, you should instead reply there.):

---

**Is this a BUG REPORT or FEATURE REQUEST?** (choose one):
Enhancement.

<!--
If this is a BUG REPORT, please:
  - Fill in as much of the template below as you can.  If you leave out
    information, we can't help you as well.

If this is a FEATURE REQUEST, please:
  - Describe *in detail* the feature/behavior/change you'd like to see.

In both cases, be ready for followup questions, and please respond in a timely
manner.  If we can't reproduce a bug or think a feature already exists, we
might close your issue.  If we're wrong, PLEASE feel free to reopen it and
explain why.
-->

**Kubernetes version** (use `kubectl version`):
HEAD

**Environment**:
- **Cloud provider or hardware configuration**:
- **OS** (e.g. from /etc/os-release):
- **Kernel** (e.g. `uname -a`):
- **Install tools**:
- **Others**:


**What happened**:
We have `--feature-gates` flag in help info of every main components. And all of them have the same options listed.

```
Accelerators=true|false (ALPHA - default=false)
AdvancedAuditing=true|false (ALPHA - default=false)
AffinityInAnnotations=true|false (ALPHA - default=false)
AllAlpha=true|false (ALPHA - default=false)
AllowExtTrafficLocalEndpoints=true|false (default=true)
AppArmor=true|false (BETA - default=true)
DynamicKubeletConfig=true|false (ALPHA - default=false)
DynamicVolumeProvisioning=true|false (ALPHA - default=true)
ExperimentalCriticalPodAnnotation=true|false (ALPHA - default=false)
ExperimentalHostUserNamespaceDefaulting=true|false (BETA - default=false)
PersistentLocalVolumes=true|false (ALPHA - default=false)
StreamingProxyRedirects=true|false (BETA - default=true)
TaintBasedEvictions=true|false (ALPHA - default=false)
```

When users want to switch a feature gate on, it's hard to know which components need to enable the flag. Take `AffinityInAnnotations` for example, users might know they should enable this flag for apiserver and scheduler. But how about controller-manager and kubelet? They might need or not. For kube-proxy, it obviously doesn't need to enable this flag.

**What you expected to happen**:
Only show the options for components which need them. It would be good to have a documentation to guide users.

**How to reproduce it** (as minimally and precisely as possible):


**Anything else we need to know**:

/sig api-machinery