Kubernetes Architecture Explained
- Vipul Kumar
- System design , Microservices , Kubernetes , Scalability
- November 25, 2024
Table of Contents
🔧 Control Plane — The control plane manages the overall state of the Kubernetes cluster. It includes components like kube-apiserver, etcd, kube-scheduler, and kube-controller-manager, which handle tasks such as API management, data storage, scheduling, and running controller processes.
🖥️ Worker Nodes — These nodes run the application workloads. Each node hosts components like kubelet, which ensures containers are running, and kube-proxy, which manages network rules for service communication.
📦 Container Runtime — This is the software responsible for running containers on each node. Kubernetes supports various container runtimes such as containerd and CRI-O.
🌐 Networking — Kubernetes uses kube-proxy to maintain network rules and enable communication between services and pods. Some network plugins can replace kube-proxy with their own implementations.
🔄 Addons — Kubernetes can be extended with addons like DNS for service discovery, a web UI for management, and monitoring tools for resource usage and logging.
Control Plane Components
🖥️ kube-apiserver — Acts as the front end for the Kubernetes control plane, handling all REST requests for modifications to the cluster.
🔑 etcd — A consistent and highly-available key-value store used to store all cluster data, ensuring data consistency and availability.
📅 kube-scheduler — Responsible for assigning newly created pods to nodes based on resource requirements and constraints.
🔄 kube-controller-manager — Runs various controllers that regulate the state of the cluster, such as node and job controllers.
☁️ cloud-controller-manager — Manages cloud-specific control logic, integrating Kubernetes with cloud provider APIs for tasks like load balancing.
Node Components
🔧 kubelet — An agent that ensures containers are running in a pod, maintaining the desired state of the application.
🔗 kube-proxy — Implements part of the Kubernetes Service concept by maintaining network rules for communication between pods.
🛠️ Container Runtime — Manages the execution and lifecycle of containers, supporting various implementations like containerd and CRI-O.
📡 Networking — Each node requires a network proxy to ensure service API behaviors are available, with some plugins offering their own solutions.
🔍 Monitoring — Nodes can be equipped with monitoring tools to track resource usage and ensure efficient operation.
Kubernetes Addons
🔍 DNS — Provides cluster-wide DNS resolution, essential for service discovery within the cluster.
🖥️ Web UI (Dashboard) — A web-based interface for managing and troubleshooting applications and the cluster itself.
📊 Container Resource Monitoring — Collects and stores metrics about container performance, offering insights into resource usage.
📝 Cluster-level Logging — Captures and stores logs from containers, aiding in debugging and monitoring.
🔧 Flexibility — Kubernetes allows for the deployment of various addons to extend functionality, adapting to different use cases.
Follow me on: LinkedIn | WhatsApp | Medium | Dev.to | Github