Kubernetes Architecture and Components

At its core, Kubernetes consists of several components that work together to ensure the efficient and reliable operation of your applications. Understanding these components, their roles and how they fit together is the first step towards mastering kubernetes.
kubernetes components

On this page

Kubernetes is an open-source container orchestration platform that automates the deployment, scaling, and management of containerized applications. At its core, Kubernetes consists of several components that work together to ensure the efficient and reliable operation of your applications. Understanding these components, their roles and how they fit together is the first step towards mastering kubernetes.

Kubernetes components

Kubernetes components are the essential building blocks that make up the Kubernetes architecture. They are responsible for various tasks, such as managing the cluster state, scheduling and orchestrating containers, exposing services, and providing additional functionality. Kubernetes components are grouped into three main categories: control plane components, nodes, and optional addons or extensions. Later, will explain each specific component that falls under these categories later. But for now, Let's take a closer look at each of these categories.

Kubernetes Control Plane

The Kubernetes control plane is the brain of the Kubernetes cluster, responsible for making global decisions and coordinating the activities of the worker nodes. It consists of several components that collectively manage the state of the cluster and make decisions about scheduling and deployment.

Kubernetes Nodes

Nodes are the physical or virtual machines that make up the Kubernetes cluster and run the pods. There are two types of nodes in a Kubernetes cluster:

  • master nodes - host the control plane components and are responsible for managing the overall state of the cluster.
  • worker nodes - workhorses of the cluster, that execute the actual workloads by running the pods assigned to them.

Kubernetes addons

Kubernetes addons and extensions are additional or optional components that provide extra functionality and enhance the capabilities of the Kubernetes cluster. These include (among other things) monitoring, logging and networking.

The following infographic provides a visual overview of the Kubernetes architecture and how its components fit together.

kubernetes architecture

A Detailed Look at Each Kubernetes Component

For you gain a deeper understanding of Kubernetes, let’s now explore the roles and responsibilities of each component in detail. In this section, will dive into the core components of the control plane, nodes, and addons/extensions.

etcd

etcd is a distributed key-value store that acts as the single source of truth for the Kubernetes cluster. It stores the entire configuration data and state of the cluster, including information about nodes, pods, services, and other Kubernetes objects. The control plane components interact with etcd to read and update the cluster state.

kube-api-server

The Kubernetes API server is the front-end component that exposes the Kubernetes API and serves as the primary entry point for all cluster operations. It handles and validates all API requests, ensuring that the desired state of the cluster is maintained. All other components, including the control plane components and kubectl (the command-line interface), communicate with the API server to perform operations on the cluster.

kube-controller-manager

The kube-controller-manager is a control loop that watches the state of the cluster and ensures that the desired state matches the actual state. It consists of several controllers, each responsible for managing a specific aspect of the cluster, such as replicating Pods, handling node failures, and managing Service endpoints.

cloud-controller-manager

The cloud controller manager is an optional component that integrates Kubernetes with cloud provider APIs. It allows Kubernetes to interact with cloud services, such as load balancers, storage volumes, and networking components, in a cloud-agnostic manner.

Pods

Pods are the smallest deployable units in Kubernetes and represent a group of one or more tightly coupled containers that share resources and a network namespace. Pods are scheduled, defined via yaml and managed by the control plane components and run on the worker nodes. They encapsulate the application containers, storage resources, and unique IP addresses, providing a logical unit for deployment and scaling.

Nodes

Nodes are the physical or virtual machines that make up the Kubernetes cluster and run the pods. Each node runs a set of components, including the container runtime (e.g., Docker or containerd), operating system (Linux or Windows), kubelet, and kube-proxy.

The kubelet is an agent that runs on each node and communicates with the control plane to manage the lifecycle of pods running on the node. It ensures that the desired state of the pods matches the actual state by starting, stopping, and monitoring containers.

The kube-proxy is a network proxy that runs on each Node and is responsible for enabling network communication between Pods and external services. It manages network rules and forwards traffic accordingly.

💡
Importantly, master nodes must run on a Linux-based operating system to ensure compatibility with the Kubernetes control plane components. On the other hand, worker nodes offer more flexibility in terms of the underlying operating system. While Linux is the most common choice for worker nodes, Kubernetes also supports Windows worker nodes, allowing for a heterogeneous cluster environment where both Linux and Windows-based applications can coexist.

Kubernetes Web Admin Dashboard

The Kubernetes Web UI (Dashboard) is a web-based user interface that provides a visual representation of the cluster state and allows administrators to manage and monitor the cluster resources. It offers a comprehensive view of the deployed applications, cluster events, and resource utilization, enabling users to perform various tasks, such as deploying applications, scaling workloads, and troubleshooting issues.

Kubernetes DNS

The Kubernetes DNS addon provides a DNS service for the cluster, enabling applications running within the cluster to discover and communicate with each other using domain names instead of IP addresses. This simplifies service discovery and facilitates the development of loosely coupled and scalable applications.

CLI

The Kubernetes command-line interface (CLI), known as kubectl, is a powerful tool that allows users to interact with the Kubernetes API and manage the cluster from the terminal. It provides a comprehensive set of commands for creating, updating, and deleting Kubernetes resources, such as pods, services, and deployments, as well as for inspecting the cluster state and troubleshooting issues.

Summing up

To sum up, Kubernetes is an open-source container orchestration platform that consists of control plane components, nodes, and optional addons. These components work together to automate the deployment, scaling, and management of containerized applications.

Kubernetes provides a powerful and flexible platform for managing containerized applications in a cloud-native environment. By abstracting away the underlying infrastructure, Kubernetes allows developers to focus on building and deploying their applications without having to worry about the complexities of managing the underlying infrastructure.

With its robust set of features, including automatic scaling, self-healing, and rolling updates, Kubernetes enables organizations to run their applications more efficiently and reliably. Additionally, Kubernetes is highly extensible, allowing users to customize and extend its functionality through the use of plugins and custom resources.

Overall, Kubernetes has become the de facto standard for container orchestration in the industry, with a large and active community of developers and users contributing to its ongoing development and improvement. As organizations continue to adopt cloud-native technologies, Kubernetes will play a crucial role in enabling them to build, deploy, and manage their applications at scale.

Subscribe to sysxplore newsletter and stay updated.

Don't miss anything. Get all the latest posts delivered straight to your inbox. It's free!
Great! Check your inbox and click the link to confirm your subscription.
Error! Please enter a valid email address!