AWS EKS
Amazon Elastic Kubernetes Service (EKS) is the managed Kubernetes service of AWS. AWS runs and scales the control plane (the API servers and etcd) across several Availability Zones, and you decide where the applications run.
Key concepts #
- Cluster: the managed control plane, with a Kubernetes API endpoint that can be public, private or both.
- Compute options: managed node groups (EC2 instances in an Auto Scaling group that EKS creates and updates), self-managed nodes, Fargate (serverless pods) and EKS Auto Mode, where AWS also manages the nodes.
- Networking: the VPC CNI gives each pod an IP address of the VPC. Services of type
LoadBalancerand Ingress objects create Elastic Load Balancers through the AWS Load Balancer Controller. - Access and permissions: IAM to authenticate to the cluster, and IAM roles for service accounts (IRSA) or EKS Pod Identity to give pods AWS permissions.
- Add-ons: managed versions of CoreDNS, kube-proxy, the VPC CNI and the EBS and EFS CSI drivers.
- Storage: EBS and EFS volumes as persistent volumes. Images come from ECR.
- Kubernetes versions have a limited support period, so clusters must be upgraded regularly.
Pricing #
A charge per cluster per hour (higher for versions in extended support) plus the compute (EC2 or Fargate), storage and load balancers that the cluster uses. See the EKS pricing.
With Terraform #
The resources are aws_eks_cluster, aws_eks_node_group, aws_eks_fargate_profile, aws_eks_addon and the IAM roles they need. The module terraform-aws-modules/eks/aws builds a complete cluster.
See tutorials:
- Terraform AWS EKS Cluster Deployment & Application Publishing through ALB
- How to Deploy Applications in Kubernetes using OpenTofu
See also: AWS ECS.