Elastic Kubernetes Service (EKS) Cheat Sheet

  • Managed K8s control plane
  • Highly available
    • 2+ API nodes and 3+ etcd nodes across 3 AZs
    • Automatic replacement of unhealthy control plane nodes
    • SLA 99.95%
  • Secure
    • Integrated with VPC network policies
  • Uses official utility eksctl to create and manage clusters
  • Fargate
    • In some regions user can run K8s nodes on Fargate (serverless container runtime)
  • Flat hourly rate for each cluster, other resources (EC2, EBS, etc.) used in clusters are billed on their own
  • You choose K8s versions such as 1.15 or 1.16, and EKS attach its own version to the initial K8s version introduced to EKS as eks.1 and increase that number along with upstream minor versions
    • Minor version upgrade is automatic
    • Minor version upgrade does not introduce breaking changes, or causes service interruptions
    • Minor version upgrade is incremental so it could take sometime for a certain cluster to upgrade to a new version, user can create new clusters to use new version immediately
    • New EKS clusters always start with latest K8s minor version of selected major version

Storage

  • EKS uses storage class to utilize EBS as persistent storage

Autoscaling

  • Cluster Autoscaler = Scale to right number of EC2 instances as needed
  • Horizontal Pod Autoscaler = Scale to right number of pods to handle workloads
  • Vertical Pod Autoscaler = Adjust CPU / RAM reservations for pods

Load Balancing

  • K8s LoadBalancer service = Use NLB or CLB as load balancer
  • ALB Ingress Controller = Provision ALB as load balancer
    • with kubernetes.io/ingress.class: alb annotation

Networking

Diagrams


    How Amazon EKS works
Overview of EKS
EKS Architecture
Public only: Requests to API server leaves VPC but not AWS network, however worker nodes must have public IP address and Internet access
Public + private
Private only
Public only
Public + private
Private only