Kubernetes is an open-source container orchestration tool. On the base, it manages containers. It means Kubernetes helps you to manage applications that are made up of hundreds or thousands of containers and it helps you manage them in different environments.
When you deploy Kubernetes, you get a cluster. A Kubernetes cluster consists of a set of worker machines, called nodes, that run containerized applications.
What is Node?
Generally Node is a Virtual Machine.
Master node is also known as Control Plane. It is responsible for managing the whole cluster. We can call it as a backbone of a cluster.
kubectl: It is generally a CLI (Command-line interface) tool which is used to interact with the API of the master node.
API-Server: We can call API server as a Gatekeeper for the entire cluster. All the CRUD (create, read, update and delete) operations for servers go through API.
Controller-Manager: It keeps an overview of what's happening in the cluster like where something is to be repaired or a container died and it needs to be restarted etc.
Scheduler: This is basically responsible for scheduling containers on nodes based on there workloads and the available server resources on each node.
Scheduler is an intelligent process that decides on which worker node should the container should be scheduled.
etcd: It holds at anytime the current state of the Kubernetes cluster. Its like a Kubernetes backing store for all the cluster data.
This is it for Master Node.
It is basically any VM or Physical server where containers are deployed.
Kubelet: It is an agent that runs on each worker node in the cluster. Its main aim is to ensure that the containers described in those Pod specification are running and healthy.
Kube-Proxy: It runs on each node in the cluster. It is responsible for maintaining the entire network configuration. Also exposes services to the outside world.
Pod: It's basically an abstraction over container. Pod is the smallest unit in Kubernetes. Each pod consists of one or more containers.
Containers: Containers are Runtime environments for containerized applications.
I hope you found this article useful. Reach out to me on Twitter to share your feedback or for any queries. I'd be more than happy to help.
Thanks for reading, See you next time.