Amazon Cloud (AWS) offers a number of services that aid with container orchestration, including Amazon Elastic Container Service (ECS), Amazon Elastic Kubernetes Service (EKS), Amazon LightSail, and Amazon Elastic Container Registry (ECR). In this article, we will learn about Amazon EKS, which is Kubernetes in AWS cloud.
1. What is Amazon EKS?
Amazon EKS (stands for Amazon Elastic Kubernetes Service) is a managed service that allows you to run Kubernetes on AWS Cloud without having to set up, administer, or maintain your own control plane and nodes.
Kubernetes is an open-source technology that automates the deployment, scaling, and management of containers, i.e. containerized Applications.
To achieve high availability, EKS runs and scales the Kubernetes control plane across different AWS Availability Zones. In Amazon EKS, control plane instances are automatically scaled based on load, and unhealthy control plane instances are detected and replaced, as well as automated version upgrades and patching will be done automatically.
Amazon EKS can be integrated with other AWS services to provision various facilities. For example, worker nodes can be provisioned by AWS EC2 Instances, ECR (Elastic Container Registry) for Container Images, VPC (Virtual Private Cloud) for isolating resources.
2. Amazon EKS Cluster Components
Amazon EKS cluster consists of two important components.
- EKS Control Plane
- EKS Nodes
2.1. EKS Control Plan
The Amazon EKS control plane is made up of nodes that execute Kubernetes software like etcd and the Kubernetes API server. The control plane operates on an AWS account, and the Kubernetes API is accessible through the Amazon EKS endpoint for your cluster. Each Amazon EKS cluster control plane has its own set of Amazon EC2 instances and is single-tenant and unique.
EKS Control plane is available across several availability zones; if any of the control planes has a problem, EKS automatically identifies and replaces those unhealthy control plane nodes, as well as providing on-demand, zero-downtime updates, and patching.
2.2. EKS Nodes
Amazon EKS nodes run in your AWS account and connect to the control plane of your cluster through an API server endpoint and a certificate file issued for your cluster. Node Groups should be created to provision the nodes in the EKS cluster.
A node group is made up of one or more nodes. In an Amazon EC2 Auto Scaling group, a node group is made up of one or more Amazon EC2 instances and all the instances must be the same type with the same Amazon Machine Image (AMI). And, a Node Group should use the same IAM role.
3. EKS Cluster Deployment Methods
You can create the EKS Cluster in two ways.
- Amazon EKS - eksctl: It is a simple command line utility for constructing and maintaining Kubernetes clusters. AWS and Weaveworks collaborated on eksctl, a tool that automates much of the process of setting up EKS clusters. Eksctl also supports resource provisioning through a config file, which is the preferable method because it allows you to version control your EKS cluster configuration.
- AWS Management Console and AWS CLI: This is the easiest method to deploy Amazon EKS cluster where you can launch EKS as service in AWS and add nodes by creating Node Groups in the AWS console itself.
4. How Amazon EKS Works
The easiest way of considering Amazon EKS is 'Kubernetes as a Service' by AWS Cloud.
As mentioned above, Amazon EKS consists of two main components; EKS Control Plane/Master and Data plane/Worker nodes which are building the EKS cluster. Both the planes are run in their own Virtual Private Clouds (VPCs).
The nodes in VPCs are in charge of running the container images or workloads. AWS also offers the networking infrastructure needed to connect these components and form a Kubernetes cluster.
Pods can be scheduled on any mix of self-managed nodes, Amazon EKS controlled node groups, and AWS Fargate in an Amazon EKS cluster.
Amazon EKS nodes run under your account and use the cluster's API server endpoint to communicate with the control plane.
The following details and diagram illustrate the deployment of applications in the EKS Cluster.
Provision Amazon EKS Cluster - Provisioning Master
You can create the Cluster in AWS Management Console or using AWS CLI or one of the AWS SDKs
Deploy Compute - Provisioning Worker
You can launch compute nodes from AWS Fargate or Amazon EC2 Instances. To setup worker nodes for executing application containers, EKS provides the following options.
- Self-Managed: The user is responsible for provisioning EC2 instances that are linked to the cluster. This provides you more options when it comes to setting worker nodes.
- Managed: For Amazon EKS Kubernetes clusters, managed node groups automate the provisioning and lifecycle management of nodes (Amazon EC2 instances).
- AWS Fargate: Fargate is an AWS-managed serverless computing engine that allows you to execute container applications without having to maintain servers.
Connect with Amazon EKS Cluster
Kubernetes communicates with its cluster via a command-line tool named Kubectl. You need to install kubectl in your machine and configure it to connect Amazon EKS and run Applications.
Monitor Kubernetes Apps
After creating your complete EKS Cluster, you have to deploy Kubernetes dashboard which is Web Based Management Interface to manage and monitor your EKS Cluster.
5. Amazon EKS Features
Here I have listed some important features of Amazon EKS.
Managed Control Plane
Amazon EKS provides a highly available control plane with automatic scalability option. As EKS is running in three Availability Zones, it automatically detects the unhealthy control plane and replaces it.
AWS Controllers for Kubernetes (ACK) allows you to manage AWS services directly from your Kubernetes environment. Using AWS resources, ACK makes it simple to construct scalable and highly available Kubernetes apps.
Eksctl - Single line Management
It is a command line tool which can be installed in your Windows or Linux machine to create, run, and manage your EKS cluster. It simplifies the Cluster Management and Operations.
Amazon EKS integrates with various Services and Technologies to provide the highly secured environment. For example, IAM enables fine grained access control and VPC isolates and protects your EKS cluster from third party access.
Amazon EKS supports using Application Load Balancer which is ideal for advanced load balancing of HTTP and HTTPS traffic. Also, EKS utilizes Network Load Balancer and Classic Load Balancer.
To execute your Kubernetes apps utilizing serverless computing, EKS supports AWS Fargate. Fargate eliminates the need to build-up and maintain servers. It allows you to choose and pay for resources per application.
EKS on 'AWS Outposts' can be used to execute containerized apps with minimal latencies to on-premises systems. AWS Outposts is a fully managed solution that connects any connected location with AWS infrastructure, services, APIs, and tools. You can manage containers on-premises with the same simplicity that you can manage them in the cloud with EKS on Outposts.
Amazon EKS supports common Kubernetes ad-ons and EKS is highly compatible with Kubernetes Community tools.
Managed Cluster updates
Version upgrades for Kubernetes are performed on-the-fly, eliminating the need to construct new clusters or transfer apps to a new cluster.
6. Amazon EKS Pricing
For each Amazon EKS cluster you build, you pay $0.10 per hour. By utilizing Kubernetes namespaces and IAM security settings, you may run many apps on a single EKS cluster.
On AWS, you may use Amazon Elastic Compute Cloud (Amazon EC2) or AWS Fargate to operate EKS, and on-premises, you can use AWS Outposts. Accordingly, the price will be calculated.
AWS provides the calculator to estimate the price. You can use the below link to estimate your price for EKS Cluster.
Refer the below article for more details about AWS EC2 instance pricing model as you can use EC2 instances for EKS worker nodes.
If you utilize AWS Fargate, price is dependent on the amount of vCPU and RAM consumed from the time you start downloading your container image until the Amazon EKS pod finishes, time calculation will be rounded up to the closest second. Minimum charge will be applied for one minute even if you use 10 seconds.
Use this link to estimate your AWS Fargate pricing. Here you need to fill in the details like OS Model, Number of PODs, amount of vCPU, Memory.
On AWS Outposts, you can construct and run your Amazon EKS nodes. AWS Outposts allows on-premises facilities to use native AWS services, infrastructure, and operating models.
The cost for Amazon EKS on AWS Outposts is straightforward and identical to that of the Amazon EKS cluster deployed in AWS, and you pay $0.10 per hour.
You can purchase different types of AWS Outposts rack configurations according to your requirement, rack configuration is a combination of EC2 instance type, EBS gp2 Volume and S3 on Outposts. Refer this link to estimate your pricing model for AWS Outposts.
In this article, we have understood the basic concepts of Amazon EKS, its working & pricing model and its important features. We will see the Amazon EKS Cluster building procedures in the upcoming article.