Why is POD the smallest deployable unit in Kubernetes and not containers??

  • Kubernetes does not work directly with containers, it uses POD as the smallest deployable unit.
  • A container contains all our application code and its dependencies packaged as a single unit, but in order for Kubernetes to run and manage these containers, it needs additional features, for example restart policy which defines what to do with a container when it terminates, or liveness probe which indicates whether a container is running or not.
  • A POD is a wrapper on top of the container, which provides these additional features for containers to be managed by Kubernetes system.
  • Instead of adding these features of liveness, restart policy etc. to containers, Kubernetes architects created this wrapper around containers called POD which provides these functionalities .
  • Pod gives the exact higher-level abstraction you need by wrapping one or more containers into one object.
  • A pod can contain multiple containers and Kubernetes guarantees them to be co-located on the host machine and can share resources.
  • A pod can define one or more volumes, such as a local disk or network disk, and expose them to the containers in the pod, which allows different containers to share storage space.
  • Grouping containers in this way allows them to communicate between each other as if they shared the same physical hardware, while still remaining isolated to some degree.
  • This organization of containers into pods is the basis for one of Kubernetes well-known feature: replication.
  • Pods enable you to manage several tightly coupled application containers as a single unit.

Adding a layer on top of containers, help to manage the containers efficiently by Kubernetes, which is why PODs are the smallest deployable unit in Kubernetes and not containers.

Leave a Reply