Gymterview
junior

Что такое Pod?

Pod — минимальная единица развёртывания в Kubernetes. Представляет собой группу из одного или нескольких контейнеров, которые разделяют общее сетевое пространство (один IP-адрес), могут разделять общие тома (volumes) и управляются как единое целое.

Аналогия из жизни: Pod — это квартира в доме. В ней могут жить несколько человек (контейнеров), у них общий адрес (IP) и общая кухня (volumes), но каждый занимается своим делом.

Ключевые особенности

  • Pod получает один IP-адрес внутри кластера. Все контейнеры внутри Pod’а общаются друг с другом через localhost
  • Pod — эфемерная сущность. Он может быть уничтожен и пересоздан в любой момент. Нельзя полагаться на постоянный IP-адрес Pod’а
  • Обычно в Pod’е запускается один основной контейнер. Несколько контейнеров используются для вспомогательных задач (sidecar pattern)

Пример манифеста Pod

Пример
apiVersion: v1
kind: Pod
metadata:
  name: my-java-app
  labels:
    app: my-java-app
spec:
  containers:
    - name: app
      image: my-registry/my-java-app:1.0.0
      ports:
        - containerPort: 8080
      resources:
        requests:
          memory: "256Mi"
          cpu: "250m"
        limits:
          memory: "512Mi"
          cpu: "500m"

На практике Pod’ы редко создаются напрямую. Обычно используют Deployment, который управляет Pod’ами через ReplicaSet.

На собеседовании: интервьюер хочет услышать три вещи: Pod — минимальная единица деплоя, контейнеры внутри Pod’а делят сеть и volumes, Pod’ы эфемерны. Частая ошибка — путать Pod и контейнер или говорить, что Pod = один контейнер всегда.