<p>Is it preferable to have a Kubernetes cluster with 4 nodes having resources 4 CPUs, 16 GB RAM or 2 nodes cluster with resources 8 CPUs and 32 GB RAM?</p>

<p>What benefits user will get if they go for horizontal scaling over vertical scaling in Kubernetes concepts.  I mean suppose we want to run 4 pods, is it good to go with 2 nodes cluster with resources 8 CPU and 32 GB RAM or 4 nodes cluster with resources  4 CPU and 16 GB RAM.</p>

Deepa Yr
<p>In general I would recommend larger nodes because it's easier to place containers on them.</p>

<p>If you have a pod that <code>resources: {requests: {cpu: 2.5}}</code>, you can only place one of them on a 4-core node, and two on 2x 4-core nodes, but you can put 3 on a single 8-core node.</p>

<pre><code>+----+----+----+----+    +----+----+----+----+
|-WORKLOAD--|       |    |-WORKLOAD--|       |
+----+----+----+----+    +----+----+----+----+

+----+----+----+----+----+----+----+----+
|-WORKLOAD--|--WORKLOAD--|-WORKLOAD--|  |
+----+----+----+----+----+----+----+----+
</code></pre>

<p>If you have 16 cores total and 8 cores allocated, it's possible that no single node has more than 2 cores free with 4x 4-CPU nodes, but you're guaranteed to be able to fit that pod with 2x 8-CPU nodes.</p>

<pre><code>+----+----+----+----+    +----+----+----+----+
|-- USED -|         |    |-- USED -|         |
+----+----+----+----+    +----+----+----+----+
+----+----+----+----+    +----+----+----+----+
|-- USED -|         |    |-- USED -|         |
+----+----+----+----+    +----+----+----+----+

Where   |-WORKLOAD--| goes?

+----+----+----+----+----+----+----+----+
|------- USED ------|                   |
+----+----+----+----+----+----+----+----+
+----+----+----+----+----+----+----+----+
|------- USED ------|                   |
+----+----+----+----+----+----+----+----+
</code></pre>

<p>At the specific scale you're talking about, though, I'd be a little worried about running a 2-node cluster: if a single node dies you've lost half your cluster capacity.  Unless I knew that I was running multiple pods that needed 2.0 CPU or more I might lean towards the 4-node setup here so that it will be more resilient in the event of node failure (and that does happen in reality).</p>
