You are viewing a free preview of this lesson.
Subscribe to unlock all 10 lessons in this course and every other course on LearningBro.
Amazon Elastic Kubernetes Service (EKS) is a managed Kubernetes service that makes it easy to run Kubernetes on AWS without installing, operating, or maintaining your own Kubernetes control plane. If your team already uses Kubernetes or you need the portability and ecosystem that Kubernetes provides, EKS is the AWS service for you.
Kubernetes (often abbreviated as K8s) is an open-source container orchestration platform originally designed by Google. It automates deploying, scaling, and managing containerised applications.
graph TD
subgraph K["Kubernetes Cluster"]
subgraph CP["Control Plane"]
API["API Server"]
SCH["Scheduler"]
ETCD["etcd"]
CM["Controller Manager"]
end
subgraph W1["Worker Node 1 (kubelet, kube-proxy)"]
P1["Pod"]
P2["Pod"]
end
subgraph W2["Worker Node 2 (kubelet, kube-proxy)"]
P3["Pod"]
P4["Pod"]
end
end
| Concept | Description |
|---|---|
| Pod | The smallest deployable unit — one or more containers that share networking and storage |
| Deployment | Manages a set of identical Pods, handling rolling updates and rollbacks |
| Service | A stable network endpoint that routes traffic to a set of Pods |
| Namespace | A virtual cluster within a cluster for organising resources |
| ConfigMap | Stores non-sensitive configuration as key-value pairs |
| Secret | Stores sensitive data (passwords, tokens) encrypted at rest |
| Ingress | Manages external HTTP/HTTPS access to services |
| PersistentVolumeClaim | Requests persistent storage for Pods |
The hardest part of running Kubernetes is operating the control plane — keeping the API server, etcd database, scheduler, and controller manager running, updated, and highly available. EKS manages all of this for you.
| Component | Self-Managed Kubernetes | Amazon EKS |
|---|---|---|
| API Server | You install, configure, and scale | Managed by AWS across 3 AZs |
| etcd | You manage backups, availability, and upgrades | Managed by AWS, automatically backed up |
| Scheduler | You configure and maintain | Managed by AWS |
| Controller Manager | You configure and maintain | Managed by AWS |
| Worker Nodes | You provision and manage | You manage (EC2) or use Fargate |
| Kubernetes upgrades | You perform the upgrade process | AWS handles control plane upgrades; you upgrade nodes |
| High availability | You configure multi-AZ | Built in — control plane spans 3 AZs |
EKS offers three options for running worker nodes:
AWS provisions and manages EC2 instances for you:
aws eks create-nodegroup \
--cluster-name my-cluster \
--nodegroup-name my-nodes \
--node-role arn:aws:iam::123456789012:role/eksNodeRole \
--subnets subnet-aaa subnet-bbb \
--instance-types t3.medium \
--scaling-config minSize=2,maxSize=10,desiredSize=3
Advantages:
You create and manage your own EC2 instances and register them with the EKS cluster.
When to use:
Run Pods on Fargate without managing any nodes at all:
aws eks create-fargate-profile \
--cluster-name my-cluster \
--fargate-profile-name my-profile \
--pod-execution-role-arn arn:aws:iam::123456789012:role/eksFargatePodRole \
--subnets subnet-aaa subnet-bbb \
--selectors '[{ "namespace": "default", "labels": { "app": "my-api" } }]'
Pods matching the selector (namespace and labels) run on Fargate. Each Pod gets its own Firecracker microVM.
eksctl is the official CLI tool for creating and managing EKS clusters:
Subscribe to continue reading
Get full access to this lesson and all 10 lessons in this course.