<p>I have three node pools in my cluster each of them have autoscaling enabled to go from 1-100 nodes. Minimum nodes are 1 for all. I am having something weird happening with autoscaling.</p>
<p>Scale down works fine for all pools.
Scale up seems to create a new node pool instead of scaling the corresponding node pools but since that node pool is missing the labels we need nothing gets scheduled and eventually gets destroyed.</p>
<p>I swear I am missing some information to enable it to scale the right node-pool, Any suggestions on what to look at and where to change? I do not use/have GCE auto-scaling</p>

vpram86
<p>GKE starts new nodes only from user-created node pools. With <strong>Node auto-provisioning</strong> enabled, the cluster autoscaler can extend node pools automatically.  Node auto-provisioning automatically manages a set of node pools on the user's behalf. Since the nodepools here don't have labels, Node auto-provisioning is creating the new nodepools with required labels.</p>
<p><a href="https://cloud.google.com/kubernetes-engine/docs/how-to/node-auto-provisioning#workload_separation" rel="nofollow noreferrer">Node auto-provisioning</a> might create node pools with labels and taints if all the following conditions are met:</p>
<ul>
<li>A pending Pod requires a node with a specific label key and value.</li>
<li>The Pod has a toleration for a taint with the same key.</li>
<li>The toleration is for the NoSchedule effect, NoExecute effect, or all effects.</li>
</ul>
<p>You can update node labels and node taints for the <a href="https://cloud.google.com/kubernetes-engine/docs/how-to/update-existing-nodepools#limitations" rel="nofollow noreferrer">existing nodepools</a> by disabling the autoscaling on the node pool. After the labels or taints are updated, <a href="https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-autoscaler#enabling_autoscaling_for_an_existing_node_pool" rel="nofollow noreferrer">re-enable autoscaling</a>.</p>
<p>To update node labels for a existing node pool, use the following command:</p>
<pre><code>gcloud beta container node-pools update NODEPOOL_NAME \
        --node-labels=[NODE_LABEL,...] \
        [--cluster=CLUSTER_NAME] [--region=REGION | --zone=ZONE]
        [GCLOUD_WIDE_FLAG …]
</code></pre>
<p><strong>Note:</strong> The cluster autoscaler is automatically enabled when using node auto-provisioning.</p>
<p>Refer to <a href="https://cloud.google.com/kubernetes-engine/docs/how-to/node-auto-provisioning#overview" rel="nofollow noreferrer">Node auto-provisioning</a>  for more information.</p>
