Some pods you might want to run on your master nodes, too. This may be because they are exporting master node metrics or even to save resources: say you want many instances of a specific pod. In that case (and given you are on Kubernetes >= 1.7) you can use tolerations to override NoSchedule taints. Add this to your pod’s spec:
tolerations: - effect: NoSchedule key: node-role.kubernetes.io/master
You may even want your pods to run only on master nodes. Then add this node selector key to your pod spec:
nodeSelector: node-role.kubernetes.io/master: ""
But be aware that masters may not be able to communicate to nodes, due to your setup (security groups etc).