Suppose you are running a Kubernetes Cluster with 3 nodes.
The master does only schedule pods to the worker nodes, not to itself by default. E.g. i have 2 worker nodes with Xeon E5-1650 v3 and 256GB RAM and i run a low number of pods on my cluster (say max. 20). Is there any reason why i should scale my master node resource-wise in the same way than my worker nodes or could i just use an economy machine for my master?
First of all, lets talk about Components in the Master Node. I have divided them into following sections.
Stateful
Stateless
Others
Kube-Controller-Manager: if desired state === current state
Kube-Scheduler: Get the precise node for the pods
Kubelet
Kube-Proxy
Add-Ons
All of these components make sure that Worker Nodes are having desired state of the cluster if not they will make sure that Current state = Desired State .
Now All of the end users will request your Application (business logic) which is a Pod or bunch of Pods, therefore we need to make sure that they scale horizontally on basis of resources utilization (CPU, RAM, Network etcs).
Master Nodes does not have this responsibility therefore, we do not worry about resources utilization (Nevertheless It needs to have adequate resources to survive ).However, We need to make sure that it is highly available so there is no single point of failure to orchestrate the worker nodes.In order to make the cluster more resistant to failure, we will need to create other etcd nodes or etcd cluster.
Tldr
Workers Nodes: we worry about horizontal scalability.
Master Nodes: we worry about High availability
I have attached links for further research Kubernetes-Components