So it is possible to use kubectl taint and its counterpart tolerations to restrict Kubernetes pods to/from being scheduled onto specific nodes. However I can not currently find a way to configure Google Cloud so that a taint setting will persist across node creation. Is it possible?
I'm guessing not, yet. Taints and tolerations are in alpha and alpha features are only supported on GKE temporary clusters. Even in alpha, I'm not sure to what degree taints and tolerations actually work. There are a lot of changes being made at the moment and this feature should move to beta and be usable in 1.6.
Please see:
https://github.com/kubernetes/features/issues/108
https://github.com/kubernetes/kubernetes/issues/25320
Now GKE supports node taints which will be persisted and you don't need to run kubectl taint command. Please check https://cloud.google.com/container-engine/docs/node-taints for more information on this.