A Pod is one or more containers that share an IP, ports and volumes.
Kubernetes schedules Pods, never bare containers. The containers in a Pod always land on the same node and talk over localhost.
Why not just a container?
Some helpers must share the network and files of the main process: a log shipper, a mesh proxy, a config reloader. The Pod is the unit that groups them.
Pods are disposable
A Pod is never repaired. If it dies, a controller creates a new one with a new name and a new IP.
Rule of thumb
One Pod, one main process. Add a second container only when it must share the first one's lifecycle.
Think of a Pod as one logical host for tightly coupled containers, and as cattle: replaceable, never nursed back to health.