Blog / Kubernetes
Running Kubernetes on AWS EKS: A Production Setup Guide
Kubernetes is powerful, and easy to over-complicate. Here is a lean, production-ready EKS setup that scales with your traffic, survives an availability-zone failure, and stays affordable.
1. Spread the cluster across availability zones
Run worker nodes in at least two AZs. If one zone goes down, your pods reschedule onto healthy nodes and users never notice. Pair it with an RDS Multi-AZ database so state fails over too.
2. Autoscale at two levels
- Cluster Autoscaler / Karpenter adds and removes nodes as demand changes.
- Horizontal Pod Autoscaler (HPA) scales pods on CPU, memory or custom metrics.
Together they mean you pay for what you use, not for a fixed fleet sized to your worst day.
3. One ingress, TLS everywhere
Use the AWS Load Balancer Controller so an Ingress provisions an ALB, terminates TLS with ACM certificates, and routes to your services. No hand-managed load balancers.
4. Make it observable from day one
Prometheus for metrics, Grafana for dashboards, and alerts on latency, error rate and pod restarts. Ship logs to CloudWatch or Loki. You want to see a problem before your users do.
5. Lock it down
- IRSA (IAM Roles for Service Accounts), pods get least-privilege AWS access, no shared node role.
- Network policies to control pod-to-pod traffic.
- Private nodes; only the ALB is public.
Key takeaways
- Multi-AZ nodes + RDS Multi-AZ for resilience.
- Cluster and pod autoscaling to match cost to load.
- ALB ingress with ACM TLS, no manual load balancers.
- Prometheus + Grafana + alerts from the start.
- IRSA, network policies and private nodes for security.
Need EKS set up right?
I build production Kubernetes platforms on EKS, autoscaling, secure and observable. Book a free call and I'll map out the right setup for your workload.
Get a free DevOps audit →