Control Plane β’ Worker Nodes β’ API Server β’ etcd β’ Scheduler β’ Controllers β’ kubelet β’ Container Runtime
This is where I document Kubernetes as I learn and work with it in production β starting with architecture, since everything else builds on top of it.
Every time I hit a real issue on a cluster, I come back and add what I learned. The repository grows the same way production experience does: one incident, one concept, one fix at a time.
Kubernetes Architecture
β
Work With Real Clusters
β
Hit a Problem
β
Understand It
β
Document It Here
β
Repository Grows
- π Learn Kubernetes deeply β from core concepts to production operations
- π§ Build a long-term reference β stop re-learning the same concepts from scratch
- πΌ Demonstrate production skills β architecture, AKS, scaling, networking, troubleshooting, and CI/CD
- ποΈ Kubernetes architecture β control plane, worker nodes, and how they communicate
- βοΈ AKS in production β node pools, scaling, and cluster operations on Azure
- π Troubleshooting β root-causing failed deployments, crash loops, and resource issues
- π CI/CD β how code goes from a Git push to a running Pod
This is the first piece: Kubernetes Architecture. It's the foundation every other topic here β networking, scaling, security, AKS β connects back to.
Kubernetes is a container orchestration platform used to deploy, manage, scale, and maintain containerized applications across a cluster of machines.
Instead of manually managing containers on individual servers, Kubernetes continuously reconciles the application toward a desired state defined by the user.
Application
β
Container
β
Pod
β
Worker Node
β
Kubernetes Cluster
The architecture is mainly divided into two parts:
βΈοΈ Kubernetes Cluster
β
βββββββββββββββ΄ββββββββββββββ
β β
βΌ βΌ
π§ Control Plane π₯οΈ Worker Nodes
Manages Cluster Runs Workloads
A Kubernetes Cluster is a group of machines working together to run and manage containerized applications.
The cluster contains:
- Control Plane β responsible for managing the cluster.
- Worker Nodes β responsible for running application workloads.
Worker Nodes can be organized into Node Pools, especially in managed Kubernetes platforms such as AKS.
Kubernetes Cluster
β
βββ Control Plane
β
βββ Node Pool
β
βββ Worker Node
β βββ Pods
β
βββ Worker Node
β βββ Pods
β
βββ Worker Node
βββ Pods
The Control Plane is the management layer of Kubernetes.
It receives instructions, stores the cluster state, decides where workloads should run, and continuously works to maintain the desired state.
Control Plane
β
βββ kube-apiserver
βββ etcd
βββ kube-scheduler
βββ kube-controller-manager
βββ cloud-controller-manager
Think: The Control Plane is the brain of the Kubernetes cluster.
The API Server is the central entry point into Kubernetes.
When we use commands such as:
kubectl get pods
kubectl apply -f deployment.yaml
kubectl delete pod <pod-name>the requests are handled through the Kubernetes API.
Developer
β
kubectl
β
API Server
β
Kubernetes Cluster
The API Server also acts as the main communication point between Kubernetes components.
Think: API Server = Front door and communication layer of Kubernetes
etcd is the distributed key-value store used by Kubernetes to persist cluster state.
It stores information about Kubernetes objects and their configuration β Pods, Deployments, Services, Nodes, Namespaces, Secrets, and ConfigMaps.
etcd
β
ββββββββββββββΌβββββββββββββ
βΌ βΌ βΌ
Cluster State Objects Configuration
The API Server communicates with etcd to store and retrieve cluster information.
Think: etcd = Source of truth for Kubernetes cluster state
The Scheduler decides which Worker Node should run a newly created Pod.
New Pod
β
Scheduler
β
Evaluate Nodes
β
Select Suitable Node
The Scheduler considers factors such as available resources and scheduling requirements. It does not run the container itself β it only determines where the Pod should run.
Think: Scheduler = Decides WHERE the Pod runs
Kubernetes uses controllers to continuously compare the desired state with the actual state of the cluster.
Desired State
β
Controller
β
Actual State
For example:
Desired: 2 Pods
Actual: 1 Pod
β
Controller detects difference
β
Replacement Pod created
β
Actual: 2 Pods
This continuous reconciliation is one of the fundamental ideas behind Kubernetes.
Think: Controllers = Continuously work toward the desired state
The Cloud Controller Manager provides integration between Kubernetes and the underlying cloud provider.
Kubernetes
β
Cloud Controller Manager
β
Azure
This becomes particularly important when working with Azure Kubernetes Service (AKS).
Worker Nodes are the machines where application workloads actually run.
Worker Node
β
βββ kubelet
βββ Container Runtime
βββ Networking Components
βββ Pods
A Kubernetes cluster normally has multiple Worker Nodes so workloads can be distributed across the cluster.
Worker Nodes
β
βββββββββββββββΌββββββββββββββ
βΌ βΌ βΌ
Node 1 Node 2 Node 3
β β β
Pods Pods Pods
kubelet is the Kubernetes agent running on every Worker Node.
It communicates with the Control Plane and makes sure that the workloads assigned to its Node are running correctly.
Control Plane
β
API Server
β
kubelet
β
Container Runtime
β
Pod
The kubelet does not decide which Node should receive a Pod β that decision is made by the Scheduler.
Think: kubelet = Agent responsible for managing workloads on a Node
The Container Runtime is responsible for actually running containers on the Worker Node. A common runtime used by Kubernetes is containerd.
kubelet
β
Container Runtime
β
Container
Therefore:
Scheduler β Decides WHERE
kubelet β Manages the workload
Container Runtime β Runs the container
A Pod is the smallest deployable unit in Kubernetes. It contains one or more containers that share the same network and storage context.
Worker Node
β
βββ Pod
β βββ Container
β
βββ Pod
β βββ Container
β
βββ Pod
βββ Container
Kubernetes schedules Pods, not individual containers, onto Worker Nodes.
When we deploy an application, the major flow can be understood as:
Developer
β
kubectl / API Client
β
API Server
β
etcd
β
Controllers
β
Scheduler
β
Selected Worker Node
β
kubelet
β
Container Runtime
β
Pod
β
Container
β
Application
Each component has a specific responsibility in this process β no single piece does everything.
βΈοΈ KUBERNETES CLUSTER
β
βββββββββββββββββ΄ββββββββββββββββ
β β
βΌ βΌ
π§ CONTROL PLANE π₯οΈ WORKER NODES
β β
ββββββββββββΌβββββββββββ βββββββββΌβββββββββ
β β β β β β
API etcd Scheduler kubelet Runtime Network
Server
β
βΌ
Controllers
β
ββββββββββββββββββββββββββββββββ
βΌ
Pod
β
βΌ
Container
β
βΌ
Application
| Component | Responsibility |
|---|---|
| Control Plane | Manages the Kubernetes cluster |
| API Server | Handles Kubernetes API requests and communication |
| etcd | Stores cluster state |
| Scheduler | Decides where Pods should run |
| Controllers | Maintain the desired state |
| Cloud Controller | Integrates Kubernetes with cloud infrastructure |
| Worker Node | Provides compute for workloads |
| kubelet | Manages Pods on the Node |
| Container Runtime | Runs containers |
| Pod | Smallest deployable workload unit |
Cloud / Infrastructure
β
Kubernetes Cluster
β
Node Pool
β
Worker Node
β
Namespace
β
Workload
β
Pod
β
Container
For AKS:
Azure Resource Group
β
AKS Cluster
β
Node Pool
β
Worker Nodes
β
Pods
β
Containers
Each layer has a different responsibility and should not be treated as the same thing.
Kubernetes is built around the concept of desired state.
Desired State:
replicas: 2Kubernetes continuously works to make the actual cluster state match that requirement.
Desired State
β
βΌ
Kubernetes
β
βΌ
Actual State
If one Pod fails:
Desired = 2
Actual = 1
β
Kubernetes detects the difference
β
Works to restore the desired state
β
Desired = 2
Actual = 2
This reconciliation model is fundamental to understanding Deployments, self-healing, scaling, and most other Kubernetes behavior.
API Server β Communication
etcd β Cluster State
Controllers β Desired State
Scheduler β Pod Placement
kubelet β Node Workload Management
Container Runtime β Container Execution
Pod β Application Workload
This repository starts with Kubernetes Architecture as the foundation. The following topics will be added progressively as separate sections, each building on the concepts covered here.
βΈοΈ Kubernetes Architecture β
(this section)
β
βββ Pods & Workloads
βββ Deployments & ReplicaSets
βββ Services & Ingress
βββ Networking & DNS
βββ Scheduling, Affinity & Topology
βββ Scaling (HPA / VPA / Cluster Autoscaler)
βββ Storage (PV / PVC / StorageClass)
βββ Security (RBAC / Secrets / Workload Identity)
βββ Health Probes
βββ Observability (Logs / Metrics / Events)
βββ Troubleshooting Playbooks
βββ Azure Kubernetes Service (AKS)
βββ CI/CD (Azure DevOps β ACR β AKS)
βββ Production Incidents & Lessons Learned
Every topic will follow the same format used here β short explanations, mental models, and diagrams β so the repository stays consistent as it grows.
The goal of this repository is not to memorize Kubernetes commands.
The goal is to understand how Kubernetes works internally, apply that knowledge to real environments, troubleshoot problems, and document the solutions for future reference.
Understand Architecture
β
Understand Components
β
Understand Workloads
β
Understand Communication
β
Practice with Kubernetes
β
Troubleshoot Real Problems
β
Apply in AKS
β
Production Kubernetes
βΈοΈ Learn β Understand β Practice β Troubleshoot β Document β Improve