Custom AMI Support in Cluster and Node Group Creation
The Custom AMI Support feature enables users to create Kubernetes clusters and node groups using custom Amazon Machine Images (AMIs). This provides the flexibility to deploy clusters with pre-configured environments, software, and security settings tailored to specific organizational requirements.
Feature Overview
With Custom AMI Support, you can:
- Use custom AMIs during EKS cluster and node group creation
- Pre-configure nodes with software, configurations, or patches before deployment
- Simplify deployments using images that meet security and compliance standards
- Choose from any AMIs you have created and own within your AWS account
Karpenter V1 does not support Ubuntu systems for automatic node scaling. When using Karpenter, select other supported operating systems for optimal functionality.
Supported AMI Families
Atmosly supports the following AMI families for AWS EKS clusters:
| AMI Family | Description | Karpenter Support |
|---|---|---|
| AL2 | Amazon Linux 2 — EKS-optimized, widely used default | Yes |
| AL2023 | Amazon Linux 2023 — latest Amazon Linux with improved security | Yes |
| Ubuntu | Ubuntu-based EKS nodes | No (Karpenter V1) |
| Bottlerocket | AWS-purpose-built container OS with minimal attack surface | Yes |
| Windows2019 | Windows Server 2019 for Windows container workloads | No |
| Windows2022 | Windows Server 2022 for Windows container workloads | No |
Custom AMI Creation Process
1. Create an EC2 Instance
Configure your instance with the desired software, security patches, and configurations.
2. Install Kubernetes Components
Ensure the following are installed and configured:
kubelet— Kubernetes node agent- AWS EKS agent — For EKS cluster integration
- Container runtime (containerd or Docker)
3. Create the AMI
Create an AMI snapshot of the configured EC2 instance from the AWS Console or CLI.
4. Store the AMI
The custom AMI is stored in your AWS region and becomes available for EKS deployments.
Using Custom AMI in Node Group Creation
When creating a new node group, specify the Custom AMI ID in the configuration:
- Navigate to the cluster's Node Groups section.
- Click Add Node Group.
- In the AMI field, select your custom AMI from the dropdown or enter the AMI ID.
- The AMI will provision all worker nodes in the node group.
Compatibility Check: The system automatically verifies:
- AMI compatibility with the selected Kubernetes version
- Presence of required
kubeletand AWS EKS agent components
If the AMI is incompatible, node group creation will fail with an error prompting you to update your image.
Using Custom AMI in Cluster Creation
During cluster setup:
- In the AMI selection step, select your custom AMI from the dropdown list.
- All nodes launched in the cluster will use the specified AMI.
- This ensures consistent configuration and environment setup across the cluster.
Instance Types
Custom AMIs can be paired with any supported EC2 instance type:
| Category | Examples |
|---|---|
| General Purpose | T3, T3a, T4g (burstable); M5, M5a, M5n, M5zn; A1 |
| Compute Optimized | C5, C5a, C5n; C6g, C6i |
| Memory Optimized | R4; R5, R5a, R5b, R5n; R6g; X1, X1e |
| Storage Optimized | I3, I3en; D2, D3, D3en; H1 |
| Accelerated Computing | P3, P4 (GPU); G4 (graphics); F1 (FPGA); Inf1 (inference) |
| ARM-based | AWS Graviton processors (A1, T4g, M6g, C6g, R6g) |
You can choose between On-Demand or Spot instances for cost optimization.
EBS Volume Types
When using custom AMIs, you can also configure the EBS volume type for node storage:
| Volume Type | Description |
|---|---|
| gp3 | General purpose SSD (default, recommended) |
| gp2 | Previous generation general purpose SSD |
| io1 | Provisioned IOPS SSD for high-performance workloads |
| io2 | Latest provisioned IOPS SSD with higher durability |
| st1 | Throughput-optimized HDD for frequently accessed data |
| sc1 | Cold HDD for infrequently accessed data |
| standard | Previous generation magnetic storage |
Notes
- Custom AMIs are only supported for AWS (EKS) clusters. For GCP (GKE) clusters, use the built-in image types (COS_CONTAINERD, UBUNTU, etc.).
- Regularly update your custom AMIs to include the latest security patches and Kubernetes components.
- Test custom AMIs in a non-production cluster before deploying to production.