<p>When provisioning a k8 cluster, in the digital ocean's dashboard, under choose cluster capacity, i see an option to either add nodes in a pool or add a new pool altogether. I don't quite understand the difference.</p>

<p>DO gives the following suggestion which is quite ambiguous to me -</p>

<blockquote>
  <p>Increasing the number of nodes in a pool lets you run more instances
  of the scheduled services. Adding more node pools allows you to
  schedule pods to different node pools so each pod has the RAM, CPU,
  and storage it requires. You can add and remove nodes and node pools
  at any time.</p>
</blockquote>

<p>Can anyone give me an example when one increases nodes in a pool and when one creates a different pools altogether?</p>

<p>Thanks!</p>

<p>From GCP's documentation:</p>

<blockquote>
  <p>A node pool is a group of nodes within a cluster that all have the same configuration.</p>
</blockquote>

<p>Node Pools have a specific node type, which tells them what type of virtual machines they can use as their nodes. For example, I can have these three node pools:</p>

<p>highmem: 4 vCPUs, 32G of RAM and no GPU</p>

<p>highcpu: 8 vCPUs, 16G of RAM and no GPU</p>

<p>gpu: 4 vCPUs, 8G of RAM, 1 Nvidia Tesla GPU</p>

<p>I can scale up each of these node pools independently, I can have 3 highmem nodes in my pool for processes that use a lot of memory, but less CPU, while I have only 1 node in my highcpu pool for processes that use a lot of CPU, but less RAM. Meanwhile I have a node pool for GPU processes such as Tensorflow or Image processing programs. <a href="https://kubernetes.io/docs/concepts/configuration/assign-pod-node/" rel="noreferrer">Assigning pods to node pools</a> is done through node selector or affinity options in resource definitions.</p>

<p>So, having different node pools gives you the ability to use fine-tuned VMs for differnet purposes. If you were limited to a single pool, you would have to use large VMs with a lot of RAM, CPU and GPU, and that would be extremely expensive and inefficient.</p>

<p>Please note that node pools are not meant to allow "isolation" of applications. In order to logically separate applications, namespaces can be used rather than node pools. Node pools are only meant to be used for managing resources and virtual machine types used.</p>
