Kubernetes Cluster Architecture


Kubernetes (K8s) is an open-source platform designed to automate the deployment, scaling, and management of containerized applications. At the heart of Kubernetes is the cluster, which is made up of several components working together to keep applications running smoothly.
In this post, let’s break down the Kubernetes Cluster Architecture, focusing on the roles of the Control Plane and the Worker Nodes.
What is a Kubernetes Cluster?
A Kubernetes cluster is a set of machines (physical or virtual) that work together to run containerized applications. It consists of two main parts:
Control Plane – The brain of the cluster, managing the overall system.
Worker Nodes – The body of the cluster, running the actual applications.
1. Control Plane Components
The Control Plane is responsible for maintaining the desired state of your applications. It decides what to run, where to run it, and how to keep it running.
Here are the main components:
API Server (kube-apiserver
)
Acts as the entry point for all control plane commands.
Handles RESTful requests (e.g.,
kubectl
) and communicates with all components.Think of it as the frontend of the cluster.
Scheduler (kube-scheduler
)
Decides which node will run a new pod.
It considers resources, policies, and node health to make smart decisions.
Controller Manager (kube-controller-manager
)
Runs background processes that monitor the cluster state.
Ensures the desired state (defined in YAML files) is always met (e.g., if a pod crashes, it starts a new one).
etcd
A lightweight, distributed key-value database.
Stores all cluster data (e.g., configuration, status).
It’s like the memory of Kubernetes.
2. Worker Node Components
Worker nodes actually run your applications inside containers. Each worker node has a few important components:
kubelet
The agent on each node.
Communicates with the API server to receive instructions (e.g., run a pod).
Monitors the health of the containers.
kube-proxy
Handles networking for the pods.
Forwards requests to the correct pod or service.
Maintains load balancing and service discovery within the cluster.
Container Runtime (e.g., containerd, Docker)
The software responsible for running the containers.
Pulls container images and starts them as needed.
Control Plane:
├── kube-apiserver
├── kube-scheduler
├── kube-controller-manager
└── etcd
Worker Node (repeatable for multiple nodes):
├── kubelet
├── kube-proxy
└── container runtime (e.g., containerd)
NOTE: Pod networking should be configured and there are two important rules that needs to be met
All node should communicate with all containers and vice versa without NAT in a cluster
All pods/containers should be able to communicate with each other without NAT in a cluster
Subscribe to my newsletter
Read articles from Rohit directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Rohit
Rohit
I'm a results-driven professional skilled in both DevOps and Web Development. Here's a snapshot of what I bring to the table: 💻 DevOps Expertise: AWS Certified Solutions Architect Associate: Proficient in deploying and managing applications in the cloud. Automation Enthusiast: Leveraging Python for task automation, enhancing development workflows. 🔧 Tools & Technologies: Ansible, Terraform, Docker, Prometheus, Kubernetes, Linux, Git, Github Actions, EC2, S3, VPC, R53 and other AWS services. 🌐 Web Development: Proficient in HTML, CSS, JavaScript, React, Redux-toolkit, Node.js, Express.js and Tailwind CSS. Specialized in building high-performance websites with Gatsby.js. Let's connect to discuss how my DevOps skills and frontend expertise can contribute to your projects or team. Open to collaboration and always eager to learn! Aside from my work, I've also contributed to open-source projects, like adding a feature for Focalboard Mattermost.