Amazon Elastic Container Service for Kubernetes (Amazon EKS)
Infrastructure

Amazon Elastic Container Service for Kubernetes (Amazon EKS)

Published June 23, 2019Updated June 3, 20265 min read

Discover how Amazon EKS simplifies container orchestration on AWS. Learn how EKS manages the Kubernetes control plane, handles security, and runs microservices.

Amazon Elastic Container Service for Kubernetes (Amazon EKS) simplifies deploying, managing, and scaling containerized applications on AWS. By offloading control plane administration to AWS, organizations can run standard Kubernetes clusters without the administrative burden of manually provisioning master nodes or configuring cluster databases.

The Operational Challenge of Self-Managed Kubernetes

Running Kubernetes without a managed service introduces significant operational complexity. Self-managed deployments require engineering teams to configure and maintain the cluster's control plane. This involves:

  • Provisioning Master Nodes: Deploying and sizing multiple master nodes across different Availability Zones (AZs) to prevent single points of failure.
  • Managing etcd: Setting up, securing, and backing up etcd - the distributed key-value store acting as the cluster's single source of truth. Managing etcd requires deep expertise in consensus protocols to prevent database corruption.
  • Handling Upgrades: Upgrading Kubernetes versions requires draining nodes, updating control plane components in a specific sequence, and verifying API compatibility.
  • Securing Communication: Generating, distributing, and rotating TLS certificates to secure communication channels between the API server and worker nodes.

This administrative overhead diverts engineering resources from writing application code. Amazon EKS eliminates this bottleneck by managing the control plane infrastructure.

Key Operational Benefits of Amazon EKS

By offloading control plane administration to AWS, organizations gain several operational advantages while maintaining open-source compatibility.

Fully Managed High Availability

Amazon EKS automatically provisions and runs a three-node control plane across three separate AWS Availability Zones (AZs) per cluster. If an API server instance fails or an AZ goes offline, EKS automatically detects the failure, replaces the unhealthy node, and maintains cluster availability.

Additionally, EKS handles etcd data replication across these three AZs, ensuring consistent state backup and high resiliency. AWS also manages minor version upgrades and security patching on demand. Teams can trigger upgrades via the AWS Console or Infrastructure as Code (IaC) tools, and EKS performs rolling updates to minimize service disruption.

Integrated Enterprise Security

Security is integrated into the core architecture of EKS. Communication between the Kubernetes API server and worker nodes is encrypted by default.

EKS integrates natively with AWS Identity and Access Management (IAM). Instead of managing separate Kubernetes user credentials, administrators use IAM roles for authentication. This integration works via the AWS IAM Authenticator for Kubernetes (or through the native EKS Access Entry API), mapping IAM identities to Kubernetes Role-Based Access Control (RBAC) groups inside the cluster.

For network security, EKS uses the Amazon VPC Container Network Interface (CNI) plugin. This plugin allows Kubernetes pods to receive real, private IP addresses from the cluster's VPC subnet. Consequently, administrators can apply standard VPC security groups and network access control lists (NACLs) directly to individual pods, enforcing granular network isolation.

Upstream Kubernetes Compatibility

Amazon EKS runs upstream Kubernetes and is certified conformant with Kubernetes community specifications. This compliance ensures that applications running on EKS are fully compatible with any standard Kubernetes environment, whether on-premises or in another public cloud.

Engineers can use standard tooling, such as kubectl for command-line management, Helm for package management, and Prometheus and Grafana for monitoring. Organizations can migrate existing manifests and Helm charts to AWS EKS with minimal modification, reducing vendor lock-in risks.

EKS Worker Node Options

Engineering teams must configure the compute capacity (worker nodes) where containers run. EKS supports three primary compute models:

  1. Managed Node Groups: AWS automates provisioning, scaling, and lifecycle updates for EC2 instances in the cluster. This includes updating operating system images and draining pods during upgrades.
  2. Self-Managed Node Groups: Best for organizations requiring custom operating systems, custom AMIs, or specialized boot scripts. The customer is responsible for node provisioning, patching, and upgrades.
  3. AWS Fargate: A serverless compute option that eliminates virtual machine management. Each pod runs in an isolated environment, billed only for allocated CPU and memory. However, Fargate does not support daemonsets or privileged containers.

Additionally, many teams deploy Karpenter, an open-source Kubernetes autoscaler built by AWS. By communicating directly with the EC2 fleet API, Karpenter bypasses traditional Auto Scaling Groups to provision right-sized nodes in seconds based on pending pod requirements.

Practical Use Cases for Amazon EKS

Enterprises use EKS to power a wide range of production workloads.

  • Microservices Architecture: EKS integrates with the AWS Application Load Balancer (ALB) Controller, allowing teams to provision AWS load balancers using native Kubernetes ingress objects. EKS also supports service meshes like Istio for traffic routing, service discovery, and mutual TLS (mTLS) communication.
  • Hybrid Cloud Deployments: For organizations with strict data residency or compliance constraints, EKS Anywhere allows running EKS-compatible clusters on on-premises infrastructure like VMware vSphere or bare-metal servers.
  • Batch Processing and Machine Learning Workloads: EKS is well-suited for running large-scale data processing and batch pipelines. By using the Kubernetes Jobs API, clusters scale up to thousands of cores and down to zero as jobs complete. Teams can mix EC2 On-Demand Instances with EC2 Spot Instances to reduce compute costs.

Getting Started with Amazon EKS

Deploying applications on Amazon EKS follows a structured lifecycle.

PhaseDescriptionKey Tools & Configuration
1. Network DesignProvision the VPC and subnets across multiple AZs.Terraform, AWS VPC CNI, Private Subnets
2. Cluster CreationDeploy the EKS cluster control plane.AWS CLI, Terraform, eksctl
3. Compute SetupConfigure Managed Node Groups or Karpenter.EC2 Auto Scaling, Karpenter Helm Chart
4. Access ControlAuthorize users and services via IAM-to-RBAC mappings.EKS Access Entries, IAM Policies
5. Workload DeployConnect to the cluster API and deploy applications.kubectl, Helm, ArgoCD

Overview of the primary deployment phases for establishing a production-ready EKS cluster.

First, provision a VPC with public and private subnets across at least two Availability Zones. Because the Amazon VPC CNI assigns native VPC IP addresses to pods, subnets must have sufficient address space to support expected pod density.

Next, create the control plane using Terraform or eksctl. Once active, launch worker nodes using Managed Node Groups or Karpenter. Configure access control using EKS Access Entries to map AWS IAM roles directly to Kubernetes groups.

Finally, update your local configuration file via the AWS CLI to connect kubectl or GitOps pipelines like ArgoCD:

bash
aws eks update-kubeconfig --region us-west-2 --name my-eks-cluster

FAQs

Frequently Asked Questions

Amazon EKS deploys and manages the Kubernetes control plane instances across multiple AWS Availability Zones. If an API server node fails, EKS automatically detects the issue, replaces the unhealthy node, and keeps the cluster's control plane operational, avoiding single points of failure.