Amazon EKS — Control Plane
EKS Control Plane
The control plane is the “brain” of your Kubernetes cluster. AWS runs it for you — but understanding how it works helps you make better architectural decisions.
Control Plane Architecture
EKS Control Plane (AWS-Managed)
┌─────────────────────────────────────────────────────────────┐
│ AWS-Managed VPC │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ NLB (Network Load Balancer) │ │
│ │ (API Server endpoint) │ │
│ └────────────┬────────────────┬────────────────┬───────┘ │
│ │ │ │ │
│ ┌────────────▼──┐ ┌──────────▼──┐ ┌──────────▼──┐ │
│ │ AZ-a │ │ AZ-b │ │ AZ-c │ │
│ │ ┌─────────┐ │ │ ┌────────┐ │ │ ┌────────┐ │ │
│ │ │API Srvr │ │ │ │API Srvr│ │ │ │API Srvr│ │ │
│ │ └─────────┘ │ │ └────────┘ │ │ └────────┘ │ │
│ │ ┌─────────┐ │ │ ┌────────┐ │ │ ┌────────┐ │ │
│ │ │ etcd │ │ │ │ etcd │ │ │ │ etcd │ │ │
│ │ └─────────┘ │ │ └────────┘ │ │ └────────┘ │ │
│ └───────────────┘ └─────────────┘ └─────────────┘ │
│ │
│ + Scheduler (leader-elected) │
│ + Controller Manager (leader-elected) │
│ + Cloud Controller Manager │
└─────────────────────────────────────────────────────────────┘
Key Control Plane Facts
| Component | Details |
|---|---|
| API Server | Runs across 3 AZs behind an NLB; auto-scales based on load |
| etcd | 3 replicas across 3 AZs; encrypted at rest with AWS KMS; automatic backups |
| Scheduler | Leader-elected; one active, others on standby |
| Controller Manager | Leader-elected; manages ReplicaSets, Deployments, etc. |
| Cloud Controller | Manages AWS-specific resources (ELBs, EBS volumes) |
What You Can’t Do
Since the control plane is fully managed:
- ❌ SSH into control plane nodes
- ❌ Modify etcd directly
- ❌ Change API server flags (like
--enable-admission-plugins) - ❌ View control plane node metrics in CloudWatch
- ❌ Change the number of API server replicas
What You CAN Do
- ✅ View control plane logs in CloudWatch (if enabled)
- ✅ Choose API server endpoint access (public/private)
- ✅ Enable envelope encryption for etcd (KMS key)
- ✅ Configure admission webhooks that run in your cluster
- ✅ View API server metrics via the Kubernetes metrics API
Control Plane Logging
Enable control plane logs to troubleshoot issues:
$ aws eks update-cluster-config \
--name demo \
--logging '{"clusterLogging":[{"types":["api","audit","authenticator","controllerManager","scheduler"],"enabled":true}]}'
Or in eksctl config:
cloudWatch:
clusterLogging:
enableTypes:
- api # API server requests
- audit # Who did what
- authenticator # IAM authentication events
- controllerManager # Controller reconciliation
- scheduler # Pod scheduling decisions
Cost warning: Control plane logs can be expensive. A busy cluster might generate 10+ GB/day. At $0.50/GB ingestion + $0.03/GB storage, that’s $5-16/day. Enable only what you need.
Envelope Encryption
By default, Kubernetes Secrets are stored in etcd with base64 encoding (not encrypted). Enable envelope encryption with KMS:
$ aws eks create-cluster \
--name secure-cluster \
--encryption-config '[{"resources":["secrets"],"provider":{"keyArn":"arn:aws:kms:us-east-1:123456789012:key/abc-123"}}]'
Control Plane SLA
| SLA Level | Uptime | Monthly Downtime Allowed |
|---|---|---|
| 99.95% | Standard EKS SLA | ~22 minutes/month |
AWS achieves this by:
- Running across 3 AZs
- Auto-healing unhealthy replicas
- Automatic scaling during load spikes
Common Mistakes
| Mistake | Impact |
|---|---|
| Not enabling control plane logging | Can’t troubleshoot authentication or scheduling issues |
| Enabling ALL log types on a busy cluster | High CloudWatch costs |
| Not enabling KMS encryption for Secrets | Secrets stored as base64 (readable by anyone with etcd access) |
| Expecting SSH access to control plane | Not possible — use API and logs instead |
Quick Reference
| Item | Value |
|---|---|
| API Server replicas | 3+ (across AZs, auto-scaled) |
| etcd replicas | 3 (across AZs) |
| SLA | 99.95% |
| Max clusters per region | 100 (soft limit) |
| Log types | api, audit, authenticator, controllerManager, scheduler |
What’s Next?
Now let’s explore the other half: Data Plane.