Kubernetes - Do master resources have to scale in the same way than worker node resources?

12/1/2017

Suppose you are running a Kubernetes Cluster with 3 nodes.

  • 1 Master
  • 2 Workers

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?

-- Plus Ultra
cloud
kubernetes
performance

1 Answer

12/1/2017

First of all, lets talk about Components in the Master Node. I have divided them into following sections.

Stateful

  • Etcd: Its the sources of truth in the cluster.

Stateless

  • Kube-ApiServer: It's the front-end of Stateful (etcd)

Others

  • Kube-Controller-Manager: if desired state === current state

  • Kube-Scheduler: Get the precise node for the pods

  • Kubelet

  • Kube-Proxy

Add-Ons

  • Kube-DNS
  • Kubernetes-Dashboard

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

-- Suresh Vishnoi
Source: StackOverflow