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
- Read the klog warnings immediately above the error — each ' * ' line says exactly why a type was rejected.
- Choose a widely available instance type for the role (e.g. m5.large for nodes, t3.micro for bastion) and re-run.
- Verify availability: aws ec2 describe-reserved-instances-offerings --instance-type <type> --region <region>.
- Adjust cluster subnets/zones to ones offering the desired type, or relax machine-type constraints.
- 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
- Choose machine types generally available across AZs in the target region (m5/c5/t3 families).
- Read the per-type rejection warnings logged just before the error.
- Keep kops current so its instance-type data covers new regions/families.
- Align cluster subnets with zones that offer the requested type.
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
- error creating DHCPOptions: %v
- NAT EC2 Instance %q not found
- error checking if instance type %q is supported in region %q
- describing instance type %q in region %q: %w
- instance type %q not found in region %q
AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05).
Data as JSON: /api/errors/6f3d3c8f2047f59e.
Report an issue: GitHub.