Skip to main content
Cloud DevOps Solutions
Get a quote Talk to an engineer

Containers and Kubernetes

Amazon EKS Engineering: Secure, Right-Sized and Upgraded on Schedule

Amazon EKS is AWS's managed Kubernetes service: AWS runs the control plane, and you run nodes and workloads inside your own VPC. We design EKS clusters, wire them to IAM, VPC networking and Karpenter, control cost, and run the upgrade cycle so clusters stay supported and secure.

Key takeaways

  • EKS manages only the control plane. Node images, add-ons, networking and upgrades remain your responsibility unless you choose Auto Mode or Fargate.
  • Pod networking uses real VPC IP addresses by default, so subnet sizing is a design decision you cannot easily undo.
  • Give pods their own IAM roles through IRSA or EKS Pod Identity; never rely on the node instance role.
  • Karpenter provisions right-sized nodes quickly and is usually the biggest single cost lever on EKS.
  • Each Kubernetes version has a defined support window on EKS, and clusters left past it incur extended support charges or forced upgrades.

What teams use Amazon EKS for

AWS-native platforms

Teams already on RDS, S3, SQS and IAM get tight integration with load balancers, secrets and logging without leaving AWS.

Microservices behind ALB

The AWS Load Balancer Controller turns Ingress and Service objects into Application and Network Load Balancers.

Cost-sensitive batch and CI

Karpenter with spot capacity runs bursty jobs and build runners at far lower unit cost than fixed node groups.

Regulated workloads

Private endpoints, KMS envelope encryption of secrets, audit logging to CloudWatch and strict IAM mapping support compliance reviews.

Migration from EC2 or ECS

Containerised services move to EKS in stages, behind the same load balancers and databases.

What EKS is and what AWS does for you

Amazon EKS is the managed Kubernetes control plane on AWS. AWS runs the API servers and etcd across availability zones, patches them and exposes a standard Kubernetes endpoint. Everything else, including worker nodes, networking add-ons, ingress, storage drivers and your workloads, runs in your account and is yours to operate. That boundary is the single most useful thing to understand before an EKS consulting engagement, because most of the real work sits on your side of it.

For the platform concepts themselves (scheduling, RBAC, probes, disruption budgets), see our Kubernetes page. This page covers what is specific to AWS.

Architecture decisions that are hard to reverse

VPC and pod networking

By default the Amazon VPC CNI gives every pod a real VPC IP address. That makes pods first-class citizens for security groups and VPC flow logs, but it also means pod count is bounded by subnet size and instance network interfaces. We size subnets generously, consider a secondary CIDR range for pods, and enable prefix delegation where density matters. Choosing a /24 for a cluster that later needs a few thousand pods is the classic mistake, and fixing it means rebuilding. See our EKS cluster architecture design deliverable.

Compute model

You have four options: managed node groups, Karpenter, Fargate, or EKS Auto Mode. Our default for general workloads is a small managed node group for system components plus Karpenter for everything else. Fargate suits isolated, low-ops workloads but has constraints (no DaemonSets, no privileged pods). Auto Mode hands node lifecycle to AWS, which is attractive for small teams that value simplicity over tuning.

apiVersion: karpenter.sh/v1
kind: NodePool
metadata:
  name: general
spec:
  template:
    spec:
      requirements:
        - key: karpenter.sh/capacity-type
          operator: In
          values: ["spot", "on-demand"]
        - key: kubernetes.io/arch
          operator: In
          values: ["amd64", "arm64"]
      nodeClassRef:
        group: karpenter.k8s.aws
        kind: EC2NodeClass
        name: default
  disruption:
    consolidationPolicy: WhenEmptyOrUnderutilized

Pair this with sensible PodDisruptionBudgets so consolidation does not surprise your services. Our Karpenter and cluster autoscaler guide goes deeper.

Identity and security on AWS

Identity is where EKS differs most from AKS and GKE, because two IAM systems meet.

  • Human and CI access: EKS access entries map IAM principals to Kubernetes permissions through the EKS API, replacing the older aws-auth ConfigMap for new clusters. Avoid sharing the cluster-creator identity.
  • Pod access to AWS: use IRSA or EKS Pod Identity so each service account assumes a scoped IAM role. Never let pods inherit the node role. Our IRSA least-privilege work audits exactly this.
  • Secrets: enable KMS envelope encryption and pull application secrets from AWS Secrets Manager or Parameter Store (details).
  • Network: keep the API endpoint private where you can, apply security groups for pods selectively, and add Kubernetes network policies (EKS network policies and security groups).
  • Detection: turn on control plane audit logging and consider GuardDuty EKS protection.

Cost and capacity

EKS cost is rarely the cluster fee. The usual drivers are over-requested pods, idle nodes, NAT gateway data processing, cross-zone traffic and verbose logging. Our order of attack is: measure by namespace, fix requests, enable Karpenter consolidation, move tolerant workloads to spot, then tackle network and storage. A worked list is in 12 ways to cut EKS cost, and our cost analysis and optimisation service applies it to your account. Use the EKS cost calculator to size a baseline.

Day-2 operations

Upgrades

EKS upgrades the control plane in place, one minor version at a time, and you cannot downgrade. Then add-ons (CoreDNS, kube-proxy, VPC CNI, EBS CSI) must match, and nodes must be replaced. Karpenter drift or managed node group updates handle the last step. Each version has a standard support window, followed by a paid extended period, so we keep a calendar. Our EKS upgrade runbook is the artefact we hand over.

Observability and delivery

