Kubernetes 101 : Taints and Tolerations

Taints and tolerations are kubernetes features that restrict certain pods from being scheduled on certain nodes.

A taint is a node's parameter. Only the pods that have a toleration for that taint could be scheduled on that node.

Below an example of how to "taint" a node:

- master-taint : the name of the node
- is-master="true" : the taint's key and value.
- NoSchedule: the effect of the taint - is-master="true" - on the pods that don't have a "toleration" for it .

Below is the Yaml version of the above command:

Below is an example of a Yaml file of a pod that "tolerates" the taint of our node "master-taint":

We use the "kubectl apply -f file-name.yaml" command to create our objects.

The above pod can be scheduled on a node that is tainted with "key: is-master". 
The effect "effect:NoSchedule" is applied to the pods that can't  "tolerate" the taint "key: is-master" .


- operator: "Exists" : using this option, we don't need to specify the value of the key

If we use - operator: "Equal" -, we would need to specify a value of the key, as below:

We can have other effects like "effect=PreferNoSchedule", which is more "leniant" than the "effect: NoSchedule".
One use of the "toleration-taint" functions is to prevent the scheduling of pods on the master nodes.

Checking the "taint" of a node:

We can check the taint on our node using the below command:


Leave as a comment: