Node affinity is a property of Pods that attracts them to a set of nodes (either as a preference or a hard requirement). Taints are the opposite -- they allow a node to repel a set of pods. Tolerations are applied to pods. Tolerations allow the scheduler to schedule pods with matching taints. Tolerations allow scheduling but don't guarantee scheduling: the scheduler also evaluates other parameters
![Taints and Tolerations](https://cdn-ak-scissors.b.st-hatena.com/image/square/9013b6cc8b3232f7a7f3a0347b30f01b6923b068/height=288;version=1;width=512/https%3A%2F%2Fkubernetes.io%2Fimages%2Ffavicon.png)