code: func (g *Cloud) CreateRegionalDisk(
  	name string, diskType string, replicaZones sets.String, sizeGb int64, tags map[string]string) error {
  
  	// Do not allow creation of PDs in zones that are do not have nodes. Such PDs
  	// are not currently usable. This functionality should be reverted to checking
  	// against managed zones if we want users to be able to create RegionalDisks
  	// in zones where there are no nodes
  	curZones, err := g.GetAllCurrentZones()
  	if err != nil {
  		return err
  	}
  	if !curZones.IsSuperset(replicaZones) {
  		return fmt.Errorf("kubernetes does not have nodes in specified zones: %q. Zones that contain nodes: %q", replicaZones.Difference(curZones), curZones)
  	}
  
  	tagsStr, err := g.encodeDiskTags(tags)
  	if err != nil {
  		return err
  	}
  
  	diskType, err = getDiskType(diskType)
  	if err != nil {
  		return err
  	}
  
  	mc := newDiskMetricContextRegional("create", g.region)
  
  	err = g.manager.CreateRegionalDiskOnCloudProvider(
  		name, sizeGb, tagsStr, diskType, replicaZones)
  
  	mc.Observe(err)
  	if isGCEError(err, "alreadyExists") {
  		klog.Warningf("GCE PD %q already exists, reusing", name)
  		return nil
  	}
  	return err
  }
docs: // CreateRegionalDisk creates a new Regional Persistent Disk, with the specified
  // name & size, replicated to the specified zones. It stores specified tags
  // encoded in JSON in Description field.