Skip to content

instanceSelector should ignore unavailable instanceTypes #3531

@kr3cj

Description

@kr3cj

The new instanceSelector feature looks awesome and has the potential to simplify our eks config yaml as well as make it more intuitive and increase supportability.

What feature/behavior/change do you want?
I was testing the new instanceSelector feature available in eksctl 0.44.0-rc.0 in EKS using Kubernetes version 1.19 on cluster in us-east-1 using platform version eks.2. When requesting instanceTypes that support a certain vCPUs/memory/gpu filters, I expect it to only return instanceTypes that are available for all of the availability zones requested in my nodegroup. While this has worked in most cases, I found at least one that does not work.

Consider the below eksctl yaml snippet for a managedNodeGroup and running eksctl create nodegroup...:

managedNodeGroups:
  - name: my-node-group
    availabilityZones:
      - us-east-1a
      - us-east-1b
      - us-east-1d
    instanceSelector:
      vCPUs: 4
      memory: "16"
    spot: true

The nodegroup fails to spin up due to this CloudFormation error: Your requested instance type (d3en.xlarge) is not supported in your requested Availability Zone (us-east-1a). Please retry your request by not specifying an Availability Zone or choosing us-east-1b, us-east-1c, us-east-1d.

Why do you want this feature?
I want this feature so that I can have confidence that using instanceSelector will work reliably for my environment. I don't want to worry about new conditions that may prevent cluster-autoscaler from spinning up more nodes. This could result in CloudFormation or ASG errors that affect my cluster's ability to meet increased demand. Conditions such as new instanceTypes being released for a region that are not yet released in all availability zones.

Deliverable
AWS Support suggested that I raise an issue directly on the AWS Instance Selector github page to request appropriate functionality since my understanding is that tool powers this feature for eksctl. I will do that (issue creation pending) but wanted to create an issue here for two reasons: raise awareness for any others running into the same issue and in case a fix for that tool requires refactoring on the eksctl side.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions