Amazon EKS is an AWS managed service which is used to run Kubernetes on AWS. With the help of EKS we can run Kubernetes without installing and operating a Kubernetes control plane or worker nodes. EKS is a managed container-as-a-service (CaaS) that helps in Kubernetes deployment on AWS.
Kubernetes is a container orchestration platform that can help in automating many processes like in deploy, manage, and scale containerized applications. It is also known as K8s. Basically it is a tool which is used for container management.
Kubernetes or K8s was developed by Google in 2014 and now maintained by Cloud native computing foundation.
Benefits of Amazon EKS:
- EKS can be integrated with various AWS services (ECR, ELB, and IAM & VPC).
- No need to setup or configure Kubermetes on AWS.
- Everything will be managed by EKS.
- Only need to create a control plane for EKS.
- Pay what we have used, no need to pay any amount upfront.
It is basically a physical or virtual machine. In EKS there are two types of nodes: Master node or Worker node. Both nodes are managed by EKS.
Master Node contains many components like Kube Controller, Kube Scheduler, and Kube API-server which combined make the control plane of the Kubernetes. Master Node creation and management done by EKS itself.
- Kube API Server: It manages all the components of Etcd cluster. It is a primary management component of Kubermetes. It is responsible for all orchestration operations within the cluster.
- Etcd: It is a database which stores values in key value format. All the containers related information is stored in etcd cluster.
- Controller Manager: Controller Manager manages the resources of the Kubermetes cluster. There are two types of controllers.
- Node controller: It controls new boarding nodes and manages those nodes and handles situations where nodes are unavailable or destroyed.
- Replication controller: Replication controller ensures desired number of containers running every time in a group.
- Scheduler: A Kube scheduler identifies the right node to deploy container on based on the container resource requirement it needs to run.
Worker node is a virtual machine or a server on which our applications run. These nodes are created and managed by users. Some components of worker nodes are:
- Kubelet: It is an agent which runs on each node. It takes all instructions from the Kube API server related to container deployment and container deletion according to requirements.
- Kube Proxy: Kube proxy service ensures necessary rules are in place on worker nodes to allow the containers to reach each other.
Pods: A group of containers is known as pods. All containers inside pods share IP address, storage & networking.
Daemon Set: Demon set is like a monitoring tool in a cluster. Its responsibility is to make sure that all nodes run a copy of a certain pod. It runs a cluster storage daemon on every node.
The Control Plane consists of three Kubernetes master nodes that run in three different availability zones of your region. From network load balancer (NLB) all incoming traffic comes to Kubernetes API. It runs on the virtual private cloud controlled by Amazon. Control Panel is fully managed by AWS.
Worker nodes is a virtual machine on which containerized applications run. Worker Nodes run on the Amazon EC2 instances in the virtual private cloud. A cluster of worker nodes runs containers while the control plane manages and monitors containers.
Process for creation of EKS Kubernetes cluster:
- Firstly we need to create a Master Node
- Then we need to Install and Configure AWS CLI & Kubectl
- Then, we need to create a Worker Node.
Step 1: Login to AWS Management console.
a) In AWS services search for EKS and click on Create Kubernetes Cluster and then give the name for the Cluster.
b) Now create the role, click on “Create role”
c) Now give a name for the role (e.g. eksClusterRol) and click on the Create role.
Step 3: Now we need to Install & configure AWS CLI.
a) Click on Create IAM Access Key and set up your AWS CLI Credential
Now to setup AWS cli we need to run the commands below on the server.
AWS Configure — once you hit this command on your terminal it will ask you for AWS access and secret key just enter your credentials here and your AWS cli is configured successfully.
AWS Access Key ID [None]: AKIAIOGHTYUIKIOLJE
AWS Secret Access Key [None]: OPLIUYCYNJUKYIOHKEY
Default region name [None]: us-west-2
Default output format [None]: json
Step 4: Next step we need to install & configure the Kubectl. Configure Kubectl with EKS API Server and validate Kubectl configuration to master node.
Step 5: The final step is to create the Worker Node,
a) On the cluster page choose Add Node Group.
b) Now, On the Configure node group page, fill all the details and click next.
- Name – Enter a unique name for your managed node group.
- Node IAM role name– Choose the node instance role which you want to assign with your node group.
After this, leave the other settings to default and click on next.
Step 6: Next we need to configure the networking & scaling of Worker Nodes.
a) In this process we need to add a subnet and need to create and add an SSH key pair for communicating with the nodes.
b) Now we need to create and add an SSH key pair and proceed to next.
c) Now, on the Review and create page, we can review our managed node group configuration, and choose Create. Worker Node Group creation takes 2-5 minutes for workers nodes to be up and running.
Step 7: Now, once it comes up we can check worker node status from Kubectl command.
$ kubectl get nodes –watch