✅ What Will You Learn?
By reading this article, you will learn:
- What Amazon EKS (Elastic Kubernetes Service) is and why it is used
- The core components involved in an EKS architecture (cluster, nodes, control plane)
- How EKS simplifies Kubernetes management on AWS
- The difference between managed Kubernetes (EKS) and self-managed Kubernetes.
What is AWS EKS?
AWS EKS is a managed Kubernetes service, where AWS takes responsibility for the control plane (master nodes). This includes provisioning and maintaining the API server, scheduler, controller manager, and etcd. As a user, you only need to manage worker nodes.
Why not self-managed Kubernetes cluster?
There is a lot of overhead to creating, managing, scaling, and maintaining a self-hosted Kubernetes cluster. We can offload all that work to a managed AWS EKS cluster. You are bound to have issues if you are managing and setting up the cluster by yourself. You have to take care of the securing your self-managed Kubernetes cluster.
Why EKS?
AWS EKS works on a shared responsibility model, where EKS manages the control plane and the customer manages worker nodes. There are different services that manage the worker nodes for you in AWS, which is discussed below.
The benefits of using AWS EKS are many because of its widely accepted way of running and managing clusters. Customer only has to be concerned about the usage of cluster not the management part, which is mostly taken care of by AWS. And using AWS EKS cluster gives you the benefit of easy coupling with other AWS services, which will be a hassle otherwise.
Reduced Complexity: Managing Kubernetes yourself is difficult and time-consuming.
Security: AWS follows best practices for security and cluster hardening.
Integration: Seamlessly integrates with other AWS services like S3, IAM, and Secrets Manager.
Worker Node Management Options
Since EKS only manages the control plane, it’s up to you to setup worker nodes. You must choose a method for these worker nodes:
Self-managed Nodes: You manually provision, configure (install kubelet, container runtime), and patch EC2 instances and register them with your cluster’s control plane yourself.
Managed Node Groups: AWS automates the provisioning and lifecycle management of EC2 instances using EKS-optimised images. Every node is part of an Auto Scaling Group (ASG) that’s managed for you by EKS.
AWS Fargate: A serverless option where you don't provision EC2 instances at all. Fargate creates worker nodes on demand based on your container's resource requirements. That’s the most pocket friendly and easiest option in my opinion. It automatically creates the right EC2 instance based on your requirement and is pay-per-use. It automatically scales up and scales down based on the demand.
Why to move from Console to Code?
In order to make EKS work from the AWS console, you have to give:
Container name for the cluster and k8s version that you want to run.
Setup IAM role for the cluster, so it has all the necessary privileges to perform the various operations it needs like provisioning nodes, accessing secrets and storage.
Select VPC & subnets where you want your EKS cluster running.
Define security group for cluster: to lock down what traffic goes to and from your cluster.
-
Then, you have to create worker nodes for which you have to:
- Create Node group: It’s nothing but a group of nodes that you’ll register in your control plane.
- Select instance type that you want to use for your EC2 instances.
- Define the min/max number of nodes that you want in your node group.
- Specify EKS cluster to connect to, so here, we’ll specify the EKS cluster that we setup in the previous step.
-
Then, connect to your EKS cluster from your local machine. For that, go to AWS Console, get the connection information for the EKS cluster, and run set-cluster command, then you’ll be able to deploy your application.
kubectl config set-cluster <cluster_id>
Whereas if you don’t want to follow this long and tedious process of creating this cluster yourself and if you are comfortable with the code, you can provision your entire Kubernetes cluster with a single command, and it will automatically create security groups, VPC, etc.
Deploying with eksctl
While you can use the AWS Console, the process is tedious. The command-line utility eksctl (created by Weaveworks) automates the entire setup (VPC, subnets, control plane, node groups) with a single command.
Steps to deploy:
- Authentication: Set up your AWS credentials (access key and secret key) in the .aws/credentials file. To get these credentials and set it up:
- Go to AWS IAM → Users → Select a existing user or create new → Security Credentials tab → Under Access Keys section → Create Access key.
- If you have the AWS CLI tool, run aws configure and it will prompt you to fill the access key and secret.
- Follow AWS CLI guide.
- Creation Command:
eksctl create cluster -n cluster-one --node-group-name node-group-1 --region us-east-1 --node-type t2.micro --nodes 2
- Automatic Config: eksctl automatically updates your local kubectl config file, allowing you to run kubectl get nodes immediately after the cluster is ready.
Cleaning Up
To avoid ongoing costs, you can delete the cluster and all associated resources (VPC, subnets, etc.) with:
eksctl delete cluster -n cluster-one
Link to Official EKSCTL documentation.
How it looks on AWS Console?
Output of ekctl create command:
This is how your EKS cluster looks on AWS Console. Nodes (with its instance type, node group and status), Node groups (with its node group name and desired instace size that will scale up and down based on your traffic), Cluster info (with Kubernetes version running on your cluster).
These are the 2 EC2 instances that are created and managed by EKS, which are registered as nodes in EKS cluster.
To get your cluster info, you can run kubectl config view and see that your cluster is added to your Kubernetes config, and under context, you’ll see the info of your cluster.
Output of kubectl get nodes
Key Takeaways
Amazon EKS is a fully managed Kubernetes service that reduces the operational overhead of running Kubernetes clusters
AWS manages the control plane, allowing you to focus more on deploying and scaling applications
EKS integrates seamlessly with AWS services like IAM, VPC, CloudWatch, and Load Balancers
It provides high availability, security, and scalability for containerized workloads
Understanding EKS is an essential skill for DevOps and Cloud Engineers
EKS is widely used in production environments for microservices and container orchestration















Top comments (1)
Commendable work!! This is quite easy to comprehend. You explained everything really well.💫