./deploy.sh.
All quotas are per-region unless noted. Find them in the AWS Service Quotas console.
Summary table
Detailed breakdown
1. EC2 On-Demand vCPUs (Standard instances) — raise this first
Quota code: L-1216C47A · Default: 32 vCPUs The Terraform deployment creates two managed node groups, and Karpenter then launches additional CPU nodes from them-family (gen 5+, 2+ vCPUs) to run Impala services.
Initial managed node groups (created by ./deploy.sh):
Minimum at deploy time: 18 vCPUs (1 × m6a.4xlarge + 1 Karpenter bootstrap node).
After
./deploy.sh completes, Karpenter launches additional m-family nodes to schedule Impala services (mongodb, rabbitmq, prometheus, openai-api, planner, deployer, scaler, etc.). These workloads collectively require several nodes; the On-Demand quota must cover the full steady-state fleet.
Recommended target: 256 vCPUs — covers a full Impala service fleet plus headroom for Karpenter burst scaling without requiring another quota request mid-operation.
All instance types above are “Standard” family and count against the same quota. GPU nodes use separate Spot quotas — see sections 2 and 3.
2. GPU Spot instances — G family (g6e) — likely 0 by default
Quota code: L-3819A6DF (All G and VT Spot Instance Requests) · Default: 0–32 vCPUs (varies by region; often 0)
Karpenter’s GPU node pool uses g6e.xlarge or g6e.2xlarge Spot instances for inference workloads:
Karpenter selects the cheapest available type. To run a single GPU node you need at least 8 vCPUs in this quota (to allow either size to be selected).
Recommended target: 128 vCPUs — enough for up to 16× g6e.xlarge or 16× g6e.2xlarge concurrently, giving Karpenter room to scale inference workloads without stalling on quota.
Check your current quota:
g6e instances are not available in all regions. Before requesting the quota, verify availability:3. GPU Spot instances — P family (p5, p5en) — always 0 by default
Quota code: L-7212CCBC (All P Spot Instance Requests) · Default: 0 vCPUs
The GPU node pool also lists p5.48xlarge and p5en.48xlarge for high-end workloads. These have a default Spot quota of 0 and require a manual AWS review to increase.
Recommended target: 384 vCPUs (2× p5.48xlarge concurrently).
To use p5/p5en Spot instances:
- Open a Service Quota increase request for
L-7212CCBC. - Include a brief justification (ML inference workloads).
- AWS typically responds within 1–5 business days; capacity is regionally limited.
g6e instances automatically. If neither GPU family is available or quota is insufficient, GPU workloads will remain pending.
4. VPC interface endpoints per VPC
Quota name: Interface endpoints per VPC (search under the “Amazon VPC” service in the Service Quotas console) · Default: 50 The networking stack creates 13 interface endpoints by default, plus 1 more when Impala Connect is enabled (enable_impala_connect = true, which is the default):
Total: 14 interface endpoints with defaults. Each entry in
s3_cross_region_access_regions adds one more S3 interface endpoint per configured region.
This is well within the default quota of 50 for a fresh VPC. However, if you set existing_vpc_id to reuse an existing VPC that already hosts many endpoints, check your current count before deploying:
5. VPCs per region
Quota code: L-F678F1CE · Default: 5./deploy.sh creates 1 new VPC (CIDR 10.0.0.0/16 by default) unless you set existing_vpc_id to reuse an existing one.
Check your current count:
6. NAT gateways per Availability Zone
Quota code: L-FE5A380F · Default: 5 per AZ The default deployment creates 1 NAT gateway (single-AZ, cost-optimized). One Elastic IP is consumed per NAT gateway. Check your current count per AZ:single_nat_gateway = false for HA, you need 3 NAT gateways across 3 AZs and no room for error at the default limit of 5.
7. Elastic IP addresses
Quota code: L-0263D0A3 · Default: 5 The deployment allocates 1 Elastic IP for the NAT gateway (more if you setsingle_nat_gateway = false, one per AZ).
Check your current allocation:
8. S3 buckets
Quota code: L-DC2B2D3D · Default: 100 per account (account-wide, not per region) The Terraform storage stack creates 2 buckets. The Helm charts reference up to 2 additional customer-managed buckets (models storage and a dedicated batches bucket), for a total of 2–4 new buckets:
Check your current count:
9. EBS volumes — persistent storage from Helm workloads
EBS volumes are provisioned automatically by the EBS CSI driver when Helm charts are deployed. The following PersistentVolumeClaims are created by default (allgp3, encrypted):
Minimum persistent storage at chart deploy time: ~141 GiB across 5 volumes.
Additionally, every Karpenter-provisioned node consumes an EBS root/data volume:
- CPU nodes (Karpenter-managed): 30 Gi gp3 root volume per node
- GPU nodes (
g6e/p5): 4 Gi root (Bottlerocket OS) + 50 Gi data volume per node
WaitForFirstConsumer).
10. Load balancers (ALB + NLB)
ALB quota code: L-53DA6B97 · NLB quota code: L-69A177A2 · Default: 20 each Created by Terraform (./deploy.sh):
- 1 NLB — PrivateLink endpoint service (
enable_eks_api_privatelink = trueby default)
- 1 ALB —
impala-servicesingress (routesdeployer,scaler,hardware-estimator) - 0–3 optional internal NLBs — one each for
deployer,mongodb, andprometheuswheninternalNLB.enabled: trueis set in their chart values (used for cross-region / satellite cluster connectivity)
11. EKS clusters
Quota code: L-1194D53C · Default: 100 The deployment creates 1 EKS cluster. The default limit is very unlikely to be an issue.12. IAM — roles, policies, and attachments per role
12a. IAM roles
Quota code: L-FE177D64 · Default: 1000 per account The deployment creates 12 IAM roles in total (all features enabled):
Rarely a problem, but check if your account is near the limit:
12b. Customer managed policies
Quota code: L-E95E4862 · Default: 1500 per account The deployment creates 15 customer managed policies (all features enabled):
Check current count:
12c. Managed policies attached to a role — raise this before deploy
Quota code: L-0DA4ABF3 · Default: 10 per role Theeks_nodes role receives 11 managed policy attachments when all default features are enabled:
With the default configuration (
enable_karpenter = true, S3 buckets provided), eks_nodes sits at 11 — one over the default limit of 10. The deployment will fail at the iam-base apply step unless this quota is raised first.
Recommended target: 25 — gives room for the current 11 attachments plus future policy additions without needing another quota request.
Request the increase:
IAM is a global service. The quota is account-wide, not per-region — request it once in
us-east-1 regardless of your deployment region.Checking and requesting increases
- Open the AWS Service Quotas console in the target region.
- Search for the quota by name or code.
- Select Request quota increase and enter the desired value.
- On-Demand EC2 vCPU increases are usually auto-approved within a few hours. Spot GPU quotas (especially P family) require manual AWS review — submit these first, they take the longest.
<your-region> with your deployment region):

