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.