A Kubernetes cluster architecture is designed by defining a control plane, worker nodes, networking, and workload placement before deploying any YAML. This guide walks through the components, decision points, and a worked example so you can design a cluster that matches your actual workload instead of copying a generic diagram.
Most teams get into trouble not because Kubernetes is hard to install — managed offerings like Amazon EKS, GKE, and AKS handle most of that — but because they never explicitly design the architecture. They pick defaults, hit a scaling wall or a security audit finding six months later, and then have to retrofit networking or node groups under pressure. This article covers the core building blocks, a realistic kubernetes cluster architecture example on AWS, and where a kubernetes cluster architecture maker (diagramming tool) fits into the workflow.
What Are the Core Components of a Kubernetes Cluster?
Every Kubernetes cluster is built from two logical planes: a control plane that makes scheduling and state decisions, and a data plane of worker nodes that run containers. Understanding what lives in each is the first step to designing anything beyond a toy cluster.
The control plane consists of:
- kube-apiserver — the front door for all cluster operations, exposed over HTTPS (port 6443 by default). Every kubectl command, controller, and kubelet talks to this.
- etcd — a distributed key-value store holding all cluster state (ports 2379/2380). Etcd availability is the single most critical factor in cluster resilience; losing quorum means losing the cluster.
- kube-scheduler — assigns unscheduled pods to nodes based on resource requests, taints/tolerations, affinity rules, and topology constraints.
- kube-controller-manager — runs reconciliation loops (node controller, replication controller, endpoint controller, etc.) that keep actual state converging toward desired state.
- cloud-controller-manager — integrates with the underlying cloud provider (AWS, GCP, Azure) for load balancers, node lifecycle, and storage volumes.
The data plane consists of:
- kubelet — the agent on every node that talks to the API server and manages pod lifecycle via the container runtime.
- kube-proxy — implements Service networking rules, typically via iptables or IPVS.
- Container runtime — containerd or CRI-O (Docker as a runtime was removed from kubelet in v1.24, though images remain OCI-compatible).
- CNI plugin — provides pod networking (Amazon VPC CNI, Calico, Cilium, etc.).
On managed services like EKS, AWS runs and patches the control plane for you across multiple Availability Zones, and you're only responsible for designing the data plane, networking, and workload architecture — which is where most real design decisions actually happen.
How Do You Choose Between Self-Managed, EKS, and a Managed Node Architecture?
The right control-plane strategy depends on how much operational overhead your team can absorb versus how much control you need over etcd, API server flags, and upgrade timing. For the large majority of production teams in 2026, a managed control plane (EKS, GKE, AKS) is the pragmatic default; self-managed clusters are reserved for edge cases with strict compliance or air-gapped requirements.
Compare the main options:
| Approach | Control plane ops | Upgrade control | Typical use case |
|---|---|---|---|
| Self-managed (kubeadm) | You run and patch etcd, API server, controllers | Full control, high effort | Air-gapped, regulated, or research environments |
| Amazon EKS | AWS manages control plane, multi-AZ, SLA-backed | Scheduled, you trigger version bumps | Standard production AWS workloads |
| EKS Auto Mode | AWS manages control plane and node lifecycle | Managed compute and scaling | Teams wanting minimal infra ops |
| Fargate for EKS | No node management at all, per-pod billing | N/A, AWS abstracts nodes | Bursty or small-footprint workloads |
Self-managed clusters give you the most flexibility — custom admission controllers, exotic etcd topologies, non-standard CNI configurations — but you own etcd backup/restore, certificate rotation, and API server availability. EKS charges a flat hourly fee per cluster (published on the AWS pricing page and subject to change, so check current rates) and removes control-plane operations entirely, letting your team focus on node groups, IAM, and workload design.
What Does a Practical Kubernetes Cluster Architecture Example Look Like on AWS?
A realistic production architecture separates concerns across VPC networking, node groups by workload type, and namespace-based isolation rather than running everything as a single flat cluster. Below is a concrete example for a mid-sized SaaS platform running on EKS.
Networking layer: - A VPC spanning three Availability Zones, with private subnets for worker nodes and public subnets only for NAT gateways and the Application Load Balancer. - The Amazon VPC CNI assigns pod IPs from VPC subnet ranges directly, which simplifies security group and VPC-native routing but consumes IP addresses faster — plan subnet sizing accordingly (a common failure mode is running out of /24 IPs under high pod density). - An AWS Load Balancer Controller manages Application Load Balancers (Layer 7, port 443 with ACM-issued TLS certs) for ingress and Network Load Balancers for TCP workloads.
Compute layer:
- A system node group (small, on-demand instances, e.g. m6i.large) running only cluster add-ons: CoreDNS, metrics-server, the AWS Load Balancer Controller, and cluster-autoscaler or Karpenter.
- An application node group using Karpenter for just-in-time provisioning across mixed instance types, tainted so only application workloads schedule there.
- A spot-backed batch node group for stateless, interruption-tolerant jobs, isolated with taints and tolerations to avoid disrupting latency-sensitive services.
Workload isolation:
- Namespaces per environment or team (payments, search, platform), each with ResourceQuotas and LimitRanges to prevent noisy-neighbor resource exhaustion.
- NetworkPolicies (enforced via Calico or Cilium, since the default VPC CNI alone doesn't enforce them without the network policy agent enabled) restricting east-west traffic to declared dependencies only.
- Pod Security Standards at the restricted level for namespaces handling sensitive data, enforced via the built-in Pod Security Admission controller.
State and secrets: - Stateful workloads use the Amazon EBS CSI driver for block storage or Amazon EFS CSI driver for shared file access; databases are frequently offloaded to RDS or Aurora instead of running inside the cluster. - Secrets are pulled at runtime via the AWS Secrets and Configuration Provider (ASCP) for the Secrets Store CSI Driver rather than stored as base64-encoded native Kubernetes Secrets, which are only encoded, not encrypted, unless you enable envelope encryption with AWS KMS.
This layout — separate node groups by function, namespace-level quotas, explicit network policies, and externalized secrets — is a pattern seen repeatedly in AWS's own EKS best practices documentation and is a reasonable template to adapt rather than a rigid prescription.
How Should You Design Networking and Service Discovery?
Kubernetes networking design centers on three questions: how pods get IP addresses, how services are discovered internally, and how external traffic reaches the cluster. Getting these wrong is the most common source of production incidents in clusters that otherwise look well-architected.
Internally, CoreDNS resolves service names (myservice.namespace.svc.cluster.local) to ClusterIPs, which are virtual IPs implemented by kube-proxy rules — not addresses you can ping directly at the network layer in the traditional sense. For east-west traffic between microservices, a service mesh like Istio or Linkerd adds mTLS, retries, and observability, but it also adds a sidecar proxy per pod, extra latency (typically single-digit milliseconds), and real operational complexity — don't adopt one just because it's trendy.
For north-south traffic (external users reaching the cluster), the standard AWS pattern is:
- Route 53 resolves a domain to an Application Load Balancer.
- The ALB (provisioned via Kubernetes Ingress objects and the AWS Load Balancer Controller) terminates TLS on port 443.
- Traffic is forwarded to NodePort or, more efficiently, directly to pod IPs using ALB target-type
ipmode, which bypasses an extra network hop through kube-proxy.
A common trade-off worth naming explicitly: Ingress objects are simpler and sufficient for straightforward HTTP routing, while the newer Gateway API offers more expressive routing (traffic splitting, header-based routing) and is gradually becoming the community-preferred standard, but has less mature tooling support across some third-party controllers as of 2026.
How Do You Plan for Scaling and High Availability?
High availability in Kubernetes means designing redundancy at every layer — control plane, nodes, pods, and data — not just enabling a single autoscaler and calling it done. Each layer has a distinct scaling mechanism and distinct failure mode.
| Layer | Scaling mechanism | Failure protection |
|---|---|---|
| Control plane | Managed by AWS across 3 AZs (EKS) | Automatic failover, SLA-backed |
| Nodes | Cluster Autoscaler or Karpenter | Spread across multiple AZs via topology spread constraints |
| Pods | Horizontal Pod Autoscaler (HPA), Vertical Pod Autoscaler (VPA) | PodDisruptionBudgets limit simultaneous evictions |
| Data | StatefulSets with persistent volumes | Cross-AZ replication or managed DB services |
Karpenter, AWS's open-source node provisioner, has largely displaced the traditional Cluster Autoscaler in new EKS deployments because it provisions right-sized nodes directly against EC2 rather than scaling predefined node groups — it reacts to unschedulable pods in seconds and can consolidate underutilized nodes automatically. The trade-off is a steeper learning curve around NodePools and NodeClasses compared to the more static, familiar managed node group model.
For pods, set both requests and limits on CPU/memory; the scheduler uses requests for bin-packing decisions, and the kubelet uses limits to throttle or OOM-kill containers that exceed them. Combine podAntiAffinity or topologySpreadConstraints with multi-AZ node groups so a single AZ outage doesn't take down every replica of a service simultaneously.
Where Does a Kubernetes Cluster Architecture Maker Fit In?
A kubernetes cluster architecture maker — a diagramming tool purpose-built or adapted for cloud infrastructure — helps you validate a design before you provision anything, and it produces documentation your team and auditors will actually use later. Hand-drawn diagrams in generic tools drift out of sync with reality within weeks; the goal is a diagram that's fast enough to redo that people actually keep it updated.
Three practical approaches, in increasing order of automation:
- General diagramming tools (draw.io, Lucidchart) with AWS/Kubernetes icon sets — flexible, manual, and prone to going stale.
- Infrastructure-as-code visualizers that generate diagrams from Terraform or CloudFormation state — accurate to what's deployed but reactive, not useful during upfront design.
- AI-assisted architecture tools (including prompt-driven tools like draft1.ai) that turn a natural-language description — "EKS cluster, three AZs, Karpenter-managed nodes, ALB ingress, RDS Postgres" — into a draft diagram and accompanying documentation in minutes, which you then refine.
The practical value of the AI-assisted category is speed at the design stage: you can iterate on a kubernetes cluster architecture example in minutes, share it for review before writing a line of Terraform, and regenerate it as the design changes — rather than treating the diagram as a one-time deliverable that's outdated the moment the real cluster diverges from it.
Key Takeaways
- A Kubernetes cluster architecture separates a control plane (API server, etcd, scheduler, controller-manager) from a data plane of worker nodes; managed services like EKS handle the former for you.
- For most production teams, a managed control plane (EKS, GKE, AKS) is the pragmatic starting point; self-managed clusters are best reserved for compliance-driven or air-gapped requirements.
- Separate node groups by function — system add-ons, application workloads, spot-backed batch jobs — using taints and tolerations rather than running everything on one undifferentiated pool.
- Design networking deliberately: CNI choice affects IP exhaustion risk, and NetworkPolicies must be explicitly enforced (they're not automatic with every CNI).
- High availability requires redundancy at four separate layers — control plane, nodes, pods, and data — each with its own scaling and failure-protection mechanism.
- Karpenter has become the common default for node autoscaling on EKS due to faster, right-sized provisioning compared to the traditional Cluster Autoscaler.
- Diagramming — whether manual or via an AI-assisted kubernetes cluster architecture maker — is most valuable when done before provisioning, not as after-the-fact documentation.
Frequently Asked Questions
What is the difference between a Kubernetes cluster architecture and a deployment architecture?
Cluster architecture describes the infrastructure — control plane, nodes, networking, and storage — while deployment architecture describes how application workloads (Deployments, Services, Ingress) are organized on top of that infrastructure. You design the cluster architecture once and evolve it slowly; deployment architecture changes far more frequently as applications are added or updated.
How many nodes should a production Kubernetes cluster have?
There's no fixed number — it depends on workload resource requirements, redundancy needs, and blast-radius tolerance, but most production clusters run a minimum of two to three nodes per Availability Zone across at least three AZs for real fault tolerance. Autoscalers like Karpenter mean the number fluctuates continuously rather than being a fixed design constant.
Is EKS more expensive than running Kubernetes on raw EC2?
EKS adds a flat per-cluster hourly control-plane fee on top of standard EC2, EBS, and load balancer costs, so it's technically more expensive than self-managing the control plane on bare EC2. In practice, the operational time saved on etcd management, upgrades, and HA configuration usually outweighs that fee for teams without dedicated Kubernetes infrastructure engineers.
Do I need a service mesh for a small Kubernetes cluster?
No, a service mesh is usually unnecessary for small clusters with a handful of services and simple traffic patterns. It becomes worth the added complexity (sidecar overhead, extra control plane) once you need mTLS between dozens of services, fine-grained traffic shifting, or detailed service-to-service observability.
What's the difference between Ingress and Gateway API?
Ingress is the older, simpler Kubernetes API for routing external HTTP(S) traffic to services, supported by nearly every controller. Gateway API is the newer standard offering more expressive routing (traffic splitting, protocol-specific rules) and role-oriented configuration, and is gradually gaining broader controller support as of 2026.
Can I use a Kubernetes cluster architecture maker to generate Terraform, not just diagrams?
Some AI-assisted tools, including draft1.ai, can generate both a visual architecture and accompanying infrastructure documentation from the same prompt, though the generated code should always be reviewed and tested rather than applied directly to production. Treat generated output as a strong first draft, not a final deliverable.
What happens if etcd loses quorum?
If etcd loses quorum (typically due to losing more than half of its member nodes), the cluster becomes read-only or fully unavailable because the API server can no longer reliably write state changes. This is why managed services like EKS run etcd across multiple Availability Zones with automated backups — restoring quorum manually on a self-managed cluster is a high-stakes, downtime-inducing operation.
Draw this in seconds with draft1. Describe your architecture in plain English and draft1 generates an editable AWS/cloud diagram plus documentation — no dragging boxes around. Try it free.
Draw this in ~20 seconds
Describe your own version of this architecture and draft1 generates an editable draw.io diagram — boxes, arrows, labels, the lot.
Generate this diagram free ➔Free demo — no signup. Then 3 free diagrams with an account, no card.