<p>When defining the Taints &amp; Tolerations, we defined the Taint as below:</p>
<pre><code>kubectl taint nodes node1 key1=value1:NoSchedule
</code></pre>
<p>Now any pod that does not have toleration defined as below will not be scheduled on node1. And the one that has toleration defined, gets scheduled on this node. But, why do we need to define NoSchedule on the POD? It is already defined on the node.</p>
<pre><code>tolerations:
- key: &quot;key1&quot;
  operator: &quot;Equal&quot;
  value: &quot;value1&quot;
  effect: &quot;NoSchedule&quot;
</code></pre>
<p>What impact does it have if:</p>
<ol>
<li>The node effect is NoSchedule</li>
</ol>
<pre><code>kubectl taint nodes node1 key1=value1:NoSchedule
</code></pre>
<ol start="2">
<li>But the POD toleration is NoExecute</li>
</ol>
<pre><code>tolerations:
- key: &quot;key1&quot;
  operator: &quot;Equal&quot;
  value: &quot;value1&quot;
  effect: &quot;NoExecute&quot;
</code></pre>
<p>Note: I understand that it is trying to match not just &quot;taint value&quot; but also the &quot;taint effect&quot;. But is there any use case for matching &quot;taint effect&quot; as well?</p>
<blockquote>
<p>tolerations.effect (string) Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.</p>
</blockquote>
<p>Thanks</p>

Buggy B
<blockquote>
<p>What impact does it have if:</p>
<ol>
<li>The node effect is NoSchedule</li>
</ol>
<p>kubectl taint nodes node1 key1=value1:NoSchedule</p>
<ol start="2">
<li>But the POD toleration is NoExecute</li>
</ol>
</blockquote>
<p>Pod will not be schedule on the node where it failed to tolerate, eg. your sample pod will not be schedule on node that tainted with <code>NoSchdule</code> because it only tolerates <code>NoExecute</code>.</p>
<p><code>...use case for matching &quot;taint effect&quot;</code></p>
<p>Not sure what it means here; but it is possible to tolerate a key with any effect by only specified the key and value.</p>
