It's a bad idea to have that many if they're all Apache or whatever. But when they're simple Golang containers that handle APIs it's ok.
- 3x ingress pods (1 for an internal load balancer, 2 for an external load balancer)
- 1x cert-manager
- 2x production version of internal app01
- 2x staging version of internal app02
- 1x fluentd
- 1x elastalert
- 1x kubewatch
- 1x prometheus node exporter
- 1x redis for sentry
- 1x sentry web
- 2x sentry worker
- 4x sourcegraph language servers (there are 9 language servers running across the 4 nodes, this node seems to especially like them)
- 1x thelounge
- 1x staging version of app02
- 2x production version of app02
- 1x kube proxy
- 1x kubedns
- 1x couchdb (small footprint just for testing some things)
the node is just over half provisioned and we are due to add another node to the cluster soon.
The helm charts include this: https://github.com/helm/charts/tree/master/stable/prometheus...
The node exporter runs as a daemonset on each node and provides node specific metrics like CPU, memory, disk IO, network IO, etc.
The node metrics comes from the node itself.
I think I'm running 70 16-core nodes.
It'd be nice to use larger nodes and have more overhead, but I suspect kubelet would have a hard time.
On K8s I typically see somewhere in the low 20s as the number of pods per node.
Openshift I'll see high 20s or low 30s as the average number of pods across most openshift customers. But we're seeing some crazy numbers for some larger enterprise customers. 100,400,2500 pods per node. This seems to be driven by the way openshift is licensing
The latter is an absolute nightmare to support, and they seem to have trouble organizing internally as well.