Kubernetes is an open-source orchestration engine for automating deployments, scaling, managing, and providing the infrastructure to host containerized applications. At the infrastructure level, a Kubernetes cluster is comprised of a set of physical or virtual machines, each acting in a specific role.
Master components are responsible for managing the Kubernetes cluster. They manage the life cycle of pods, the base unit of a deployment within a Kubernetes cluster. Master servers run the following components:
kube-apiserver – the main component, exposing APIs for the other master components.
etcd – distributed key/value store which Kubernetes uses for persistent storage of all cluster information.
kube-scheduler – uses information in the pod spec to decide on which node to run a pod.
kube-controller-manager – responsible for node management (detecting if a node fails), pod replication, and endpoint creation.
cloud-controller-manager – daemon acting like an abstraction layer between the APIs and the different cloud providers’ tools (storage volumes, load balancers etc.)
Node components are worker machines in Kubernetes and are managed by the Master. A node may be a virtual machine (VM) or physical machine, and Kubernetes runs equally well on both types of systems. Each node contains the necessary components to run pods:
kubelet – watches the API server for pods on that node and makes sure they are running
cAdvisor – collects metrics about pods running on that particular node
kube-proxy – watches the API server for pods/services changes in order to maintain the network up to date
container runtime – responsible for managing container images and running containers on that node
Reference:
https://www.suse.com/c/rancher_blog/understanding-the-kubernetes-node/#:~:text=kubelet%20%E2%80%93%20watches%20the%20API%20server,the%20network%20up%20to%20date
Read more ...