diff --git a/roles/kubernetes/control-plane/templates/kubeadm-controlplane.v1beta2.yaml.j2 b/roles/kubernetes/control-plane/templates/kubeadm-controlplane.v1beta2.yaml.j2
index a03aa5f96983341dcd16f00fd5bc1e95ce61cf3e..f73a85fe98bf7ab06beebb0cdb62b45f11b199f8 100644
--- a/roles/kubernetes/control-plane/templates/kubeadm-controlplane.v1beta2.yaml.j2
+++ b/roles/kubernetes/control-plane/templates/kubeadm-controlplane.v1beta2.yaml.j2
@@ -19,3 +19,10 @@ controlPlane:
 nodeRegistration:
   name: {{ kube_override_hostname|default(inventory_hostname) }}
   criSocket: {{ cri_socket }}
+{% if inventory_hostname in groups['kube_control_plane'] and inventory_hostname not in groups['kube_node'] %}
+  taints:
+  - effect: NoSchedule
+    key: node-role.kubernetes.io/master
+{% else %}
+  taints: []
+{% endif %}
\ No newline at end of file