EKS stands for Elastic Kubernetes Service, which is an Amazon offering that helps in running the Kubernetes on AWS without requiring the user to maintain their own Kubernetes control plane. It is a fully managed service by Amazon.
Kubernetes is an open-source system that helps in the process of automatic deployment, scaling, and managing containerized applications.
Amazon EKS helps run Kubernetes control plane instances over multiple Availability Zones which makes sure that they are highlyavailable. Amazon EKS automatically detects and replaces control plane instances that are unhealthy, as well as provisioning automated version upgrades and patching for the unhealthy control planes.
Amazon EKS can be integrated with other Amazon service in order to provide scalability and security for user applications, and some of the services have been listed below:
Amazon EKS helps run up-to-date version of the open-source Kubernetes software, thereby allowing the user to use all the existing plugins and tooling which is availability in the Kubernetes community. Applications that run on Amazon EKS are completely compatible with applications which run on other standard Kubernetes environment, be it running in on premise data centres or in public clouds. This indicates that the user can migrate to other standard Kubernetes application very easily without modifying any code.
Amazon EKS runs along with a single tenant Kubernetes control plane for every cluster. This control pane infrastructure can’t be shared with other clusters or AWS accounts. The control plane consists of a minimum of two API server nodes and three ‘etcd’ nodes which run across three Availability Zones which is present in a Region.
Amazon EKS detects and replaces unhealthy control plane instances automatically, and restarts them over these Availability Zones within the Region as and when required. Amazon EKS makes good use of the AWS Region architecture so as to provide high-availability. Due to all this, Amazon EKS offers SLA for API server endpoint availability.
Amazon EKS makes use of Amazon VPC network policies to restrict the traffic that flows between the components of the control plane and the single cluster. The components of the control plane for the cluster won’t be able to view or receive any communication from other clusters or AWS accounts, the only exception being an authorized Kubernetes RBAC policy.
Such security and high-availability configuration make Amazon EKS highly reliable, thereby making it suitable to be used in many production workloads too.
The below images show how Amazon EKS works.
Following are the steps to start Amazon EKS:
A Kubernetes cluster can be created in two ways:
An Amazon EKS cluster consists of two major components. They have been discussed below:
This consists of control plane nodes which are used to run Kubernetes software, which includes ‘etcd’ and the Kubernetes API server. This plane works with the account that is managed by AWS and the Kubernetes API is exposed to the outside through an Amazon EKS endpoint which is associated with the cluster user.
Every Amazon EKS cluster control plane is unique and consists of a single-tenant. It runs its own set of Amazon EC2 instances. The data which is stored with the help of ‘etcd’ nodes and the respective Amazon EBS volumes is in the encrypted form. Hence Amazon EKS uses master encryption keys which help in generating volume encryptions keys that are in turn managed by Amazon EKS service.
The cluster control plane has the ability to work across multiple Availability Zones and with the front-end through an Elastic Load Balancing Network Load Balancer. Amazon EKS can also be used to provide elastic network interfaces to the user’s VPC subnets thereby facilitating connectivity from the control plane instances to the worker nodes, so as to support ‘kubectl exec’, ‘logs’, and ‘proxy’ data flows.
Worker machines in Kubernetes are known as worker nodes. Amazon EKS worker nodes can be run in the user’s AWS account to help connect the cluster’s control plane through an API server endpoint. This will also have a certificate file which is created for the server. Amazon EKS worker nodes can be understood as standard Amazon EC2 instances, and they are charged based on how EC2 instances are normally charged.
As a default action, Amazon EKS provisions AWS CloudFormation templates to spin up worker nodes in the Amazon EKS cluster. This AMI has been built over Amazon Linux 2 and has been configured to work as a base image for all Amazon EKS worker nodes.
The AMI has also been configured to work with Amazon EKS out-of-the-box, which includes Docker, ‘kubelet’ and AWS IAM authenticator as well.
AMI consists of a special bootstrap script which helps in automatically discovering and connecting to the user’s cluster control plane.
The AWS Cloud Formation worker node template helps in launching the worker nodes with the help of specialized Amazon EC2 user data. This user data is used as a trigger to initiate a specialized bootstrap script which makes sure that the worker nodes automatically discover and connect to the user’s cluster control plane.
In this post, we understood how EKS can be used to run Kubernetes on AWS without the need for the user to explicitly maintain Kubernetes control plane.