Sobes.tech
Junior

What is the difference between a pod and a container?

sobes.tech AI

Answer from AI

Container — an isolated process or group of processes that includes dependencies, libraries, and configuration files necessary to run an application.

A Pod in Kubernetes is the smallest deployable unit. It is an abstraction over one or more containers that run on a single node and share network space and storage resources. Containers within a single pod are always colocated, scheduled together, and share the same runtime environment.

Main differences:

  • Abstraction level: A container is an isolated environment for a single application or process. A pod is a group of one or more containers working together as a single unit.
  • Deployment: Containers are deployed inside pods in Kubernetes. You cannot deploy a single container directly in Kubernetes.
  • Network space: Containers within the same pod use the same network space (IP address and ports). Containers in different pods have separate network spaces.
  • Storage: Containers within the same pod can share volumes for data storage.
  • Lifecycle: Pods manage the lifecycle of their containers. If one container in a pod terminates, the pod can restart it or terminate itself, depending on the restart policy.
# Example of a Pod with a single container
apiVersion: v1
kind: Pod
metadata:
  name: my-single-container-pod
spec:
  containers:
  - name: my-app-container
    image: nginx:latest
    ports:
    - containerPort: 80
# Example of a Pod with two containers
apiVersion: v1
kind: Pod
metadata:
  name: my-multi-container-pod
spec:
  containers:
  - name: main-app-container
    image: my-app:latest
    ports:
    - containerPort: 8080
  - name: sidecar-logger-container
    image: fluentd:latest
    volumeMounts:
    - name: app-logs
      mountPath: /var/log/app
  volumes:
  - name: app-logs
    emptyDir: {} # Example of a shared volume
Characteristic Container Pod
Abstraction level Isolated environment for a process/application Group of one or more containers
Deployment Inside a pod Independent deployment unit in Kubernetes
Network space Own (Docker) or shared with pod (k8s) Shared among all containers in the pod
Storage Own or shared with pod via volumes Shared among containers via volumes
Management Managed by the runtime environment or pod Managed by Kubernetes Control Plane
Scaling Scales at the pod level Scales at the pod level