I've read some pages about monitoring k8s, and I found kubernetes_sd_config (within prometheus), metrics-server (took the place of heapster) and kube-state-metrics. All of them could provides metrics, but what's the difference?
- Does kubernetes_sd_config (within prometheus) provide all the data those I can get using metrics-server and kube-state-metrics?
 - Is kubernetes_sd_config just enough for monitoring?
 - Is metrics-server just for providing data (less than kubernetes_sd_config) to the internal components(such as hpa controller)?
 - Is kube-state-metrics just for the objects (pod, deployment...) in k8s?
 - what is their own target respectively?