Create the EKS cluster
Alice, the platform engineer, creates the EKS cluster eks-prod with a small On-Demand system group, a Spot platform group and no GPU. These values are for an AstroPulse-managed EKS cluster; GKE and AKS have their own creation fields.
Before you start
- An AWS account ID of 12 digits.
- GPU quota in the region before you add GPUs (step 6, or Node Autoscaling later). The cluster does not need it, but a new AWS account has none; see If your GPU quota is 0.
- The GPU's zones, from Accelerators.
Create from the console
1. Alice names the cluster
Path: Infrastructure > Kubernetes > New cluster > Name and cloud
- Select Bring your own account.
- Cluster Name
eks-prod(your cluster's name), cloud AWS. - Region: one that offers your GPU. The console offers only regions with at least three availability zones.
2. Alice connects the AWS account
Path: Create cluster > Account, then Connect
- AWS Account ID: 12 digits, or Already connected.
- Complete the Connect stages.
3. Alice chooses Kubernetes settings
Path: Create cluster > Kubernetes
- Kubernetes Version: Kubernetes 1.36 or newer (GPU node groups need at least 1.36); list what your cloud offers with
astroctl cloud aws k8s-versions. - Compute Mode: Managed node groups.
- Keep the default AMI Family.
You cannot change it after creation. Auto Mode refuses the Node Autoscaling add-on.
4. Alice uses the AstroPulse-managed network
Path: Create cluster > Network
- Leave CIDR Block (Optional) empty, Use Existing VPC off.
Turn on Use Existing VPC only when your organization requires its own network.
5. Alice adds the system and platform node groups
Path: Create cluster > Node groups > Add Node Group
- First group: Name
system(a name for your own node group); Pick machine typesm6i.large(machine types offered in your region, as arem5.large,m6a.largeandm7i.largebelow); Nodes1; Pricing On-Demand. - Second group: Name
platform(a name for your own node group); Pick machine typesm6i.large,m5.large,m6a.largeandm7i.large; Nodes2. - Pricing for
platform: Spot, much cheaper, though the cloud can take a node back at short notice. - Leave both groups on All 3 zones, so each can place nodes in the region's first three zones.
- A managed node group stays at its size. On these 3 fixed nodes the core add-ons run two copies; nodes added by autoscaling do not count.
With only Spot groups, the Review step's dry run warns System pods run only on Spot nodes: one Spot reclaim could stop the AstroPulse agent and the add-on controllers together. The On-Demand system group is the fix it asks for: any group with On-Demand pricing, at least 1 node and no taint other than CriticalAddonsOnly or PreferNoSchedule clears it.
6. Optional: Alice adds a warm GPU node group
Path: Create cluster > Node groups > Add Node Group
- Only for a warm GPU or reserved capacity: Name
gpu-serving(a name for your own node group). - Request GPU hardware: L4 (the GPU model you need), Devices per node 1.
- Pick specific zones, Pricing On-Demand, Nodes
1.
A fixed GPU group bills all day but gives predictable latency. Without it, the Node Autoscaling GPU pool launches a GPU node only when a model needs one.
7. Alice creates the cluster
Path: Create cluster > Notifications > Review > Create
- Read the review checks, then select Continue to create and Create.
It shows the plan and creates the cluster when you approve.
From the CLI: the same checks run from a spec file and create nothing. This is the spec for this page with an example account. Replace us-west-2 with your region and 123456789012 with your AWS account ID:
apiVersion: platform.astropulse.io/v1
kind: K8sCluster
spec:
clusterName: eks-prod
provider: aws
region: us-west-2
clusterSpec:
dataPlane:
nodeGroups:
- name: system
minNode: 1
maxNode: 1
machineTypes: [m6i.large]
instanceType: OnDemand
- name: platform
minNode: 2
maxNode: 2
machineTypes: [m6i.large, m5.large, m6a.large, m7i.large]
instanceType: Spot
provisioner:
type: eks
eks:
accountId: "123456789012"
credentials:
type: Dynamic
astroctl infra k8s apply -f eks-prod.yaml --dry-run
In our run all 14 checks passed in 9 seconds; four of them:
[PASS] Instance Type Availability: All 4 instance types available in us-west-2
[PASS] Cluster Existence: No EKS cluster named eks-prod in the account's us-west-2 region
[PASS] Zone Offering: Node group platform can be placed: m6i.large, m5.large, m6a.large, m7i.large offered in every zone [us-west-2a, us-west-2b, us-west-2c]
[PASS] Quota Headroom: Node group platform needs 4 vCPU for the starting nodes (minimum 2 × 2 vCPU, m6i.large); quota "All Standard (A, C, D, H, I, M, R, T, Z) Spot Instance Requests" (L-34B43A08) has headroom: a limit of 32 vCPU, with 0 in use by other capacity
✅ Cluster configuration is valid
To create the cluster, run the same command without --dry-run. A plan already at its cluster limit is refused with no checks run, for example You have reached the Clusters limit on your current developer plan (1/1); delete any failed clusters, or upgrade your plan.
Ready when
eks-prod reports Ready and Connected, with its agent reporting and no GPU node unless Alice added the warm GPU group.
Clean up
A cluster created only for this example keeps costing until you delete it. An org Owner opens it under Infrastructure > Kubernetes, selects Delete, waits for the Delete Cluster dialog's dry run to pass, types the cluster name, then selects Delete Permanently. This uninstalls every add-on first, including Node Autoscaling, so its GPU nodes are removed. For the full order, see Clean up.