Worker Nodes === What is a Node? --- The machine (virtual or physical) that pods (containers) run on. These containers compose one instance of an application. Scaling horizontally is as easy as adding more nodes. Both the master component (1 per cluster) and the worker components (1+ per cluster) are nodes. The node is the blueprint from which these components are created. #### Straight from the [Kubernetes documentation](https://kubernetes.io/docs/concepts/architecture/) on nodes: > A node is a worker machine in Kubernetes... > A node may be a VM or physical machine... > Each node contains the services necessary to run pods (containers)... > Each node is managed by the master components... > The services on a node include the container runtime, kubelet and kube-proxy. #### The important pieces to take away here are: * A node is a worker. * A node can be a virtual or physical resource. * Each and every node runs pod(s) and idenpendently contains all of the services necessary to run these pod(s). * Nodes are managed by the master component - the Master Node. * Nodes contain the container runtime, kubelet, and kube-proxy. [Node Components](https://kubernetes.io/docs/concepts/overview/components/#node-components) --- **[Container Runtime](https://kubernetes.io/docs/setup/production-environment/container-runtimes/):** Software used to run containers. Examples include Docker, rkt, cri-o, and many, many more. **[kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/):** Registers the node with the master's `apiserver`, giving Kubernetes (and therefore, you) awareness of the presence of the node and its state. The `kubelet` utilizes a PodSpec (YAML or JSON that defines the desired pod state) to manage the pods that live on a node. **[kube-proxy](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-proxy/):** Provides a node with networking services, allowing network communication to your **Pods** from network sessions inside or outside of your cluster. The traffic is not intended for the node, but the Pods within a node. The `kube-proxy` allows the node to manage and route that communication to and from that nodes Pods. To get a node's status, run:`kubectl describe node <insert-node-name-here>` Resources for This Chapter --- [Kubernetes Architecture: Node](https://kubernetes.io/docs/concepts/architecture/) [Node Components](https://kubernetes.io/docs/concepts/overview/components/#node-components) [Container Runtime](https://kubernetes.io/docs/setup/production-environment/container-runtimes/) [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/) [kube-proxy](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-proxy/)