The smallest compute unit in Kubernetes is the pod, not the container. A pod can contain one or more related containers. Pods in a cluster can communicate with each other over the virtual network, even when they belong to different applications. Every pod has an IP address assigned to it. All the containers running in the pod share the same address.

The pod itself is an abstract concept - a disposable resource whose lifetime is controlled by another resource. Kubernetes doesn’t run pods itself; instead it passes the task to the container runtime (Docker, rkt or containerd) through the standard Container Runtime Interface (CRI) to run the containers defined by the pod object. In day-to-day use, you would never run a pod directly; you’d create a controller object to manage the pod for you.