kubernetes/kops · error

could not find a suitable supported instance type for the in

Error message

could not find a suitable supported instance type for the instance group %q (type %q) in region %q

What it means

After machine-type discovery exhausts all candidate instance types (filtered by zone support, architecture, role requirements), kops logs each rejection reason and returns this aggregate error. It means no instance type in the given region satisfies the constraints for the instance group's role, so the cluster cannot be provisioned on AWS as specified.

Source

Thrown at upup/pkg/fi/cloudup/awsup/aws_cloud.go:2041

		zones, err := c.zonesWithInstanceType(instanceType)
		if err != nil {
			return "", err
		}
		if zones.IsSuperset(igZonesSet) {
			return string(instanceType), nil
		} else {
			reasons = append(reasons, fmt.Sprintf("instance type %q is not available in all zones (available in zones %v, need %v)", instanceType, zones, igZones))
			klog.V(2).Infof("can't use instance type %q, available in zones %v but need %v", instanceType, zones, igZones)
		}
	}

	// Log the detailed reasons why we can't find an instance type
	klog.Warning("cannot find suitable instance type")
	for _, reason := range reasons {
		klog.Warning("  *  " + reason)
	}
	return "", fmt.Errorf("could not find a suitable supported instance type for the instance group %q (type %q) in region %q", ig.Name, ig.Spec.Role, c.region)
}

// supportsInstanceType uses the DescribeReservedInstancesOfferings API call to determine if an instance type is supported in a region
func (c *awsCloudImplementation) zonesWithInstanceType(instanceType ec2types.InstanceType) (sets.String, error) {
	klog.V(4).Infof("checking if instance type %q is supported in region %q", instanceType, c.region)
	ctx := context.TODO()
	request := &ec2.DescribeReservedInstancesOfferingsInput{}
	request.InstanceTenancy = ec2types.TenancyDefault
	request.IncludeMarketplace = aws.Bool(false)
	request.OfferingClass = ec2types.OfferingClassTypeStandard
	request.OfferingType = ec2types.OfferingTypeValuesNoUpfront
	request.ProductDescription = ec2types.RIProductDescriptionLinuxUnixAmazonVpc
	request.InstanceType = instanceType

	zones := sets.NewString()

	response, err := c.ec2.DescribeReservedInstancesOfferings(ctx, request)
	if err != nil {

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Read the klog warnings immediately above the error — each ' * ' line says exactly why a type was rejected.
  2. Choose a widely available instance type for the role (e.g. m5.large for nodes, t3.micro for bastion) and re-run.
  3. Verify availability: aws ec2 describe-reserved-instances-offerings --instance-type <type> --region <region>.
  4. Adjust cluster subnets/zones to ones offering the desired type, or relax machine-type constraints.
  5. Upgrade kops to get current instance-type/region data.

Example fix

// before (cluster.yaml)
machineType: c8g.xlarge   # not offered in the chosen region/zones
// after
machineType: c6g.xlarge   # supported in the cluster's region
Defensive patterns

Strategy: validation

Validate before calling

// check the machine type is offered in the cluster's zones before applying
aws ec2 describe-reserved-instances-offerings \
  --region <region> --instance-type <machineType> \
  --query 'ReservedInstancesOfferings[].AvailabilityZone'

Try / catch

if strings.Contains(err.Error(), "could not find a suitable supported instance type") {
    return fmt.Errorf("%w; pick a machine type listed by 'aws ec2 describe-instance-types' for your region/subnets", err)
}

Prevention

When it happens

Trigger: Running kops update/apply where every candidate instance type for the role was rejected: all required zones lack the requested type, the region has no capacity offerings for the candidates, spot/instance-type restrictions (e.g. t2/t3 micro for bastion not offered), or constraints like GPU/arch requirements can't be met.

Common situations: Using a very new instance family in a region that hasn't launched it; requesting machine types only available in zones not included in the cluster's subnets; older kops versions with stale instance-type lists against new regions; excessive constraints (min CPU/memory) that no offering satisfies.

Related errors


AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05). Data as JSON: /api/errors/6f3d3c8f2047f59e. Report an issue: GitHub.