As containerization became a popular choice among businesses, the need for a system to manage and scale these containerized applications became increasingly apparent. In 2013, Google started an internal project to develop a container management system, which later became Kubernetes (K8s), an open-source project developed for container orchestration. In 2014, it was donated to the Cloud Native Computing Foundation (CNCF), a part of the Linux Foundation to foster collaboration and innovation around container orchestration.
Kubernetes addresses the need for managing containerized applications at scale by providing powerful features for orchestration, scaling, service discovery, resource utilization, declarative configuration, and portability. It simplifies the deployment and management of modern, cloud-native applications in diverse environments.
What is Amazon EKS
Amazon Elastic Kubernetes Service (Amazon EKS) is a managed Kubernetes service provided by AWS. It allows users to deploy, manage, and scale containerized infrastructure on AWS infrastructure without the need to install and maintain their own Kubernetes control plane.
Amazon EKS handles the deployment, scaling, and maintenance of the Kubernetes cluster according to the varying workload demands. It ensures high availability and reliability by deploying the cluster across multiple Availability Zones within a region, thereby reducing single points of failure.
By abstracting the underlying infrastructure, EKS enables developers to focus mainly on application development without worrying about managing the complex infrastructure.
Features of Amazon EKS
From the managed control plane to seamless integrations with AWS services, EKS provides a comprehensive platform for building and scaling modern, cloud-native applications. Some of the key features of Amazon EKS are:
Managed Control Plane: Amazon EKS manages the Kubernetes control plane, including the API server, scheduler, and etcd, eliminating the operational overhead associated with provisioning, scaling, and maintaining these components.
Serverless Compute: Amazon EKS supports serverless computing using AWS Fargate. It helps to run containers without managing the underlying infrastructure. Fargate handles tasks such as server provisioning, scaling, and patching, allowing developers to focus on building and deploying applications.
Integration with AWS Services: EKS seamlessly integrates with other AWS services, enabling users to leverage capabilities such as Amazon EC2 for computing, Amazon EBS for storage, Amazon VPC for networking, AWS IAM for access control, AWS CloudTrail for auditing, and AWS CloudWatch for monitoring and logging.
Cost Monitoring Services: AWS provides various options to enable transparent EKS pricing and monitoring, such as Cost Allocation Tags, Kubecost, and cloud-native cost monitoring tools like AWS CloudTrail and Amazon CloudWatch. providing insights into resource usage, optimization recommendations, and cost allocation across containerized workloads, enabling organizations to optimize their cloud spending efficiently.
Security and Compliance: Fargate provides a secure runtime environment for containers, with built-in isolation mechanisms that prevent containers from accessing each other’s resources. Users can also leverage AWS Identity and Access Management (IAM) for fine-grained access control and strict security policies.
EKS vs ECS – a comparison
Amazon Elastic Kubernetes service and Amazon Elastic Container service are both container orchestration services provided by AWS. Amazon ECS is a simple, easy-to-use AWS-native container orchestration service suitable for users who are already familiar with the AWS ecosystem. EKS serves as a platform to run Kubernetes services on the AWS environment. It is more suitable for organizations and applications that require Kubernetes capabilities.
Feature | EKS | ECS |
Underlying technology | Kubernetes | ECS proprietary orchestrator |
Complexity | More complex (requires Kubernetes knowledge) | Simpler (easier to set up and manage) |
Flexibility | Highly flexible and customizable | Less flexible, but easier to integrate with other AWS services |
Pricing model | Flat fee per cluster + resource usage | Resource usage only |
Suitable for | Teams familiar with Kubernetes, complex workloads | Simpler deployments, easier integration with existing AWS infrastructure |
The choice between EKS or ECS depends on factors such as the workload complexity, your Kubernetes expertise, and integration requirements with other AWS services.
Amazon EKS Tutorial
In this EKS tutorial, we will learn how to create an EKS cluster and deploy a sample application.
Prerequisites
- Create and launch an EC2 instance
- Install or Update to the latest version of AWS CLI
- Installing or Updating Kubectl
- Installing eksctl
After completing the installations, configure the EC2 instance with AWS CLI credentials.
Step 1: Create an EKS Cluster
Use the following command to create an EKS cluster. It creates an Amazon EKS cluster named “eks-cluster-demo1” in the “us-west-2” region using the eksctl command-line tool.
eksctl create cluster --name eks-cluster-demo1 --region us-west-2
“eksctl” is a command-line tool used for creating, managing, and operating Kubernetes clusters on EKS. It simplifies the process of provisioning and managing EKS clusters by providing a convenient interface for cluster configuration, deployment, scaling, and upgrades.
After 10-15, your cluster will be provisioned and you will get the following output:
You can check the cluster information using the following command
kubectl cluster-info
“kubectl” enables users to perform various operations such as creating, updating, and deleting Kubernetes resources like pods, deployments, services, and more, making it a crucial component in Kubernetes administration and development workflows.
Step 2: Deploy an application on the EKS Cluster
After creating the cluster, you can deploy your application using the following commands.
Step 2.1: Create a namespace using the below command.
kubectl create namespace eks-sample-app
A namespace is a logical partitioning mechanism that allows users to create multiple virtual clusters within the same physical Kubernetes cluster.
Step 2.2: Create a YAML manifest file with specifications to run your deployment.
vi sample-deployment.yaml
Here is a sample deployment for your reference which pulls a container image from a public repository and deploys three replicas (individual Pods) of it to your cluster.
apiVersion: apps/v1
kind: Deployment
metadata:
name: eks-sample-linux-deployment
namespace: eks-sample-app
labels:
app: eks-sample-linux-app
spec:
replicas: 3
selector:
matchLabels:
app: eks-sample-linux-app
template:
metadata:
labels:
app: eks-sample-linux-app
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/arch
operator: In
values:
- amd64
- arm64
containers:
- name: nginx
image: public.ecr.aws/nginx/nginx:1.23
ports:
- name: http
containerPort: 80
imagePullPolicy: IfNotPresent
nodeSelector:
kubernetes.io/os: linux
Apply the deployment manifest to your cluster.
[ec2-user@ip-172-31-47-1 ~]$ kubectl apply -f sample-deployment.yaml
deployment.apps/eks-sample-linux-deployment created
Thus your app deployment is successful.
Step 3: Inspect your resources
To view all the existing resources in the namespace, run the command
kubectl get all -n eks-sample-app
It lists all resources of various types, including pods, services, deployments, replica sets, and other objects, that belong to the specified namespace.
Amazon EKS pricing structure
You can use AWS EKS to run Kubernetes applications both on the cloud and on-premise environments. Users can utilize Amazon EC2 or AWS Fargate to run EKS on AWS infrastructure, and use AWS Outposts service to run it on customer data centers.
The EKS pricing structure consists of two components – a cluster fee and resource utilization fees. A cluster fee is the cost of an EKS cluster that you create and the resource utilization fee includes the cost of other resources you consume.
Cost of Amazon EKS Clusters
Every Amazon EKS cluster incurs a cost of $0.10 per hour. This fee is independent of your chosen deployment option. It applies regardless of whether you run it on AWS cloud, on-premises with AWS Outposts, or on different Kubernetes versions using extended support.
EKS with Amazon EC2
When you are deploying the EKS cluster with Amazon EC2, the EKS pricing includes the cost of the underlying EC2 instances that host your pods. The cost heavily depends on the specific application you run, your instance size, size, and running time. Please check out our EC2 pricing and cost optimization article to find the appropriate EC2 instance that fits your budget.
For example, Running a single, low-traffic application on a small EC2 instance (like t2.micro) alongside the $0.10/hour EKS cluster fee, could cost between $20 and $50 per month.
Hosting several low- to medium-traffic applications on a few t2.medium or m5.large instances, with the EKS fee, might fall in the $100 to $200 per month range.
Remember, these are just estimates, and the actual costs can be significantly higher or lower depending on your specific circumstances. For a more accurate estimate of your AWS charges, check out our AWS Pricing Calculator.
EKS with Fargate
You can run your Kubernetes pods in AWS Fargate without the need to manage, scale, or provision your EC2 instances. It provides a serverless option where you pay for the vCPU-second and GiB-memory consumed by your containerized applications.
Assuming that your application uses a micro vCPU and 256 MB memory with an average of 50% CPU utilization, running 24/7, let us estimate the cost:
EKS cluster: $0.10 per hour * 24 hours/day * 30 days/month = $7.20 per month.
Based on Fargate pricing, with micro vCPU at $0.00625 per vCPU-hour and memory at $0.0045 per GiB-hour, we can estimate:
vCPU cost: 0.5 vCPU * $0.00625 * 24 hours/day * 30 days/month = $2.25 per month.
Memory cost: 0.25 GiB * $0.0045 * 24 hours/day * 30 days/month = $1.35 per month.
Total Fargate cost: $2.25 + $1.35 = $3.60 per month per application.
Per application: $7.20 (EKS) + $3.60 (Fargate) = $10.80 per month.
This is a rough estimate and the actual cost will vary based on specific resource usage, application complexity, and running time.
EKS with Outposts
When deploying EKS on-premises using Outposts, the EKS service fee remains at $0.10 per hour. However, you’ll be charged separately for the underlying Amazon Outposts capacity based on the rack size and configuration.
For a small organization, a single Outposts rack with minimal compute resources might roughly cost around $5,000 per month. This could include a few EC2 instances for worker nodes. Therefore, for a small organization using EKS with a minimal Outposts setup could roughly range from $5,074 to $5,100 per month.
Amazon EKS Extended Support for Kubernetes Versions
Amazon EKS Extended Support for Kubernetes Versions is a service provided by Amazon Web Services (AWS) that allows customers to run Kubernetes clusters on Amazon EKS with long-term support for specific Kubernetes versions beyond their official end-of-life dates. This service enables customers to continue using older Kubernetes versions without sacrificing security, stability, or compatibility, ensuring a smooth transition for their containerized workloads while maintaining compliance and reliability.
EKS pricing covered under this extended support is $0.60 per hour for each Amazon EKS cluster. This $0.60 is inclusive of the $0.10 per cluster per hour you pay for the EKS cluster.
Amazon EKS Anywhere
EKS Anywhere is a deployment option that enables customers to run Kubernetes clusters on their own infrastructure, whether it be on-premises data centers or in other cloud environments. It helps customers deploy and manage Kubernetes clusters on their own infrastructure while benefiting from the operational efficiency of the Amazon EKS ecosystem.
It provides a flexible and consistent platform for running containerized applications across hybrid and multi-cloud environments.
Subscription Term | Price per cluster per year | Monthly billing per cluster |
1-year | $24,000 | $2,000 |
3-year | $18,000 | $1,500 |
Please note that the per-cluster pricing remains flat and does not change based on the size of the cluster. Customers can include one or multiple Amazon EKS Anywhere cluster licenses in a single Amazon EKS Anywhere Enterprise Subscription purchase.
Additional Charges
The additional charges include the charges for networking and storage resources. It includes services such as Amazon VPC (Virtual Private Cloud) and Amazon EBS (Elastic Block Store) volumes.
Conclusion
With Amazon EKS, users can benefit from a fully managed Kubernetes service that simplifies the deployment, management, and scaling of applications while enjoying the scalability, reliability, and security provided by AWS infrastructure. By grasping the nuances of EKS pricing, and its deployment options businesses can optimize their cloud spend while maximizing the value derived from running containerized applications.
How can we help?
Are your cloud bills reaching sky-high levels? Don’t let cloud costs weigh you down anymore. With Economize, you can slash your cloud expenditures by up to 30% effortlessly. Book a free demo with us today and discover how we can help you start saving in as little as 10 minutes.