Skip to main content

Pod

A pod is the smallest deployable Kubernetes unit, grouping one or more containers that share networking, storage, and lifecycle.

A pod is the smallest deployable unit in Kubernetes. It wraps one or more containers that are scheduled together on the same node and share certain resources. Most pods run a single application container, sometimes accompanied by helper containers.

How It Works

Containers in a pod share a network namespace, meaning they have the same IP address and port space and can reach each other over localhost. They can also share storage volumes and are co-located and co-scheduled on one node. The pod is the unit Kubernetes schedules, restarts, and tears down as a whole.

A secondary container in a pod is often called a sidecar; it augments the main container with capabilities like logging, proxying, or configuration reloading. Init containers run to completion before the main containers start, handling setup tasks.

Pods are generally ephemeral. They are not repaired in place; instead, controllers replace failed pods with new ones, each getting a fresh IP. Higher-level controllers manage their lifecycle.

Why It Matters

The pod abstraction lets tightly coupled processes share resources while keeping the container as the unit of packaging. Because pods are disposable, applications must tolerate restarts and rescheduling, which encourages stateless, resilient design.

Directly creating bare pods is rare in production. Instead, controllers such as Deployment, StatefulSet, and DaemonSet create and manage pods to provide scaling, rolling updates, and self-healing.

Related Terms

A pod runs one or more containers and is typically managed by a Deployment through a ReplicaSet, while a Service provides stable access to a set of pods.