Kubernetes allows a developer to automate software deployment. It lets the developer curate, position, control, and gauge application containers. This deployment could be across a single host cluster or more than one. In other words, it is a container orchestration system.
Given below are the important components of Kubernetes -
- Kubernetes data plane – It helps to run the workloads that have been kept in containers.
- Kubernetes control plane – The data plane helps in the management of all the Kubernetes clusters and their workloads.
- Pods – Small functional units in Kubernetes for managing micro-service workloads.
- Persistent storage – Local storage is temporary in Kubernetes. It provides persistent space for storage even after the lifespan of a pod.
Kubernetes Architecture Overview
Kubernetes Architecture consists of the two main vital components that are given below –
- The control plane helps to host the components which are used for managing the Kubernetes cluster.
- Worker nodes are online intangible machines or virtual machines (VMs). They could also be tangible physical machines. These worker nodes are used to host pods on which multiple are running.
Kubernetes Core Components
Control Plane
The Control plane in each Kubernetes cluster acts as a central nerve and includes components that have the capability of –
- Controlling the cluster
- The state data of the cluster
- The configuration of the cluster
Now, a Kubernetes control plane ensures that a Kubernetes cluster achieves the desired state, which is defined and declared by users. The cluster nodes and the control place use the kubelet for interacting on every node where an agent is deployed.
The control plane is further divided into components
Kube-apiserver
The apiserver offers an API, which functions as the front-end and handles all the inner and outer requests, analyses the validity of the request, and then processes it. The kubectl command-CLI or kubeadm can be used to access the API Server through REST calls.
Kube-scheduler
The scheduler helps in planning pods on various nodes that are specified as per the workflows that have been automated.
Kube-controller-manager
The Kube-controller manager is a control loop for supervising and controlling a Kubernetes cluster state. After receiving this information, the manager sends instructions for reaching the desired state of the cluster.
ETCD
ETCD is a key-value database that contains fault-tolerant and distributed data on the cluster state and pattern of the information supposed to be sent.
Cloud-controller-manager
The cloud-controller-manager helps in embedding cloud-specific control logic for connecting a Kubernetes cluster with the API of a cloud provider. In addition, this cloud controller manager runs controllers relevant to the provider of the cloud.
Worker nodes
The worker nodes are those components of the Kubernetes clusters that help execute the containers and apps loaded and deployed on these clusters.
Nodes
Nodes are physical or online machines used to run pods as part of a Kubernetes cluster. A Kubernetes cluster can be scaled up to a limit of 5000 nodes, and more nodes can be added for further scaling.
Pods
A pod is a single instance of a deployed app. It is regarded as the minimum unit in the Kubernetes object model, which could have tightly coupled configurations and containers. Also, they can be connected to the persistent storage by using the component called Kubernetes PV or Persistent Volumes.
Container Runtime Engine
Every node has a container runtime engine that runs containers. One popular example of such a runtime engine is Docker.
Kubelet
Apart from a control runtime engine, every node also has a component called a kubelet. It is a small app that can be used to connect to the Kubernetes control plane. In addition, it manages a pod’s life cycle.
Kube-proxy
All the nodes have a component called the Kube-proxy. It is a network proxy that is responsible for running the Kubernetes networking services. Also, it manages all the communication in the packet filtering layer of the system's OS.
Container Networking
Container networking facilitates the communication of containers with hosts or intercommunication with other containers. The CNI plugin can be used by passing the kubelet network plugin in the CLI.
To sum up, hopefully, you now have a clear idea of the Kubernetes architecture and the 11 core components of this architecture. But, if you need more information, you can always visit the ‘blog’ section of E2E Networks to learn more about it.
Reference Links
https://www.appvia.io/blog/components-of-kubernetes-architecture
https://spot.io/resources/kubernetes-architecture-11-core-components-explained/