Deploy an Ubuntu EKS cluster

This guide shows how to deploy an Ubuntu EKS cluster using an official EKS AMI.

Prerequisites

You need:

Create the eksctl config file

Create a config.yaml with the following content:

---
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: my-cluster
  region: region-code
  version: '1.31'

iam:
  withOIDC: true

nodeGroups:
  - name: ng-ubuntu
    instanceType: m5.large
    desiredCapacity: 3
    amiFamily: Ubuntu2404
    iam:
       attachPolicyARNs:
          - {arn-aws}iam::aws:policy/AmazonEKSWorkerNodePolicy
          - {arn-aws}iam::aws:policy/AmazonEC2ContainerRegistryReadOnly
          - {arn-aws}iam::aws:policy/AmazonSSMManagedInstanceCore
          - {arn-aws}iam::aws:policy/AmazonEKS_CNI_Policy
    ssh:
        allow: true
        publicKeyName: my-ec2-keypair-name

To use an Ubuntu specific AMI, set amiFamily to one of these choices: - Ubuntu2004 for EKS version <= 1.29 - Ubuntu2204 for EKS version >= 1.29 - Ubuntu2404 for EKS version >= 1.31

For further cluster customization, check out the config file schema for eksctl

Deploy the EKS cluster

To deploy the EKS cluster, run:

eksctl create cluster -f config.yaml

You might need to specify the --profile option if you have multiple profiles.

You can confirm the status of the nodes on your cluster using:

$ kubectl get nodes

NAME                                           STATUS   ROLES    AGE     VERSION
ip-xxx-xxx-xx-xxx.us-east-1.compute.internal   Ready    <none>   2m45s   v1.31.x
ip-xxx-xxx-x-xx.us-east-1.compute.internal     Ready    <none>   2m45s   v1.31.x