I want to have masters in multiple zones and then attach node pools confined to a single zone, so I can take advantage of the different gpu accelerator types in the different zones. Whenever I try to create a cluster in multiple zones it replicates my nodes in each zone. This is really wasteful for me, because I only need one gpu at a time.
Based on your requirements "I want to have masters in multiple zones and then attach node pools confined to a single zone"
It is actually possible to create a regional cluster with node pool in only one zone that has the gpu available. You simply use --node-locations flag. Say K80 only available in us-west1-b. Using this flag with regional cluster creation, you will have 3 master across all 3 zones in us-west, and the node only in us-west1-b. Document below:
https://cloud.google.com/kubernetes-engine/docs/concepts/regional-clusters
What you can't do is to create "multi-zone cluster" with GPU only in one zone. Remember multi-zone master is different than multi-zone node.
No, this isn't possible since regional clusters are expected to work like that. If you deploy a regional cluster all zones should be the same. So to achieve your workload, you could deploy one node-pool with a GPU attached and make a regional node-pool without any GPU attached.