Kubernetes on AWS Cloud

Kubernetes on AWS Cloud

In this article, you are going to setup  Kubernetes on AWS cloud environment.For which I am going to use a tool called KOPS.

What is KOPS? kops is an opinionated provisioning system with

  • Fully automated installation
  • Uses DNS to identify clusters
  • Self-healing: everything runs in Auto-Scaling Groups
  • Limited OS support (Debian preferred, Ubuntu 16.04 supported, early support for CentOS & RHEL)
  • High-Availability support
  • Direct provision or terraform manifest generation

Pre-requisite

As a part of the setup, you would need an Ubuntu or Debian instance with latest updates and other supporting utility/tools like AWS-CLI, S3 bucket, Hosted Zone on Route 53 and a registered domain. In this article, I am going to use Ubuntu instance to launch and install kubernetes cluster.

Ubuntu EC2-instance: Will be used to install kubernetes cluster

Let me launch an AWS EC2 Ubuntu instance and update with the latest packages.

kops installation

I have downloaded the latest version of kops and changed the permission before moving it to /usr/local/bin

kubectl installation

I have downloaded the latest version of the kubectl and changed the permission before moving it to /usr/local/bin

AWS CLI

I have installed AWS CLI to access the AWS instance from the command line to create Kubernetes cluster.

IAM user creation

On AWS console, I have created a new IAM user (for example kops) with full access and saved the access keys as it would be used to configure the AWS CLI. Then I have copied both AWS access key ID and AWS secret access key for later usage.

On the EC2 instance, I have configured the newly created AWS IAM user with following commands

On the same the EC2 instance, I have generated a key pair for AWS EC2 user. It will be used to connect to the kubernetes cluster which I am going to create. In my case, as it is Ubuntu user the ssh keys by default are stored in .ssh folder of the user home directory.

Domain creation

I have created a domain for the cluster user “kops” and DNS for discovery which will be used inside the cluster and to reach the kubernetes API server from the client. It should have a valid DNS name. I recommend using a subdomain for the cluster configuration.

An existing domain or a new domain can be used. In this example, I have created a new domain and hosted it on dot.tk which is a free domain provider.

Domain registration on dot.tk / freenom.com:

I have registered a new domain on freenom.com with the name k8sclustersetup.tk which I going to use for my Kubernetes cluster.

Host Registration

Create Hosted Zone

On AWS console, I have created a new Hosted zone on router 53. I have logged into AWS console, navigate to router53 DNS management and created new Hosted Zone. It’s advisable to create a subdomain. This creates a set of name servers which can be copied for later usage. I have copied the name server details which starts with ns-xxx.awsdns-xx.com, ns-xxx.awsdns-xx.co.uk, ns-xxx.awsdns-xx.org, ns-xxx.awsdns-xx.net.

Hosted Zones

These NameServer (NS) values should be updated on the domain service provider. In this setup, I have updated the NS details on freenom.com.

Cluster Setup

S3 bucket creation

I have created a new S3 bucket with a meaningful name (for example “kopsclusterdemo”) which is used to store the cluster state. Kubernetes uses S3 to store the cluster details like configuration, keys, etc.

With this, all the pre-requisite has been setup and the environment is ready to create and launch the Kubernetes cluster.

Kubernetes cluster creation

For learning purpose, I have chosen the t2.micro which is a free EC2 instance. I have executed the below command to create the kubernetes cluster with one master and 2 worker nodes.

It takes a couple of minutes for the Kubernetes cluster to get created. To confirm whether the Kubernetes cluster got created I have used the below command to list the cluster details.

Cluster node details can be listed by issuing the below command.

Finally kubernetes service is up and running on aws ec2.

Conclusion

In this article, the details to install and configure Kubernets on AWS Cloud has been provided.

You can have a look at other importat aws services here.

Credits:

Balaji.SR.

Transformation consultant with a broad experience on Blockchain, Agile-DevOps, Containerisation, Cloud Architecture, Microservices.

LinkedIn:linkedin.com/in/balaji-sr-8b639416