Kubernetes Architecture Explained Simply
A simple explanation of Kubernetes architecture, including control plane, nodes, pods, networking, storage, and how teams use GitOps and k3s in production.
Kubernetes architecture can look intimidating at first because it introduces new terms: control plane, nodes, pods, scheduler, kubelet, Services, ingress, and controllers. But the model becomes much easier to understand when you break it into a few layers.
At a high level, Kubernetes is a system for declaring the desired state of containers and then continuously making the real cluster match that state. That sounds simple, but the platform includes several components that work together to schedule workloads, expose services, handle networking, and recover from failure.
This article explains Kubernetes architecture in plain language, covers the main moving parts, compares the common deployment approaches, and shows how teams use GitOps, k3s, and multi-tenant infrastructure in production.
The Problem: Kubernetes Looks Simple Until You Need to Operate It
Many teams first encounter Kubernetes through a Deployment YAML file. That creates an impression that Kubernetes is mostly a packaging format for containers.
In reality, Kubernetes is a distributed control system. It has to answer questions that do not show up in a local container runtime:
- Where should a workload run?
- What happens if a node fails?
- How does traffic reach the right pod?
- How does the cluster keep desired state consistent?
- How do updates happen without downtime?
- How are teams isolated from each other?
If you do not understand the architecture behind those answers, troubleshooting production issues becomes much harder.
Why a simple explanation matters
Kubernetes terminology is often explained from the inside out, which makes it feel more complex than it needs to be.
A simpler mental model helps engineers reason about production behavior:
- The control plane decides.
- The worker nodes run workloads.
- Pods are the execution unit.
- Services and ingress expose traffic.
- Controllers continuously reconcile state.
That is most of the architecture, expressed in one sentence.
Kubernetes Architecture: The Core Components
Kubernetes is usually described in two parts: the control plane and the worker nodes.
Control plane
The control plane is the brain of the cluster. It stores cluster state, makes scheduling decisions, and coordinates responses when the desired state changes.
The main control plane components are:
kube-apiserver: the front door to the cluster APIetcd: the backing store for cluster statekube-scheduler: chooses where pods should runkube-controller-manager: runs controllers that maintain desired statecloud-controller-manager: integrates with cloud provider resources when needed
Worker nodes
Worker nodes are the machines where application workloads actually run.
Key node components include:
kubelet: ensures pods assigned to the node are running as expectedcontainer runtime: runs the containers, commonly containerdkube-proxyor equivalent networking components: handles service traffic routing
The control plane decides what should happen. The worker nodes execute it.
Pods
Pods are the smallest deployable unit in Kubernetes. A pod usually contains one application container, though sidecars and helper containers are also common.
Pods share:
- Network namespace
- Storage volumes
- Lifecycle context
This is why Kubernetes users talk about pods rather than individual containers in most production discussions.
Services and ingress
Pods are ephemeral, so Kubernetes uses Services to provide stable network endpoints.
Ingress is commonly used to route HTTP and HTTPS traffic into the cluster, usually through an ingress controller such as NGINX, Traefik, or a cloud provider load balancer integration.
How Kubernetes Works Internally
The architecture becomes easier to understand if you follow a simple lifecycle.
1. A user or tool submits desired state
This might be a kubectl apply, a Helm release, or a GitOps controller syncing manifests from Git.
2. The API server records the request
The API server validates and stores the desired state in etcd.
3. Controllers compare desired state to real state
Controllers continuously watch the cluster and take action when the live state differs from the declared state.
4. The scheduler places pods on nodes
When a new pod needs a node, the scheduler looks at resources, constraints, affinities, and taints before choosing a placement.
5. The kubelet starts containers on the chosen node
The kubelet on that node talks to the container runtime and ensures the pod runs as expected.
6. Networking and services make the workload reachable
Service objects, DNS, and ingress controllers make the application available inside or outside the cluster.
That reconciliation loop is the architectural heart of Kubernetes.
Current Approaches Teams Use in Practice
Most teams do not run Kubernetes in exactly the same way. The architecture is the same, but the operational model varies.
Managed Kubernetes
Managed services such as EKS, GKE, and AKS simplify the control plane burden.
This is useful when teams want Kubernetes without running every control plane component themselves. The cloud provider owns part of the architecture, while the team manages workloads, policies, and cluster-level configuration.
Self-managed Kubernetes
Self-managed clusters give platform teams more control over control plane design, networking, storage, and upgrades.
This is common in private infrastructure, hybrid cloud, regulated environments, and teams with deep platform engineering maturity.
k3s for lightweight environments
k3s is a lightweight Kubernetes distribution that keeps the same architectural model while reducing operational overhead.
It is often used for:
- Edge deployments
- Small production environments
- Internal platforms
- Development and test clusters
- Distributed environments with tighter resource constraints
k3s is still Kubernetes architecture, just packaged for smaller footprints and simpler operations.
GitOps as the delivery model
Many teams now run Kubernetes architecture through GitOps instead of applying changes manually.
That means:
- Desired state lives in Git
- A controller reconciles the cluster
- Changes are reviewed before deployment
- Drift is reduced by automation
This fits naturally with Kubernetes because the platform itself is already built around reconciliation.
Common Architecture Mistakes
Even when the architecture is understood, production issues still happen when some parts are treated casually.
1. Overloading the control plane
If too many workloads or controllers are placed into a poorly designed cluster, the API server and controllers can become bottlenecks.
The control plane should be sized and isolated properly, especially in production.
2. Ignoring node placement
Workloads need the right nodes, not just any node.
Scheduling without attention to taints, tolerations, affinity, and resource requests can lead to uneven load or instability.
3. Treating networking as an afterthought
Cluster networking is not just “pods can talk to each other.”
You need to think about:
- DNS
- Service routing
- Ingress
- NetworkPolicy
- Load balancers
If networking is unclear, troubleshooting becomes much slower.
4. Running stateful workloads without storage planning
Stateful workloads require durable storage, backup strategy, and recovery drills.
The architecture may support persistent data, but the production design still has to be explicit.
5. Assuming namespaces equal isolation
Namespaces are useful for organization, but they are not a full security or tenancy boundary by themselves.
For multi-team environments, architecture often needs RBAC, quotas, network policy, and sometimes stronger isolation patterns.
Solution Approach: Build the Platform in Layers
A good Kubernetes architecture is not only about the cluster internals. It is about how the cluster is used.
Base layer: cluster infrastructure
This includes nodes, networking, storage, control plane, and cluster bootstrap.
Platform layer: shared services
This includes ingress, certificate management, logging, monitoring, policy enforcement, and secret handling.
Delivery layer: GitOps and CI/CD
This includes deployment automation, manifest validation, promotion, and drift control.
Workload layer: application teams
This is where services, jobs, databases, and tenant-specific applications are deployed.
When these layers are separated clearly, Kubernetes becomes much easier to operate.
How NebuaCloud Fits Into This Model
Once the architecture is understood, the next challenge is operating it consistently across multiple clusters and teams. That is where NebuaCloud fits naturally.
NebuaCloud is focused on Kubernetes management, GitOps workflows, multi-tenant infrastructure, and simplified deployment of production workloads. In architectural terms, that means it can help teams manage the layers around Kubernetes instead of forcing them to stitch everything together manually.
What this means in practice
NebuaCloud can help teams:
- Manage Kubernetes and k3s clusters through one operational layer
- Apply GitOps workflows to the delivery layer
- Support multi-tenant infrastructure with stronger isolation boundaries
- Surface observability signals when cluster behavior drifts or fails
- Reduce the overhead of coordinating platform services across environments
This is especially useful when the team already understands Kubernetes architecture and wants a cleaner way to run it in production.
Practical Example: From Architecture to Deployment
Imagine a team deploying a customer-facing API.
Step 1: Define the cluster foundation
They provision a Kubernetes or k3s cluster with the right node sizing, networking, storage, and control plane approach.
Step 2: Add platform services
They install ingress, cert-manager, monitoring, logging, and policy enforcement.
Step 3: Deploy workloads through GitOps
The API deployment, Service, and HorizontalPodAutoscaler are stored in Git and reconciled automatically.
Step 4: Add isolation and controls
They apply RBAC, quotas, resource requests, and network policy so one team does not interfere with another.
Step 5: Observe and operate
Metrics, logs, and alerts tell the team whether the control plane, node layer, or application layer is under stress.
That workflow reflects the architecture in real life: each layer has a job, and each layer needs its own operational discipline.
Conclusion
Kubernetes architecture is easier to understand when you stop thinking of it as a single product and start thinking of it as a set of cooperating layers.
The control plane decides, worker nodes run workloads, pods are the execution unit, and Services plus ingress make applications reachable. Around that core, teams add networking, storage, policy, observability, and GitOps to make the platform production-ready.
For teams running Kubernetes and k3s in production, NebuaCloud can provide a natural operational layer for managing clusters, GitOps workflows, multi-tenant infrastructure, and day-2 operations without making the architecture harder to reason about.
Try it with NebuaCloud -> deploy in minutes
Current Availability
NebuaCloud already provides real building blocks that map to the architecture described here, including multi-cluster inventory, kubeconfig-based cluster import, namespace and workload inspection, GitOps-backed application deployment, and resource metrics across the control plane and worker node layers.
At the same time, some of the platform-layer coordination described in this article, such as fully standardized cross-cluster policy enforcement, is still part of the platform's direction rather than a single finished feature today. This article should be read as an explanation of Kubernetes architecture in general, alongside where NebuaCloud currently fits into that picture.