Kubernetes on AWS
Kubernetes is open source software that allows you to deploy and manage containerized applications at scale. Kubernetes manages clusters of Amazon 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.
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.
RUN APPLICATIONS AT SCALE
Kubernetes lets you define complex containerized applications and run them at scale across a cluster of servers.
SEAMLESSLY MOVE APPLICATIONS
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.
ADD NEW FUNCTIONALITY
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 VPC, IAM, and service discovery as well as the security, scalability, and high-availability of AWS.
AWS Community Kubernetes Collaborations
AWS actively works with the Kubernetes community, including making contributions to the Kubernetes code base, to help Kuberentes users take advantage of AWS services and features.
Pod networking in Kubernetes using Elastic Network Interfaces on AWS.
A tool for using AWS IAM credentials to authenticate to a Kubernetes Cluster.
Configure Route 53 Service Discovery for Kubernetes Ingresses and Services.
Community-led special interest group focused on AWS integrations to the Kubernetes API
Experimental - run containers on AWS Fargate using the Kubernetes control plane.
KUBERNETES FREQUENTLY ASKED QUESTIONS
Q: What is a Kubernetes cluster?
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.
Q: What is a Kubernetes node?
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.
Q: What is a Kubernetes pod?
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, than you can think of a pod as a running container.
Q: What is etcd?
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.
Q: Does AWS support Kubernetes?
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.
Q: How do I use Kubernetes on AWS?
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.