Skip to content

EKS InferenceCluster node pools can only use a region's first three Availability Zones #581

Open

Description

@negz

What happened?

An EKS InferenceCluster's VPC only has subnets in the region's first three Availability Zones, so a pool's zones must be among them. In us-east-1, g6.12xlarge was out of capacity in 1a, 1b and 1c, and AWS suggested 1d or 1f, which no pool could use.

compose-eks-cluster derives each subnet's AZ from its index in subnetCidrs, which defaults to three CIDRs:

for i, cidr in enumerate(self._networking().subnetCidrs or []):
az = _az(self.xr.spec.region, i)

subnetCidrs:
type: array
description: >-
Subnet CIDRs, one per Availability Zone. EKS requires
at least two subnets in different AZs. The function
picks AZs by index from the region — index 0 maps to
the region's first AZ alphabetically (e.g. us-west-2a),
index 1 to the second, etc.
minItems: 2
maxItems: 6
default: ["10.0.0.0/20", "10.0.16.0/20", "10.0.32.0/20"]
items:
type: string
maxLength: 18

The EKSCluster XR accepts up to six, but the InferenceCluster doesn't expose subnetCidrs. Even with more subnets, compose-eks-cluster picks their zones by letter, not by name.

How can we reproduce it?

  1. Create an EKS InferenceCluster in us-east-1 with a pool whose zones is [us-east-1d].
  2. Look at the private subnets the EKSCluster composes. There's none in us-east-1d.

What environment did it happen in?

Modelplane version: main plus #542 (e574dcf)

  • Crossplane v2.4.0
  • provider-aws-ec2 v2.8.1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions