3 Ways to Run Kubernetes on AWS

In the last years, Kubernetes has grown tremendously and is considered by most companies to be the best platform to run applications today. In simple words, Kubernetes is an open-source container orchestration platform that allows you to run and manage containerized applications at scale.

Morgan Perry

Morgan Perry

January 3, 2022 · 6 min read
3 Ways to Run Kubernetes on AWS - Qovery
Written byMorgan Perry

Morgan Perry

CRO and co-founder of Qovery. Morgan is a Tech entrepreneur with 7+ years of experience in the SaaS industry.

See all articles
Kubernetes

In this article, I will explain how you can run Kubernetes on AWS in 3 different ways. But before getting down the road, let me explain why it does make sense to run Kubernetes on AWS.

Why Running Kubernetes on AWS

With Kubernetes, you can run any containerized application using the same toolset on-premises and cloud.

Some of the benefits of using Kubernetes include:

  • SCALABILITY: Kubernetes lets you define complex containerized applications and run them at scale across a cluster of servers.
  • PORTABILITY: Kubernetes offers portability and faster, simpler deployment times. If needed, companies can take advantage of multiple cloud providers and proliferate without re-architecting their infrastructure.
  • HIGH AVAILABILITY: Kubernetes addresses high availability at both the application and the infrastructure level - meaning, well configured, Kubernetes helps to keep your applications up and running, even if one Kubernetes node is down.

There are different ways to run Kubernetes, but combining Kubernetes and AWS helps to make your applications highly available and scalable. AWS has some experience running business-critical workloads on their infrastructure and will provide anything you need to make Kubernetes running most reliably.

So now, let's see how you can install and run Kubernetes on your AWS account. We will go from the more flexible option to the simplest one.

3 options to install and run Kubernetes on your AWS account

1. Manual Kubernetes installation on Amazon EC2 machines

What is Amazon EC2?

An Amazon EC2 instance is a virtual server in Amazon's Elastic Compute Cloud (EC2) for running applications on the AWS infrastructure. You can use Amazon EC2 to launch as many or as few virtual servers as you need, configure secAmazon'sd networking, and manage storage. Amazon EC2 enables you to scale up or down to handle changes in requirements or spikes in popularity, reducing your need to forecast traffic.

How does Kubernetes work on Amazon EC2?

