<p>I have a GKE cluster with 1 node-pool and 2 nodes in it, one with node affinity to only accept pods of production and the other to development and testing pods. For financial purposes, I want to configure like a cronJob or something similar on the dev/test node so I can spend less money but I don't know if that's possible.</p>

<p>Yes, you can add another node pool named <code>test</code> so you can have two node pools; one to <code>develop</code> and one to <code>test</code>. You can also turn on the <code>auto [scaling]</code><a href="https://cloud.google.com/kubernetes-engine/docs/concepts/cluster-autoscaler#overview" rel="nofollow noreferrer">1</a> in your development pool, this feature of GKE will allow you to save money because it automatically resizes your GKE Cluster node pool based on the demand workload when your production pool is not demanding and you can put a maximum of pods to limit the numbers of pods deployed; in case of your workload increase the demand.</p>
<p>Once you have configured the production pool, you can create the new test node pool with a fixed size of one node.</p>
<p>Then, you will use a node <a href="https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector" rel="nofollow noreferrer">selector</a> in your pods to make sure that they can run in the production node pool. And you could use an <a href="https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity" rel="nofollow noreferrer">anti-affinity</a> rule to ensure that two of your training pods cannot be scheduled on the same node.</p>
