Skip to main content

Kubernetes on AWS

Open-source container management and orchestration

Overview

Kubernetes is open-source software that allows you to deploy and manage containerized applications at scale. Kubernetes manages clusters of Amazon Elastic Compute Cloud (EC2) compute instances and runs containers on those instances with processes for deployment, maintenance, and scaling. Using Kubernetes, you can run any type of containerized applications using the same toolset on-premises and in the cloud.

AWS makes it easy to run Kubernetes in the cloud with scalable and highly available virtual machine infrastructure, community-backed service integrations, and Amazon Elastic Kubernetes Service (EKS), a certified conformant, managed Kubernetes service.

Missing alt text value

How Kubernetes works

Kubernetes works by managing a cluster of compute instances and scheduling containers to run on the cluster based on the available compute resources and the resource requirements of each container. Containers are run in logical groupings called pods and you can run and scale one or many containers together as a pod.

Kubernetes control plane software decides when and where to run your pods, manages traffic routing, and scales your pods based on utilization or other metrics that you define. Kubernetes automatically starts pods on your cluster based on their resource requirements and automatically restarts pods if they or the instances they are running on fail. Each pod is given an IP address and a single DNS name, which Kubernetes uses to connect your services with each other and external traffic.

Why use Kubernetes

Because Kubernetes is an open-source project, you can use it to run your containerized applications anywhere without needing to change your operational tooling. Kubernetes is maintained by a large community of volunteers and is always improving. Additionally, many other open-source projects and vendors build and maintain Kubernetes-compatible software that you can use to improve and extend your application architecture.

Kubernetes lets you define complex containerized applications and run them at scale across a cluster of servers.

Using Kubernetes, containerized applications can be seamlessly moved from local development machines to production deployments on the cloud using the same operational tooling.

Run highly available and scalable Kubernetes clusters on AWS while maintaining full compatibility with your Kubernetes deployments running on-premises.

As an open-source project, adding new functionality to Kubernetes is easy. A large community of developers and companies build extensions, integrations, and plugins that help Kubernetes users do more.

Run Kubernetes On AWS

AWS makes it easy to run Kubernetes. You can choose to manage Kubernetes infrastructure yourself with Amazon EC2 or get an automatically provisioned, managed Kubernetes control plane with Amazon EKS. Either way, you get powerful, community-backed integrations to AWS services like Amazon Virtual Private Cloud (VPC), AWS Identity and Access Management (IAM), and service discovery as well as the security, scalability, and high-availability of AWS.

Consider using Amazon EC2

If you want to fully manage your Kubernetes deployment. Provision and run Kubernetes on your choice of powerful instance types.

Learn more

Consider using Amazon EKS

If you want to run Kubernetes without needing to provision or manage master instances and etcd.

Learn more

Consider using Amazon ECR

If you want to store, encrypt, and manage container images for fast deployment.

Learn more

Kubernetes Frequently Asked Questions

Open all

A Kubernetes cluster is a logical grouping of EC2 compute instances that run your containers. A cluster consists of the control plane (the instances that control how, when, and where your containers run), and the data plane (the instances where your containers run). You must define a cluster before you can run containers or services with Kubernetes.

A Kubernetes node is a single compute instance (virtual machine) that is part of a Kubernetes cluster. There are two types of instances: masters and workers. Masters host the Kubernetes API server and control how, when, and where your containers run. Workers are the compute instances where your containers actually run and process data.

A Kubernetes pod is the way that Kubernetes runs containers on a compute instance and includes containers and specifications for how they should run, networking, and storage. A pod can be a single container or multiple containers that always run together. If you usually run single containers, you can think of a pod as a running container.

etcd is a distributed key value store that lets you store and share data across a distributed cluster of machines. Kubernetes uses etcd to store data about your cluster and share it across the Kubernetes control plane.

AWS makes it easy to run Kubernetes. In fact, AWS has the most customers running Kubernetes in the cloud, with the majority of Kubernetes deployments running on AWS according to the Cloud Native Computing Federation (CNCF). AWS collaborates with and actively contributes to the Kubernetes community in order to make it easy for customers to run Kubernetes on AWS.

AWS offers Amazon Elastic Kubernetes Service (EKS), a managed service that makes it easy for you to use Kubernetes on AWS without needing to install and operate the Kubernetes control plane.

There are two main ways to use Kubernetes on AWS: run it yourself on Amazon EC2 virtual machine instances, or use the Amazon EKS service. You can learn more about running Kubernetes yourself on EC2 in our Github workshop. You can learn more about using Amazon EKS on the product page.