CloudWatch covers control plane logs, but application metrics and alerting are better served by Prometheus and Grafana (EKS monitoring setup). Deliver workloads through GitOps; our Argo CD on EKS tutorial shows a working pattern.

Ingress and traffic

The AWS Load Balancer Controller provisions ALBs for Ingress and NLBs for Services of type LoadBalancer. Use IngressGroups to share one ALB across many services instead of paying for one per team, and terminate TLS with ACM certificates so renewal is not your problem. Keep external DNS automated, and run at least two replicas of the controller with a disruption budget, because a stalled controller silently stops reconciling load balancers.

Backup and recovery

Nothing in EKS backs up your persistent volumes or custom resources for you. We pair EBS snapshot policies or a Kubernetes-aware backup tool with Git as the source of truth for manifests, then rehearse a restore into a fresh cluster. That rehearsal also proves your Terraform can rebuild the platform, which is the real disaster recovery test. See our backup and disaster recovery service.

Common EKS failure modes

  • IP exhaustion: small subnets plus the default CNI settings.
  • Node role over-permission: every pod can reach whatever the instance can.
  • Stale add-ons: a control plane upgrade that leaves CoreDNS or the CNI unsupported.
  • Load balancer sprawl: one ALB per Ingress, each billed hourly.
  • Spot without budgets: interruptions take out all replicas together.

When to choose something else

If you run a few stateless services and nobody on the team knows Kubernetes, ECS on Fargate is a fair answer and cheaper to own. If you already live in Azure or Google Cloud, use AKS or GKE. If you are weighing EKS against something else or planning a cloud migration, book a consultation and we will give you a candid recommendation.

Official documentation: docs.aws.amazon.com/eks

How we work with Amazon EKS

  1. 01

    Account and VPC design

    We plan accounts, CIDR ranges, subnet tiers and endpoints so pod IP demand is covered before the first cluster exists.

  2. 02

    Provision with Terraform

    The cluster, node capacity, add-ons and IAM are declared as reviewed modules, with state kept per environment.

  3. 03

    Identity and access

    Cluster access entries or aws-auth, IRSA or Pod Identity roles, and namespace RBAC are set to least privilege.

  4. 04

    Autoscaling and cost

    Karpenter NodePools, spot strategy, requests and limits are tuned, and cost is visible per namespace.

  5. 05

    Observability and security

    Prometheus, Grafana, logging, GuardDuty signals, image scanning and network policy are put in place.

  6. 06

    Upgrade calendar

    We run each minor upgrade through a rehearsed runbook, covering add-ons and node replacement.

Amazon EKS compared with the alternatives

We recommend the tool that fits your team, not the one we know best. Here is when each option makes sense.

OptionChoose it when
Amazon EKSAmazon EKS is AWS's managed Kubernetes service: AWS runs the control plane, and you run nodes and workloads inside your own VPC.
Amazon ECS on FargateChoose ECS when you run a modest number of services, want AWS-only tooling and prefer not to operate Kubernetes add-ons or upgrades.
EKS Auto ModeChoose Auto Mode when you want AWS to manage nodes, core networking and storage add-ons, and can accept less control over node configuration.
Azure AKS or Google GKEChoose these when your data, identity or existing commitments already sit in Azure or Google Cloud.
AWS LambdaChoose Lambda for event-driven code with spiky, low-volume traffic where per-invocation pricing and no runtime management win.

Tools we use alongside Amazon EKS

TerraformeksctlKarpenterAWS Load Balancer ControllerVPC CNICoreDNSexternal-dnsArgo CDPrometheusGrafanaAWS KMSAmazon ECRTrivy

Frequently asked questions

What is the difference between EKS and self-managed Kubernetes on EC2?
EKS runs and patches the Kubernetes control plane (API server and etcd) across multiple availability zones for you. With self-managed Kubernetes on EC2 you operate those components yourself. In both cases you still manage worker nodes, add-ons and workloads unless you choose Fargate or EKS Auto Mode.
IRSA or EKS Pod Identity?
Both give a pod its own IAM role. IRSA uses an OIDC provider per cluster and annotated service accounts. Pod Identity uses an agent add-on and associations managed through the EKS API, which is simpler to scale across many clusters. For new clusters we usually prefer Pod Identity and keep IRSA where it is already in place.
How do we reduce EKS cost?
Right-size requests first, then let Karpenter consolidate nodes and use spot for tolerant workloads. Also review NAT gateway data transfer, idle load balancers, cross-zone traffic and log volume, which often cost more than people expect. Our [EKS cost calculator](/tools/eks-cost-calculator/) gives a starting estimate.
How often must we upgrade EKS?
Each Kubernetes minor version has a standard support period on EKS, followed by a paid extended support period. In practice that means planning an upgrade every few months. EKS upgrades the control plane in place and cannot roll it back, so rehearsal in a non-production cluster matters.
Why do pods fail to schedule with 'too many pods' or IP errors?
With the default VPC CNI, each pod takes a VPC IP address, and the number of pods per node is limited by instance ENIs. Small subnets and small instance types exhaust IPs quickly. Prefix delegation, larger subnets or secondary CIDR ranges are the usual fixes.
EKS or ECS for a small team?
ECS is simpler and often cheaper to run when you have a few services and no need for the Kubernetes ecosystem. EKS makes sense when you want portability, Helm and operators, GitOps or a service mesh, or already have Kubernetes skills.

Talk to an engineer about Amazon EKS

Book a free 30-minute call. We review your current setup and tell you honestly whether and how we can help.

Written by Saddique Khan, DevOps / SRE / Cloud Consultant Engineer. Last updated 2026-10-09.