Kubernetes Pods vs Containers vs Nodes
Kubernetes is an open source container orchestration system for automated deployment, scaling and managing your applications
Containers
Containers are lowest building block of the Kubernetes system. Containers are an encapsulation over application images. Application code is packaged into images that are run inside containers. Containers decouple application from the actual hardware. Containers provide logical cpu, resources, memory to your application irrespective of the actual hardware.
Pods
Pods are one level up in Kubernetes hierarchy. Pods contain one or more containers. Pods are lowest deployment unit in Kubernetes. Containers within a pod which need to run together are generally kept together. All containers in a single pod share the same network and ip. Containers within a pod do not share the file system or memory so applications cannot interfere with each other unless required to. If you want them sharing same file system then consider using mounted file system. Scaling in Kubernetes is always done in terms of pods. You cannot just scale containers rather you always scale pods. Pods are increased or decreased as per demand.
For Example : Consider running a mongodb database in one pod, now you want to export the metrics of the db to a remote server. So you need another metrics exporter to run, collect metrics and export them. It would make sense to run these two in the same pod as containers can communicate very easily inside the same pod either using local host calls or by using shared volumes. Since these two processes are coupled together and one would need the other every time, we can consider putting them in one pod.
Nodes
Nodes are the lowest hardware level unit in Kubernetes as opposed to pods which are more or less like logical entities. Nodes can be bare metal machine or VMs. Node can contain one or more pods. Kubernetes schedules pods in and out of nodes. Nodes apart from running user worker pods, run some more applications like Kubelet, Container runtime like docker, kubeproxy etc. A collection of nodes can be considered a Kubernetes cluster in very basic terms.
Links : https://medium.com/@anukriti67/kubernetes-control-plane-components-f2d28584cb46
In the above post, I discuss in detail about the backbone of Kubernetes that is its Control plane.