{"record":{"id":"d9582d3ec04eb96c","repo":"kubernetes/kops","slug":"no-instance-types-were-returned-because-the-criter","errorCode":null,"errorMessage":"no instance types were returned because the criteria specified was too narrow","messagePattern":"no instance types were returned because the criteria specified was too narrow","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cmd/kops/toolbox_instance-selector.go","lineNumber":300,"sourceCode":"\t\tif filters.VCpusToMemoryRatio == nil {\n\t\t\tdefaultStartRatio := float64(2.0)\n\t\t\tmutatedFilters.VCpusToMemoryRatio = &defaultStartRatio\n\t\t}\n\t}\n\n\tnewInstanceGroups := []*kops.InstanceGroup{}\n\n\tfor i := 0; i < igCount; i++ {\n\t\tigNameForRun := options.InstanceGroupName\n\t\tif igCount != 1 {\n\t\t\tigNameForRun = fmt.Sprintf(\"%s%d\", options.InstanceGroupName, i+1)\n\t\t}\n\t\tselectedInstanceTypes, err := instanceSelector.Filter(ctx, mutatedFilters)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"error finding matching instance types: %w\", err)\n\t\t}\n\t\tif len(selectedInstanceTypes) == 0 {\n\t\t\treturn fmt.Errorf(\"no instance types were returned because the criteria specified was too narrow\")\n\t\t}\n\t\tusageClass := *filters.UsageClass\n\n\t\tig := createInstanceGroup(igNameForRun, options.ClusterName, igSubnets)\n\t\tig = decorateWithInstanceGroupSpecs(ig, options)\n\t\tig, err = decorateWithMixedInstancesPolicy(ig, usageClass, selectedInstanceTypes)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif options.ClusterAutoscaler {\n\t\t\tig = decorateWithClusterAutoscalerLabels(ig, options.ClusterName)\n\t\t}\n\t\tig, err = cloudup.PopulateInstanceGroupSpec(cluster, ig, cloud, channel)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tnewInstanceGroups = append(newInstanceGroups, ig)","sourceCodeStart":282,"sourceCodeEnd":318,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/cmd/kops/toolbox_instance-selector.go#L282-L318","documentation":"Filter() succeeded but returned zero instance types, meaning the supplied criteria (vCPU:memory ratio, flexible window, usage class, zones) match no EC2 instance type. kOps treats an empty result as a user-input error rather than a system failure.","triggerScenarios":"instanceSelector.Filter returns a non-empty-nil slice (len == 0) for the mutated filters — e.g. a very narrow vcpus-to-memory ratio with small flexible bounds, or spot-only requests in a zone with no matching families.","commonSituations":"Specifying an extreme ratio like 1:16 or 16:1 with --flexible 1; targeting a single zone with limited families; requesting spot capacity with tight constraints during spot shortages.","solutions":["Widen the --vcpus-to-memory-ratio range or remove it entirely.","Increase --flexible so more candidate shapes can qualify.","Allow more zones (more subnets) instead of one AZ.","Switch usage class from spot to regular, or vice versa, if that is the binding constraint."],"exampleFix":"// before\nkops toolbox instance-selector --vcpus 4 --memory 4 --flexible 1 --zones us-east-1a\n// after\nkops toolbox instance-selector --vcpus 2 --memory 8 --flexible 5","handlingStrategy":"fallback","validationCode":"func filtersTooNarrow(f selector.Filters) bool {\n\treturn (f.Flexible != nil && *f.Flexible < 2) ||\n\t\t(f.VCpusToMemoryRatio != nil && (*f.VCpusToMemoryRatio < 1 || *f.VCpusToMemoryRatio > 16))\n}","typeGuard":null,"tryCatchPattern":"selected, err := instanceSelector.Filter(ctx, mutatedFilters)\nif err == nil && len(selected) == 0 {\n\tmutatedFilters.Flexible = ptr.To(10) // widen and retry\n\tselected, err = instanceSelector.Filter(ctx, mutatedFilters)\n}","preventionTips":["Prefer omitting --vcpus-to-memory-ratio unless you need it.","Use --flexible >= 3 so multiple shapes can match.","Target multiple zones instead of a single AZ."],"tags":["instance-selector","user-input","filtering"],"backgroundTag":"no-matching-instance-type","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"}