Skip to content

EC2 fleet-request limit stops every EKS node group in the test account #38

Closed

Description

@devantler

🤖 Generated by the Agentic Engineer

Evidence

  • Three KSail end-to-end EKS runs in a row failed while creating the worker node group (2026-10-06 16:39 and 22:15 UTC, 2026-10-07 00:19 UTC). The control plane was created each time; the worker machines never joined.
  • The third run (37551351240) printed the reason from the node-group stack: AsgInstanceLaunchFailures — "You've reached your quota for maximum Fleet Requests for this account. Launching EC2 instance failed." Region us-east-1.
  • Two runs of the same test from a branch succeeded on 2026-10-05, so the account could launch instances the day before. Something changed between those days: either the limit, or what is using it up.
  • Each failed run removed its own cluster and stacks, and the last one read back that no cluster remained.

Audience and problem

Anyone relying on KSail's EKS support being tested. No EKS node group can be created in this account right now, so the end-to-end test cannot pass whatever KSail does, and each attempt costs about 50 minutes of control-plane time for no result. Anything else in the account that launches instances through an Auto Scaling group may be affected the same way.

What is not known yet

  • Whether the account's limit is very low (new or restricted accounts start low) or whether leftover fleet or Spot requests are using it up.
  • Whether the suite's own CI cluster in this account is affected.

Smallest useful change

Read the account's current EC2 fleet-request usage and limit in us-east-1, remove any leftover requests that belong to nothing, and if the limit itself is the cause, request an increase. Record what was found here.

Acceptance criteria

  • The cause is recorded: limit too low, or usage left behind by something named.
  • One KSail end-to-end EKS run creates its worker node group.
  • If leftovers were the cause, what created them is named and tracked. (Not applicable: nothing was left behind.)

Resolution (2026-10-13)

  • Cause: the account's applied limit for running On-Demand Standard instances was 0 vCPUs in every region that was read. Nothing left behind was using capacity: each report found no fleets, Spot requests, instances or scaling groups.
  • Change: AWS Support raised the limit for eu-central-1 at the maintainer's request. The read-only report shows 16 vCPUs there (run 38400429101). us-east-1 is still 0 (run 38401187144).
  • Proof: end-to-end run 38400764426 from KSail main created the control plane and a worker node group with one Ready node in eu-central-1. Its cluster was removed afterwards and the account was read back empty (run 38409322992).

EKS tests must name eu-central-1 until the workflows' default region changes (devantler-tech/ksail#7719).

