GKE - Why are heapster, metrics-server and prometheus all installed by default?

Hi All,

I just created a couple clusters. Now that the app is running fairly well, I’m looking into the details a bit to see if I can’t get autoscaling (both node pool and HPA) working as it should.

I’m poking around on the nodes and I see all the overhead pods on there. Mostly they make sense and I realize, with a small cluster and smaller nodes, my overhead will be larger as a proportion of the total compute cost.

First, I see that a lot of memory and CPU are reserved for k8s DNS. But I’m looking to CoreDNS to pare those resource requirements.

Next on the list is heapster. I see that it is retired and that metrics-server is also present. As is Prometheus! What gives with all these different metrics services? Wouldn’t any one of them do the job? Can I drop 1 or 2 of them? If so, which should I keep and why?

E.g. no mention of heapster, prometheus or metrics server …
Reducing add-on resource usage in smaller clusters

E.g. has anyone else had good results with the Vertical Pod Autoscaler applied to system pods?
How to reduce CPU limits of kubernetes system resources?

Thanks for your patience with this newbie question. But the docs I did manage to find have not made this clear (for me) yet. Any pointers appreciated.

–Charlie

P.S. Despite all the docs stating the contrary, it appears I really do need StackDriver Logging. And StackDriver Monitoring appears to be a consumer of metrics-server. So don’t I really need both of these? I.e. StackDriver Logging isn’t really deprecated!

Cluster information:

Kubernetes version: 1.14.8-gke.33
Cloud being used: GKE
Installation method: console - create cluster
Host OS: Container Optimized
CNI and version: ?
CRI and version: ?