EKS clusters can be created through three main interfaces: the AWS Console, the AWS CLI, and eksctl. Each trades verbosity for convenience differently. eksctl is the most opinionated and the fastest path to a working cluster.
AWS Console
Clickable GUI — good for learning
Wizard-guided cluster configuration
Not repeatable — not infrastructure-as-code
Good for one-off exploration
AWS CLI
aws eks create-cluster
Full API surface exposed
Scriptable but verbose (many flags)
You manage VPC/subnet/IAM separately
eksctl
Open-source CLI built for EKS
Single command creates cluster + node group
Auto-creates VPC, IAM roles, kubeconfig
YAML-driven: cluster.yaml
Declarative (IaC)
CloudFormation stacks
EKS Blueprints (CDK/Terraform)
Terraform AWS provider
Repeatable, version-controlled
What are the three main interfaces for creating an EKS cluster?
1. AWS Console — guided wizard, not repeatable
2. AWS CLI — aws eks create-cluster, scriptable but verbose
3. eksctl — purpose-built CLI, creates VPC + IAM + cluster in one command
Why is the AWS Console not ideal for production cluster creation?
The Console is not repeatable — it produces no code artifact. If you need to recreate the cluster (DR, new region, staging env), you have to click through the wizard again. Use eksctl or IaC for any cluster you care about.
What does eksctl do automatically that the AWS CLI does NOT?
eksctl automatically creates:
• VPC (192.168.0.0/16) with public/private subnets
• IAM roles for the cluster and node group
• CloudFormation stacks to manage all resources
• kubeconfig entry on your local machine
The AWS CLI only calls the EKS API — you supply all dependencies.
TOPIC 2 eksctl deep-dive
eksctl is the official CLI for EKS. It wraps all EKS, CloudFormation, IAM, and VPC operations into a single opinionated interface. You can drive it with CLI flags for quick clusters, or a cluster.yaml config file for full declarative control.
What are the 6 things eksctl creates by default when you run eksctl create cluster?
1. IAM roles for cluster + node group
2. Dedicated VPC (192.168.0.0/16) with public & private subnets
3. EKS cluster (control plane)
4. Managed node group with specified instance type
5. API endpoint access configuration
6. kubeconfig written locally for kubectl
What CIDR block does eksctl use for the automatically created VPC?
192.168.0.0/16 — eksctl's default VPC CIDR. This avoids conflicts with the common 10.0.0.0/8 and 172.16.0.0/12 ranges used in corporate networks. You can override this in cluster.yaml via the vpc.cidr field.
What is the --managed flag in eksctl and why use it?
The --managed flag creates a managed node group instead of a self-managed one. With a managed node group, EKS handles rolling updates, AMI patching, and draining — you don't manage the lifecycle yourself. It's almost always the right choice for new clusters.
What does privateNetworking: true in cluster.yaml do?
It deploys node group instances into private subnets only — nodes get no public IP addresses. Traffic between nodes and the internet routes through a NAT Gateway. This is a security best practice for production clusters.
Two ways to specify the AWS region in eksctl — what are they?
B. The --region flag on the CLI command: eksctl create cluster --region us-west-2
C. The metadata.region field in cluster.yaml: metadata: region: us-east-1
What technology does eksctl use under the hood to manage AWS resources?
AWS CloudFormation. eksctl generates and submits CloudFormation stacks for every resource it creates (VPC, EKS cluster, node group). This means all eksctl-created resources appear in the CloudFormation console and benefit from stack-level rollback.
TOPIC 3 Deploying nodes — AMI types
EKS worker nodes need an AMI that includes the Kubernetes node components (kubelet, kube-proxy, container runtime). EKS provides four AMI categories — each with different tradeoffs for security, flexibility, and OS choice.
AMI TYPE 1
EKS Optimized Linux
Default. Turnkey Amazon Linux 2 / Amazon Linux 2023 AMI pre-configured by AWS for EKS. Easiest path to production.
AMI TYPE 2
Bottlerocket
Open-source Linux distro by AWS. Purpose-built for running containers only. Minimal attack surface. Available as a built-in EKS AMI.
AMI TYPE 3
Custom AMI
Built from a GitHub build spec. Use when you need specific packages or OS customizations. NOT supported with Fargate.
AMI TYPE 4
Windows AMI
Run Windows containers on Windows Server 2019 or 2022. Mixed Linux/Windows clusters supported.
Animation · Four EKS AMI types
What AMI type is open-source and purpose-built for running containers?
Bottlerocket — an open-source Linux-based OS developed by AWS. It contains only what is needed to run containers, resulting in a minimal attack surface and faster startup. Available as a built-in EKS AMI option.
What is the default EKS AMI type and what does "turnkey" mean in this context?
Amazon EKS Optimized Linux is the default. "Turnkey" means AWS pre-installs and pre-configures all EKS node components (kubelet, kube-proxy, containerd, AWS VPC CNI) — you select it and it works immediately with no additional setup.
Custom AMIs are NOT supported with which deployment type?
AWS Fargate. Fargate is serverless — AWS manages the underlying compute. You cannot bring a custom AMI because there is no node OS for you to control. Custom AMIs are only valid for EC2-based node groups (self-managed or managed).
What Windows Server versions are supported for Windows EKS nodes?
Windows Server 2019 and Windows Server 2022. EKS supports mixed Linux/Windows clusters — you can have Linux node groups and Windows node groups in the same cluster. Pod scheduling to the right OS is handled with node selectors.
Why would you choose Bottlerocket over EKS Optimized Linux?
Security: Smaller OS footprint = smaller attack surface Immutability: The OS is read-only at runtime (harder to persist malware) Automatic updates: Atomic OS updates with rollback support Purpose-built: No general-purpose packages, only what containers need
TOPIC 4 Declarative options (IaC)
For production clusters, you want infrastructure-as-code — repeatable, version-controlled, reviewable definitions. EKS supports three declarative paths: CloudFormation, EKS Blueprints, and Terraform / AWS SDK.
Tool
What it provides
Best for
CloudFormation
AWS-native IaC. Define cluster, node groups, VPC, IAM in YAML/JSON stacks.
AWS-first shops; automatic rollback on failure
EKS Blueprints
Fully bootstrapped clusters: cluster + networking + add-ons + operational software in one deployment. Available as CDK or Terraform module.
Teams that want a production-ready cluster on day 1
What are EKS Blueprints and what makes them different from raw CloudFormation?
EKS Blueprints are pre-built cluster templates that include not just the EKS cluster but also operational software — cluster autoscaler, load balancer controller, metrics server, logging, etc. You get a fully bootstrapped cluster ready for production workloads, not just raw infrastructure.
What is the key advantage of using CloudFormation for EKS cluster management?
Automatic rollback on failure. If a CloudFormation stack update fails, AWS automatically rolls back all changes to the previous known-good state. Other benefits: native AWS integration, change sets for previewing updates, drift detection.
Why might a team choose Terraform over CloudFormation for EKS?
Multi-cloud: Terraform manages AWS, GCP, Azure resources in a single codebase Existing workflows: Teams already using Terraform for other infra don't need a second tool State management: Terraform state file supports complex dependency tracking across providers Community modules: Rich ecosystem of EKS modules on Terraform Registry
TOPIC 5 Kubernetes version upgrades
Upgrading an EKS cluster is a two-phase process: first the control plane, then the data plane. The 8-step upgrade sequence must be followed in order. Skipping steps — especially reviewing API deprecations before upgrading — causes production outages.
1
PRE-UPGRADE
Review release notes & deprecation notices
2
PRE-UPGRADE
Backup cluster (optional but recommended)
3
PRE-UPGRADE
Identify removed or changed API versions
4
PRE-UPGRADE
Check node group version compatibility
5
CONTROL PLANE
Upgrade cluster control plane (EKS API / Console)
6
POST / ADD-ONS
Review & upgrade EKS add-ons
7
POST / ADD-ONS
Upgrade kubectl to match cluster version
8
DATA PLANE
Upgrade cluster data plane (nodes)
Animation · 8-step cluster upgrade sequence
What happens during control plane upgrade
New API server nodes are deployed
Auto rollback on failure
Possible minor service interruptions
Existing nodes remain unchanged
Add-ons remain unchanged (separate step)
Node upgrade by type
Self-managed: AWS native or third-party tools
Managed node groups: Console or eksctl
Fargate: No upgrade required (AWS handles it)
What is the correct order: upgrade control plane FIRST or data plane FIRST?
Control plane first, data plane second. Always upgrade the EKS control plane before upgrading worker nodes. The Kubernetes compatibility guarantee says a control plane can be one minor version ahead of nodes, but not the reverse.
Who handles patch version upgrades to the EKS control plane?
AWS applies patch versions automatically to the control plane (e.g., 1.27.1 → 1.27.4). You only control minor version upgrades (e.g., 1.27 → 1.28). This is one of the managed benefits — you never need to apply a patch for the API server.
What is the minimum upgrade type that can remove Kubernetes APIs?
B — Minor version upgrade (e.g., 1.26 → 1.27). Only major or minor version upgrades can remove or change APIs. Patch versions (1.27.1 → 1.27.2) never remove APIs. This is why step 3 (identify API changes) only matters for minor version upgrades.
Which node type requires NO manual upgrade steps during an EKS version upgrade?
AWS Fargate. Because Fargate is serverless and AWS manages the underlying compute, Fargate nodes are automatically upgraded when new Pods are scheduled. There is no node upgrade action required from you for Fargate workloads.
What happens if the EKS control plane upgrade fails mid-flight?
EKS automatically rolls back the control plane. New API server nodes are deployed alongside old ones; only after the new nodes are healthy does EKS cut over. If health checks fail, the rollback is automatic and the cluster stays on the original version.
Why must you upgrade EKS add-ons AFTER the control plane upgrade (Step 6)?
Add-ons like CoreDNS, kube-proxy, and VPC CNI have version compatibility requirements tied to the Kubernetes minor version. An old add-on version may not support new API objects introduced in the upgraded Kubernetes version — upgrading add-ons after the control plane ensures compatibility.
How do you upgrade a managed node group?
Via the AWS Console or eksctl: eksctl upgrade nodegroup \ --name=standard-workers \ --cluster=prod \ --kubernetes-version=1.28
EKS performs a rolling update: new nodes → drain old nodes → terminate old nodes.
TOPIC 6 Knowledge checks (from the course)
These are the official course knowledge-check questions. Try to answer before flipping.
KC 1 — Which node AMI type is open-source and purpose-built for running containers? A. EKS Optimized Linux B. Bottlerocket C. Custom D. Windows
✓ B — Bottlerocket
Bottlerocket is the open-source, container-specific OS developed by AWS. EKS Optimized Linux (A) is the default/turnkey option but not specifically container-only. Custom (C) and Windows (D) serve different purposes.
KC 2 — IAM permissions are provided via the node IAM role to which two entities? A. kube-apiserver B. kubelet on each node C. kube-scheduler D. Applications running in pods
✓ B and D
B. kubelet on each node — uses the node IAM role to make EC2, ECR, and CloudWatch API calls. D. Applications running in pods — pods inherit the node IAM role unless IRSA (IAM Roles for Service Accounts) is configured. The API server (A) and scheduler (C) run in the AWS-managed control plane, not on your nodes.
KC 3 — How can you specify the AWS region when using eksctl? A. AWS_DEFAULT_REGION env var B. --region flag C. cluster.yaml metadata.region D. IAM role ARN
✓ B and C
B. --region flag — e.g. eksctl create cluster --region us-west-2 C. cluster.yaml — metadata.region: us-east-1
AWS_DEFAULT_REGION (A) works with the AWS CLI but is not the eksctl-specific method. IAM role ARN (D) is for authentication, not region selection.
KC 4 — What is the minimum upgrade type that can result in the removal of an API? A. Patch version B. Minor version C. Major version D. AMI update
✓ B — Minor version upgrade
Kubernetes follows semver: only minor version upgrades (e.g. 1.27 → 1.28) can deprecate and remove APIs. Patch versions (A) are backward-compatible bug fixes. Major versions (C) would also remove APIs but EKS doesn't ship major K8s changes independently. AMI updates (D) don't change the Kubernetes API.
You run eksctl create cluster --name demo --managed with no other flags. What VPC CIDR does eksctl use?
192.168.0.0/16 — eksctl's built-in default VPC CIDR. It also creates subnets across two AZs and configures both public and private subnets. You can override this with vpc.cidr in cluster.yaml.
What is step 5 in the EKS upgrade sequence, and what technology does EKS use to execute it safely?
Step 5 is "Upgrade the cluster control plane". EKS deploys new API server nodes alongside old ones, waits for them to be healthy, then cuts over. If new nodes fail health checks, EKS automatically rolls back to the old nodes — no manual intervention needed.