{"record":{"id":"6f3d3c8f2047f59e","repo":"kubernetes/kops","slug":"could-not-find-a-suitable-supported-instance-type","errorCode":null,"errorMessage":"could not find a suitable supported instance type for the instance group %q (type %q) in region %q","messagePattern":"could not find a suitable supported instance type for the instance group %q \\(type %q\\) in region %q","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"upup/pkg/fi/cloudup/awsup/aws_cloud.go","lineNumber":2041,"sourceCode":"\n\t\tzones, err := c.zonesWithInstanceType(instanceType)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\tif zones.IsSuperset(igZonesSet) {\n\t\t\treturn string(instanceType), nil\n\t\t} else {\n\t\t\treasons = append(reasons, fmt.Sprintf(\"instance type %q is not available in all zones (available in zones %v, need %v)\", instanceType, zones, igZones))\n\t\t\tklog.V(2).Infof(\"can't use instance type %q, available in zones %v but need %v\", instanceType, zones, igZones)\n\t\t}\n\t}\n\n\t// Log the detailed reasons why we can't find an instance type\n\tklog.Warning(\"cannot find suitable instance type\")\n\tfor _, reason := range reasons {\n\t\tklog.Warning(\"  *  \" + reason)\n\t}\n\treturn \"\", 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)\n}\n\n// supportsInstanceType uses the DescribeReservedInstancesOfferings API call to determine if an instance type is supported in a region\nfunc (c *awsCloudImplementation) zonesWithInstanceType(instanceType ec2types.InstanceType) (sets.String, error) {\n\tklog.V(4).Infof(\"checking if instance type %q is supported in region %q\", instanceType, c.region)\n\tctx := context.TODO()\n\trequest := &ec2.DescribeReservedInstancesOfferingsInput{}\n\trequest.InstanceTenancy = ec2types.TenancyDefault\n\trequest.IncludeMarketplace = aws.Bool(false)\n\trequest.OfferingClass = ec2types.OfferingClassTypeStandard\n\trequest.OfferingType = ec2types.OfferingTypeValuesNoUpfront\n\trequest.ProductDescription = ec2types.RIProductDescriptionLinuxUnixAmazonVpc\n\trequest.InstanceType = instanceType\n\n\tzones := sets.NewString()\n\n\tresponse, err := c.ec2.DescribeReservedInstancesOfferings(ctx, request)\n\tif err != nil {","sourceCodeStart":2023,"sourceCodeEnd":2059,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/upup/pkg/fi/cloudup/awsup/aws_cloud.go#L2023-L2059","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":"// before (cluster.yaml)\nmachineType: c8g.xlarge   # not offered in the chosen region/zones\n// after\nmachineType: c6g.xlarge   # supported in the cluster's region","handlingStrategy":"validation","validationCode":"// check the machine type is offered in the cluster's zones before applying\naws ec2 describe-reserved-instances-offerings \\\n  --region <region> --instance-type <machineType> \\\n  --query 'ReservedInstancesOfferings[].AvailabilityZone'","typeGuard":null,"tryCatchPattern":"if strings.Contains(err.Error(), \"could not find a suitable supported instance type\") {\n    return fmt.Errorf(\"%w; pick a machine type listed by 'aws ec2 describe-instance-types' for your region/subnets\", err)\n}","preventionTips":["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."],"tags":["aws","ec2","instance-type","capacity","kops"],"backgroundTag":"instance-type-not-supported-in-region","analyzedSha":"4c8573c808a73d578c5eadc86d410646ea0b0d73","analyzedAt":"2026-09-05T04:13:19.212Z","contentChangedAt":"2026-09-05T04:13:19.212Z","schemaVersion":2},"datasetVersion":"2026-09-12T07:17:12.445Z"}