While EKS is the "easy version" (Amazon's managed container services), running Kubernetes on EC2 instances is quite the opposite. So why should you consider this option? Mainly if you need full flexibility and co" trAmazon'syour Kubernetes deployment.

Suppose you want to run Kubernetes on AWS without using Amazon's managed container services. In that case, you will need to create the necessary Amazon EC2 instances, then install a Kubernetes distribution of your choice.

Running Kubernetes on AWS EC2 instances. Original schema from Weaveworks - modified by Qovery
Running Kubernetes on AWS EC2 instances. Original schema from Weaveworks - modified by Qovery

With this option, Amazon provides only the virtual machines to host your Kubernetes nodes, meaning that users are responsible for provisioning the VMs, along with setting up and managing Kubernetes.

2. Running Kubernetes with Elastic Kubernetes Service (EKS)

What is Amazon EKS?

Amazon EKS (Elastic Kubernetes Service) is a managed service that helps make it easier to run Kubernetes on AWS. Through EKS, organizations can run Kubernetes without installing and operating a Kubernetes control plane or worker nodes. Simply put, EKS drastically simplifies the management and maintenance of highly-available Kubernetes clusters in AWS.

How does Amazon EKS Works?

Each EKS cluster has two main components: Control Plane and Worker Nodes.

  • Control Plane: The Control Plane consists of three Kubernetes master nodes in three different availability zones (AZs). All incoming traffic to Kubernetes API comes through the network load balancer (NLB). It runs on the virtual private cloud controlled by Amazon. The Control Panel is fully managed by AWS and can't be managed directly by the organization.
  • Worker Nodes: The Worker Nodes run on the Amazon EC2 instances. Any instance in AWS can be used as a worker node. These worker nodes can be accessed through SSH or provisioned without automation. A cluster of worker nodes runs an organization's containers while the control plane manages and monitors when and where containers are started. Through EKS, worker nodes are provisioned via a single command in the EKS console, CLI, or API, while AWS provisions, scales, and manages the Control Plane securely.

Hence, without EKS, organizations would have to run the Control Plane and Worker Nodes.

Setting up a new Kubernetes cluster with EKS can be done simply using the AWS management console. Then, containerized applications can be scheduled in the new cluster in the same way as with any other Kubernetes installation:

Provision an EKS cluster via AWS console - it's also possible to use Terraform
Provision an EKS cluster via AWS console - it's also possible to use Terraform

With EKS, you don't need to set up Kubernetes, install management or monitoring tools or provision your own nodes. However, you will still need to perform some manual tasks, such as upgrading to newer versions of Kubernetes when available.

3. Using Qovery for Kubernetes deployment on AWS

What is Qovery?

Qovery provides a web interface to simplify app deployments on AWS for any developers. As a developer, deploying apps on AWS is not an easy task. Plus, Kubernetes is the best container orchestrator but lacks simplicity for most developers. This is where Qovery comes in. Qovery makes it easy for any developer to seamlessly deploy an application in a repo to AWS - by empowering Kubernetes behind the scene.

You can see Qovery as a tool that can help accelerate the deployment of applications in Kubernetes clusters while providing a great developer experience to deploy and manage your apps on AWS.

How does Kubernetes work with Qovery?

Qovery is the simplest way to deploy your Kubernetes cluster, and run your apps on your AWS account
Qovery is the simplest way to deploy your Kubernetes cluster, and run your apps on your AWS account

Qovery runs on your AWS account and installs a vanilla EKS cluster with a pre-installed set of features (Git deployment, Preview Environments...) for a better Developer Experience.

Conclusion: Which option to choose?

In this article, we covered 3 ways of installing Kubernetes on AWS. Kubernetes is known for being a challenge to manage manually and requiring advanced knowledge. The 3 solutions we covered offered the most flexibility and control, down to the simplest.

-

  Kubernetes with EC2       Kubernetes with EKS        Kubernetes with Qovery    
Installation Hard Simple Very simple
Maintenance Hard Hard Very simple
Upgrade Very hard Simple Very simple
Cluster scaling Very hard Simple Very simple
App deployment hard Very hard Very simple
Customization Full Full Full
Vanilla Kubernetes Yes Yes Yes

-

Which one you choose will depend on how much control and flexibility you need over the infrastructure you are running on and the use case. The costs are likely similar for all three options mentioned, but the features, the availability, and the simplicity will push organizations one way or the other. For example, suppose you are a startup and plan deploying and running a highly available and resilient Kubernetes cluster in a production environment. In that case, you will probably need a quick and repeatable solution that simplifies administrative tasks like rolling upgrades without needing to put your hands in.

Deploy your apps in production on AWS in minutes

Qovery combines the power of Kubernetes, the reliability of AWS, and the simplicity of Heroku to deploy your apps on AWS.

Deploy my apps
Deploy your apps in production on AWS in minutes
Kubernetes

You might also like


37 minutes to deploy a fullstack app on my new AWS account

Today, I was working on our Terraform Provider, and I noticed that I never tried to deploy an application from scratch on a new and clean AWS account. Meaning, an empty AWS account - with 0 resources created. No VPC, no EC2, no Load Balancer, nothing... just an IAM user to get access to my AWS account programmatically. This post explains what I did and how it took 37 minutes and 33 seconds to literally: create a VPC (10 min) create an EKS cluster and a load balancer (5 min) create an ECR repository (10 sec) deploy an RDS database (15 min) build and deploy my Django app from GitHub (2 min) add a custom domain to my app (2 min) create a TLS for my custom domain (15 sec) And tada! 🎉 😅 Let's explain all of that! - Read more

February 26, 2022 · 5 min read
37 minutes to deploy a fullstack app on my new AWS account