Cluster: set of nodes that run containerized applications(a cluster is a set of nodes grouped together). This way even if one node fails you have your application still accessible from the other nodes. Also having multiple nodes helps in sharing load as well.
Who is responsible for managing the cluster? Where is the information about members of the cluster stored? How are the nodes monitored? When a node fails how do you move the workload of the failed node to another worker node? This is where the master comes in.
Node: a node is a machine, physical or virtual on which Kubernetes is installed. A node is a worker machine and that is where containers will be launched by Kubernetes. It was also known as minions in the past. But what if the node on which your application is running fails? Obviously, your application goes down/fails. So you will need to have more than one node. Note: not the minions below:
The control plane is the unified endpoint for your cluster. You interact with the control plane through Kubernetes API calls. The control plane runs the Kubernetes API server process (kube-apiserver) to handle API requests.
When you install Kubernetes on a system, you’re actually installing the following components: An API server, etcd service, a kubelet service, a container runtime, controllers and schedulers. The API server acts as the front end for kubernetes. The users, management devices, command line interfaces all talk to the API server to interact with the Kubernetes cluster.
Etcd is a distributed reliable key value store by Kubernetes to store all data to manage the cluster. When you have multiple nodes and multiple Masters in your cluster, etcd stores all that information on all the nodes in the cluster in a distributed manner. Etcd is responsible for implementing locks within the cluster to ensure that there are no conflicts between the Masters.
Scheduler: the scheduler is responsible for distributing work or containers across multiple nodes.It looks for newly created containers and assigns them to nodes.
Controller: the controllers are the brain behind orchestration. They are responsible for noticing and responding when nodes, containers or endpoints go down. They make decisions to bring up new containers in such a case.
Container Runtime: The container runtime is the underlying software that is used to run containers .i.e Docker.
Kubelet: This is an agent that runs on each node in the cluster. It makes sure that containers are running in a Pod. The kubelet takes a set of PodSpecs that are provided through various mechanisms and ensures that the containers described in those PodSpecs are running and healthy.
Kubectl command line
This is one of the command line utilities known as the kube command line tool or kube control. The kubectl tool is used to deploy and manage applications on a Kubernetes cluster to get cluster information, to get the status of other nodes in the cluster and to manage many other things.
The kubectl run command is used to deploy an application on the cluster, the kubectl cluster info command is used to view information about the cluster and the kubectl get nodes command is used to list all the nodes part of the cluster.