Elastic Kubernetes Service

Kubernetes, also known as K8s, is an open-source system for automating deployment, scaling, and management of containerized applications.

Cluster Structure

Cluster Detail

Amazon Elastic Kubernetes Service (Amazon EKS) is a fully-managed, Kubernetes implementation that simplifies the process of building, securing, operating, and maintaining Kubernetes clusters on AWS.

  • Amazon Elastic Kubernetes Service (Amazon EKS) is a managed service for running Kubernetes applications in the cloud or on-premises

  • Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications

  • Use when you need to standardize container orchestration across multiple environments using a managed Kubernetes implementation

  • Features:

    • Hybrid Deployment - manage Kubernetes clusters and applications across hybrid environments (AWS + On-premises)

    • Batch Processing - run sequential or parallel batch workloads on your EKS cluster using the Kubernetes Jobs API. Plan, schedule and execute batch workloads

    • Machine Learning - use Kubeflow with EKS to model your machine learning workflows and efficiently run distributed training jobs using the latest EC2 GPUpowered instances, including Inferentia

    • Web Applications - build web applications that automatically scale up and down and run in a highly available configuration across multiple Availability Zones

Amazon EKS Auto Scaling

Workload Auto Scaling:

  • Vertical Pod Autoscaler - automatically adjusts the CPU and memory reservations for your pods to help "right size" your applications

  • Horizontal Pod Autoscaler - automatically scales the number of pods in a deployment, replication controller, or replica set based on that resource's CPU utilization

  • Cluster Auto Scaling:

    • Amazon EKS supports two autoscaling products:

    • Kubernetes Cluster Autoscaler

    • Karpenter open source autoscaling project

  • The cluster autoscaler uses AWS scaling groups, while Karpenter works directly with the Amazon EC2 fleet

Amazon EKS and Elastic Load Balancing

  • Amazon EKS supports Network Load Balancers and Application Load Balancers

  • The AWS Load Balancer Controller manages AWS Elastic Load Balancers for a Kubernetes cluster

  • Install the AWS Load Balancer Controller using Helm V3 or later or by applying a Kubernetes manifest

  • The controller provisions the following resources:

    • An AWS Application Load Balancer (ALB) when you create a Kubernetes Ingress

    • An AWS Network Load Balancer (NLB) when you create a Kubernetes service of type LoadBalancer

  • In the past, the Kubernetes network load balancer was used for instance targets, but the AWS Load balancer Controller was used for IP targets

  • With the AWS Load Balancer Controller version 2.3.0 or later, you can create NLBs using either target type

Amazon EKS Distro

  • Amazon EKS Distro is a distribution of Kubernetes with the same dependencies as Amazon EKS

  • Allows you to manually run Kubernetes clusters anywhere

  • EKS Distro includes binaries and containers of open-source Kubernetes, etcd, networking, and storage plugins, tested for compatibility

  • You can securely access EKS Distro releases as open source on GitHub or within AWS via Amazon S3 and Amazon ECR

  • Amazon EKS Distro alleviates the need to track updates, determine compatibility, and standardize on a common Kubernetes version across distributed teams

  • You can create Amazon EKS Distro clusters in AWS on Amazon EC2 and on your own on-premises hardware using the tooling of your choice

Amazon ECS and EKS Anywhere

  • Run ECS or EKS on customer-managed infrastructure, supported by AWS

  • Customers can run Amazon ECS/EKS Anywhere on their own onpremises infrastructure on bare metal servers

  • You can also deploy ECS/EKS Anywhere using VMware vSphere

Last updated