Installing/Setup Kubernetes Cluster with AWS EKS using eksctl

Farid Vosoughi
3 min readJun 1, 2024

--

To install a Kubernetes Cluster on AWS EKS using eksctl, you can follow these steps. This guide is structured similarly to the one from ComputingForGeeks, ensuring all necessary steps are covered.

Prerequisites

  1. AWS Account: Ensure you have an AWS account with sufficient permissions.
  2. AWS CLI: Install and configure the AWS CLI with appropriate IAM permissions.
  3. eksctl: Install eksctl.

Install AWS CLI

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

Configure AWS CLI with your credentials:

aws configure

Install eksctl

curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
sudo mv /tmp/eksctl /usr/local/bin

Step 1: Create EKS Cluster Configuration File

I choose eu-central-1 (frankfurt), you can choose your region

eks-sigma is my cluster name, you can define what you want

eksctl create cluster --name=eks-sigma \
--version 1.28 \
--region=eu-central-1 \
--zones=eu-central-1a,eu-central-1b,eu-central-1c \
--without-nodegroup

Step 2: Create Node Group Configuration

You can create either a public or private node group depending on your requirements.

Public Node Group Configuration <br> A public node group allows nodes to have public IP addresses and be directly accessible from the internet.

eksctl create nodegroup --cluster=eks-sigma \
--region=eu-central-1 \
--name=eks-sigma-nodegroup-public \
--node-type=t3.large \
--nodes=3 \
--nodes-min=1 \
--nodes-max=4 \
--node-volume-size=30 \
--ssh-access \
--ssh-public-key=kube-sigma \
--managed \
--asg-access \
--external-dns-access \
--full-ecr-access \
--appmesh-access \
--alb-ingress-access

Private Node Group Configuration <br> A private node group keeps the nodes private within your VPC, without public IP addresses, enhancing security.

eksctl create nodegroup --cluster=eks-sigma \
--region=eu-central-1 \
--name=eks-sigma-nodegroup-private \
--node-type=t3.medium \
--nodes=3 \
--nodes-min=1 \
--nodes-max=4 \
--node-volume-size=30 \
--managed \
--node-private-networking \
--ssh-access \
--ssh-public-key=kube-sigma \
--asg-access \
--external-dns-access \
--full-ecr-access \
--appmesh-access \
--alb-ingress-access

Step 3: Configure kubectl

kubectl is the command-line tool for interacting with the Kubernetes cluster. After the EKS cluster is up and running, you need to configure kubectl to communicate with your EKS cluster.

  1. Install kubectl:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl sudo mv kubectl /usr/local/bin/
  1. Enable kubectl to use your new EKS cluster:
aws eks --region eu-central-1 update-kubeconfig --name eks-sigma

Step 4: Verify the Cluster and Node Group

To verify that your cluster and node group are set up correctly, you can run the following commands:

kubectl get svc
kubectl get nodes

Step 5: Deploy a Sample Application

Now that your cluster is up and running, you can deploy a sample application to ensure everything is working correctly.

  1. Create a deployment:
kubectl create deployment hello-node --image=k8s.gcr.io/echoserver:1.4
  1. Expose the deployment as a service:
kubectl expose deployment hello-node --type=LoadBalancer --port=8080
  1. Get the service URL:
kubectl get services hello-node

After deploy sample application and expose it’s service, You can check external url with expose port in your browser like bellow :

http://ac9091d71ada24e56a8f9daf99bde754-1632655992.eu-central-1.elb.amazonaws.com:8080/

--

--

Farid Vosoughi
Farid Vosoughi

Written by Farid Vosoughi

Interested in learning new technologies related to software development

No responses yet