Что такое 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 = один контейнер всегда.