<p>I'd like to setup a Kubernetes cluster with two node groups: one node group reserved for a specific <code>Deployment</code>, and a second default nodegroup for everything else. I'd like default pod scheduling to not use the dedicated node group and only use the default group.</p>

<p>One strategy is:</p>

<ul>
<li><p>Taint the dedicated NodeGroup as NoSchedule, so it is not used by default.</p></li>
<li><p>The one dedicated <code>Deployment</code> uses a <code>toleration</code> no ignore/reverse the <code>NoSchedule</code> taint and uses a <code>nodeAffinity</code> of <code>requiredDuringSchedulingIgnoredDuringExecution</code> to require the dedicated nodegroup.</p></li>
</ul>

<p>Would this work? Would this be ideal? Is there a better strategy?</p>

<p>You are spot on. Your approach is correct. It should work</p>

<p>Alternatively you can add default node label to all nodes in default node group. And dedicated node label to dedicated node group. Define node affinity and anti affinity  to get the pods scheduled to appropriate  nodes</p>
