Nodes are machines that host Kubernetes resources, and they run the following components:
- The Kubelet (
kubelet) is the Kubernetes agent, responsible for registering the node with the cluster, watching the API server to identify workloads (pods) scheduled to run on the node and running them, reporting state back to the control plane.
- The container runtime runs the containers in a CRI-compatible runtime.
- `kube-proxy` provides cluster networking.
Nodes can run Linux or Windows.
Virtual Kubelets allow cloud platforms to execute workloads on their existing container platforms, removing the need for a hosted Kubelet and node:
Labels can be used to model specialised hardware (e.g. high speed storage, networking or a GPU). Pods can specify node selectors to ensure that the scheduler places them on appropriate nodes.
Taints can be used to discourage assignment of pods to nodes, except where a pod has an explicit toleration.