Since Kubernetes 1.6, the concept of Taints and Tolerances was introduced. Now rather than the master being off limits, it's simply tainted. If you add the required tolerance to the pod, it will run.
You can simply add the following to your Deployment (or Daemonset if you are running a multi-master setup):
- key: node-role.kubernetes.io/master
Thanks to Jon Davis @TrueAccord for bringing this up to our attention!