A Kubernetes node is an individual server in a Kubernetes cluster. Each node runs a number of Kubernetes components and hosts a number of containers.
The nodes communicate with each other and with the Kubernetes controller to schedule and manage containers on the cluster. The Kubernetes controller ensures that the applications running on the cluster are always running as desired. The nodes are responsible for running the containers and communicating with the controller about the status of the containers and the applications running on them.
Node components
Node components are run on nodes and maintain the pods and the Kubernetes runtime environment.
Kubelet
An agent that runs on each node in the Kubernetes cluster. Kubelet ensures that containers in a pod are executed. Kubelet takes a set of PodSpecs and ensures that the containers described in the PodSpecs are executed correctly. Kubelet does not manage containers that are not created by Kubernetes.
Kube-proxy
Kube-proxy is a network proxy that is also active on each node in the cluster and manages network rules on nodes. These network rules ensure that network communication to your pods is possible from networks both within and outside your Kubernetes cluster.
Container runtime
The container runtime simply ensures the execution of containers. Kubernetes supports container runtimes such as Containerd, CRI-O, and other implementations of the Kubernetes CRI (Container Runtime Interface).