Node pools

Node pools are provided by GKE as a way to configure a group of node instances that have the same machine configuration. Any given GKE cluster can contain multiple node pools, each configured appropriately for the workload that will be deployed to that specific pool. Node pools can be added and removed from existing Kubernetes clusters, as long as at least one node pool with at least three nodes remains.

There are several different scenarios where node pools solve problems you didn't even know you had. One of the most talked about scenarios is when you want to have two different versions of Kubernetes running in the same cluster and slowly perform a migration. Another scenario is where you would want to perform A/B testing on some of your services or functionalities. There's also the scenario mentioned previously, where you have workloads that require different underlying machine types to run optimally. For instance, one of your serviced requires utilizes high CPU, whereas another is a memory hog.