code: func (c *Cloud) findSubnets() ([]*ec2.Subnet, error) {
  	request := &ec2.DescribeSubnetsInput{}
  	filters := []*ec2.Filter{newEc2Filter("vpc-id", c.vpcID)}
  	request.Filters = c.tagging.addFilters(filters)
  
  	subnets, err := c.ec2.DescribeSubnets(request)
  	if err != nil {
  		return nil, fmt.Errorf("error describing subnets: %q", err)
  	}
  
  	var matches []*ec2.Subnet
  	for _, subnet := range subnets {
  		if c.tagging.hasClusterTag(subnet.Tags) {
  			matches = append(matches, subnet)
  		}
  	}
  
  	if len(matches) != 0 {
  		return matches, nil
  	}
  
  	// Fall back to the current instance subnets, if nothing is tagged
  	klog.Warningf("No tagged subnets found; will fall-back to the current subnet only.  This is likely to be an error in a future version of k8s.")
  
  	request = &ec2.DescribeSubnetsInput{}
  	filters = []*ec2.Filter{newEc2Filter("subnet-id", c.selfAWSInstance.subnetID)}
  	request.Filters = filters
  
  	subnets, err = c.ec2.DescribeSubnets(request)
  	if err != nil {
  		return nil, fmt.Errorf("error describing subnets: %q", err)
  	}
  
  	return subnets, nil
  }
docs: // Finds the subnets associated with the cluster, by matching tags.
  // For maximal backwards compatibility, if no subnets are tagged, it will fall-back to the current subnet.
  // However, in future this will likely be treated as an error.