Activity

  1. added theissue type on Oct 7, 2026
  2. added a commit that references this issue on Oct 7, 2026
  3. devantler commented on Oct 7, 2026

    @devantler
    ContributorAuthor

    🤖 Generated by the Agentic Engineer

    First step is in review: devantler-tech/ksail#7592 adds a manual, read-only check that reports what is using launch capacity in this account (fleets, Spot requests, machines and scaling groups by state, plus the limits when the test role may read them), without creating a cluster. Once it merges, one run of it should settle the first acceptance point here: limit too low, or usage left behind. No EKS test run before that.

  4. devantler commented on Oct 7, 2026

    @devantler
    ContributorAuthor

    🤖 Generated by the Agentic Engineer

    First reading of the account, 2026-10-07 05:43 UTC — the read-only report from devantler-tech/ksail#7592, run once from main: run 37577740092 (success, region us-east-1, no cluster created).

    What Count
    EC2 fleets, any state 0
    Spot fleet requests 0
    Spot instance requests 0
    Instances not terminated 0
    Auto Scaling groups 0
    Fleet, On-Demand and Spot limits could not be read

    What this settles. Nothing is holding launch capacity in this region: there are no leftover fleets, Spot requests, machines or scaling groups to remove. The "leftover requests are using it up" explanation is ruled out for the moment of this reading.

    What it does not settle. The limits themselves could not be read, because the test role is not allowed to read service quotas. So this is consistent with the limit being very low or zero, but does not show the number. It is also one reading, about five hours after the last failed run, of one region.

    Next steps, in order:

    1. Let the test role read service quotas (a read-only permission, changed in this repository), then run the report again to get the actual fleet-request limit.
    2. If the limit is the cause, an increase has to be requested from AWS. That changes the account and is the maintainer's to request; this issue will carry the exact quota name and current value for it once step 1 has run.

    No further EKS smoke-test run is started until the limit is known, since each one costs about 50 minutes of control-plane time and cannot pass.

  5. self-assigned this
    on Oct 7, 2026
  6. added a commit that references this issue on Oct 7, 2026
  7. devantler commented on Oct 7, 2026

    @devantler
    ContributorAuthor

    🤖 Generated by the Agentic Engineer

    Step 1 is in review: devantler-tech/platform#4623. The EKS test identity's permissions are owned by the platform repository, not this one, so the change is there (tracked as devantler-tech/platform#4622). It adds one read-only permission: listing the account's service limits. Nothing else about the identity changes.

    Once it is merged and deployed, one run of the existing capacity report gives the fleet-request limit, and the value goes here. No EKS test run before that.

  8. devantler commented on Oct 7, 2026

    @devantler
    ContributorAuthor

    🤖 Generated by the Agentic Engineer

    Current test budget: no more than five Standard On-Demand vCPUs, with one EKS trial at a time. The current KSail smoke test uses one managed node group of t3.medium workers and exercises 1 → 2 → 1 nodes. Each worker has 2 vCPUs, so the peak is 4 vCPUs, provided unrelated usage leaves that capacity available. The earlier statement here that this test required 8 or 16 vCPUs was incorrect. A larger quota is not a prerequisite for this fixture.

    Fresh observation, 2026-10-09 20:52 UTC: capacity report 37989724483 completed from KSail main at 5d6163a2974e3ba31bd0cda94d6ed4a0579aecf8, without creating a cluster.

    Observation in us-east-1 Value
    Applied Running On-Demand Standard instances quota 0 vCPUs
    EC2 fleets, Spot fleet requests, Spot instance requests 0
    Instances not terminated 0
    Auto Scaling groups 0

    This is a successful quota read, not an unreadable value interpreted as zero. The European observations below extend the regional survey. An EKS cluster is not launched against an observed zero quota.

    The separate upgrade trial in devantler-tech/ksail#7483 upgrades only the control plane and therefore does not request additional worker nodes. A future managed-node version upgrade needs its own peak-capacity assessment. Its existing dependency on devantler-tech/ksail#7273 and real-provider validation remain in place.

    AWS measures this quota in vCPUs per account per Region, and the console's applied quota can differ from the published default of 5. References: AWS quota units and applied-value instructions, T3 worker vCPU counts.

    European survey, 2026-10-09: the same read-only workflow ran sequentially in all eight European Regions at KSail revision 5d6163a2974e3ba31bd0cda94d6ed4a0579aecf8.

    Region Applied Standard On-Demand quota Evidence
    eu-north-1 0 vCPUs Report
    eu-central-1 0 vCPUs Report
    eu-west-1 0 vCPUs Report
    eu-west-2 0 vCPUs Report
    eu-west-3 0 vCPUs Report
    eu-south-1 Unknown — authentication failed before quota read Report
    eu-south-2 Unknown — authentication failed before quota read Report
    eu-central-2 Unknown — authentication failed before quota read Report

    All five successful reports also read zero Standard Spot quota and no EC2 fleets, Spot requests, non-terminated instances or Auto Scaling groups. The three failed reports never reached the quota read, so they are unknown, not zero. No AWS resources were created. A usable five-vCPU quota has not been found in the European Regions queried with KSail's test identity. The account and applied quota visible in the owner's console still need to be reconciled with these observations; AWS's published default of five is not an applied-account reading.

  9. removed their assignment
    on Oct 7, 2026
  10. devantler commented on Oct 13, 2026

    @devantler
    ContributorAuthor

    🤖 Generated by the Agentic Engineer

    Applied limit read live, 2026-10-13. The maintainer reported today that AWS Support approved the EC2 limit increase for Frankfurt. That is now confirmed by the read-only capacity report, run from KSail main at 44cf4a43bf6ab09a42b3cb762714152c374fb332. Neither run created anything.

    Region Applied Running On-Demand Standard instances limit Fleets, Spot requests, instances, scaling groups Evidence
    eu-central-1 16 vCPUs (was 0 on 2026-10-12) 0 report 38400429101, 12:52 UTC
    us-east-1 0 vCPUs (unchanged) 0 report 38401187144, 12:58 UTC

    What this means. EKS tests can run in eu-central-1. They still cannot run in us-east-1, which is the default region of both EKS workflows, so every EKS run has to name eu-central-1 until that default is changed.

    One trial is running now: the EKS smoke test from main in eu-central-1, run 38400764426. It uses one control plane and one node group that goes 1 → 2 → 1 workers (4 vCPUs at its peak), is bounded by the workflow's own time limit, and removes its cluster when it ends. Please start no other EKS run until this one has finished and its teardown has been read back here.

    This issue stays open until that run shows a worker node group being created, which is its second acceptance point.

  11. devantler commented on Oct 13, 2026

    @devantler
    ContributorAuthor

    🤖 Generated by the Agentic Engineer

    Closing: all three acceptance points are met. The trial announced above has finished.

    Two things to know when starting the next test: only eu-central-1 has capacity (us-east-1, the workflows' default, is still at 0; devantler-tech/ksail#7719), and one more trial is running now, 38409548492. Please start no other EKS run until it has finished.

  12. moved this from 📥 Backlog to ✅ Done in 🌊 Project Boardon Oct 13, 2026
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

    No labels
    No labels

    Type

    Fields

    Priority

    None yet

    Effort

    None yet

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions