<p>I am looking to find out if there is a way I can assign a specific Deployment to a specific node pool.</p>
<p>I am planning to deploy a big-size application using kubernetes. I am wondering if there is a way we can assign deployments to specific node pools. In other words, we have 3 types of services:</p>
<ul>
<li>General services, low performance and low replica count</li>
<li>Monitor services, high I/O and high performance servers needed</li>
<li>Module services, most demanding services, we are aiming to allocate the biggest part of our budget for this.</li>
</ul>
<p>So obviously we would like to best allocate nodes to specific deployments so no resources go wasted, for example low tier servers node pool X would be only utilized by General service deployments, high tier servers node pool Y would be only utilized by the monitor services, and the highest tier servers would only be utilized by the Module services.</p>
<p>I understand that there is a huge number of articles that talks about pod affinity and other related things, but what I seem to not be able to find anything that matches the following:
<code>How to assign Deployment to specific node pool</code></p>
<p>Thanks in advance!</p>

<p>Another way (in addition to what Yayotrón proposed) would be to work with NodeAffinity and AntiAffinity. For more information check the official documentation here: <a href="https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/" rel="nofollow noreferrer">https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/</a></p>
<p>Taints and tolerations very strict and scheduling on other nodes would not be possible at all.
With Affinity and Antiaffinity you can specify wheter you want it to be strict (RequiredDuringSchedulingIgnoredDuringExecution) or a soft restriction (PreferredDuring....)</p>
