Kubernetes – Run workloads on the Control Plane Node

If you ever installed a Kubernetes cluster, you probably know that the minimal setup is composed of 2 nodes: a Control Plane Node (previously called master) and a Worker Node. This is a good thing as we usually don’t want workloads interfering with the API in production environments.

But what about lab environments where you want to run everything in a single VM for example? Well, it’s absolutely possible and actually very simple to configure a Control Plane Node to also accept workloads (pods).

This is managed by “taints”, which is a configuration string applied to nodes. On your Control Plant Node, you can see this by running:

# kubectl describe nodes YourNodeName | grep Taints

It will give you back a string resembling “node-role.kubernetes.io/master:NoSchedule”. NoSchedule, the name says it all.

Well, you can simply remove this taint by running the following command, note the “-” at the end to remove the taint:

kubectl taint nodes YourNodeName node-role.kubernetes.io/master:NoSchedule-

And that’s it, you can now run workload pods on your Control Plane Node in your lab.