Chapter 2 - Kubernetes Architecture
Introduction
Understanding the architecture of Kubernetes is crucial for effectively managing and deploying applications in a Kubernetes cluster. This chapter will explore the core components of Kubernetes, focusing on the Master and Node components that make up the control plane and the worker nodes.
Master and Node Components
Kubernetes architecture is divided into two main components: the Master components, which make up the control plane, and the Node components, which run the containerized applications. In other words, Kubernetes is made up of two types of machines: Masters and Nodes.
Control Plane
The control plane is responsible for managing the state of the Kubernetes cluster. It makes global decisions about the cluster (e.g., scheduling) and detects and responds to cluster events (e.g., starting up a new pod when a deployment’s replicas field is unsatisfied).
The Control Plane consists of the following primary components; namely:
API Server
The API Server is the front end of the Kubernetes control plane. It exposes the Kubernetes API, which is used by all components to communicate with each other. The API server processes data to and from Kubernetes API objects, such as pods, services, and deployments.
Scheduler
The Scheduler watches for newly created pods with no assigned node and selects a node for them to run on. It takes into account resource availability and constraints.
Controller Manager
The Controller Manager runs/manages Kubernetes controllers. Controllers are responsible for making sure that the desired state of the cluster matches the actual state. For example, the replication controller ensures that the specified number of pod replicas are running at any one time.
Cloud Controller Manager
The Cloud Controller Manager is a component that allows Kubernetes to interact with cloud providers, such as AWS, GCP, or Azure. It enables Kubernetes to manage cloud resources, such as nodes, routes, services, and provides cloud-specific functionality, like load balancing and storage.
etcd
etcd is a consistent and highly-available key-value store used as Kubernetes backing store for all cluster data. All Kubernetes objects are stored in etcd, and it serves as the single source of truth for the cluster state.
Node Components
Node components, also known as workers or nodes, are responsible for running applications. Each node has three primary components:
Kubelet
The Kubelet is an agent that runs on each node in the cluster. It communicates with the API Server and manages container lifecycle.
Kube-Proxy
Kube-Proxy is a network proxy that runs on each node in the cluster. It maintains network rules on nodes, allowing network communication to your pods from network sessions inside or outside of your cluster. It also provides load balancing.
Container Runtime
The container runtime is the software that is responsible for running containers. Kubernetes supports several container runtimes, including containerd, and CRI-O. The container runtime pulls images from a container registry, creates and starts containers, and handles container termination.
Conclusion
In this chapter, we explored the Master and Node Components that make up the Kubernetes architecture. The Control Plane components work together to manage the cluster, while Node Components ensure applications run smoothly. Together, they ensure that Kubernetes clusters are highly available, scalable, and maintainable.
Feel free to leave comments and share this article. Follow my blog for more insights on Kubernetes!
Subscribe to my newsletter
Read articles from Yusuf Isah directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Yusuf Isah
Yusuf Isah
Hello. I am a DevOps enthusiast from Nigeria. I am also passionate about Technical Writing. As a passionate DevOps enthusiast, I'm dedicated to bridging the gap between development and operations teams. With a strong foundation in Linux, Git, Docker, and Kubernetes, I excel in creating efficient, scalable, and reliable software delivery pipelines. With a keen eye for detail and a passion for continuous learning, I stay up-to-date with industry trends and best practices. My goal is to collaborate with like-minded professionals, share knowledge, and drive innovation in the DevOps space. I look forward to sharing with you, all I've learned so far in my DevOps journey.