Короткий ответ
Pod — это группа из одного или нескольких контейнеров, которые разделяют сетевое пространство имён (один IP, один localhost) и могут разделять volume; Kubernetes планирует, масштабирует и перезапускает именно Pod, а не отдельный контейнер.
Как это работает подробнее
контейнеры внутри одного Pod запускаются в общем network namespace и, опционально, в общих volume, что позволяет им общаться через localhost и обмениваться файлами. Kubernetes управляет жизненным циклом Pod целиком: планирование на узел, перезапуск контейнеров при сбое, остановка происходят на уровне Pod.
Пример кода
manifest.yaml
apiVersion: v1
kind: Pod
metadata:
name: demo-pod
spec:
containers:
- name: app
image: nginx:1.25
ports:
- containerPort: 80Что использовать на практике
- Практика. чаще всего Pod содержит один основной контейнер приложения; дополнительные контейнеры (sidecar, init) добавляют, когда нужна тесная связь по сети или диску — например, сборщик логов рядом с приложением. Для масштабирования и обновлений Pod почти никогда не создают напрямую, а используют Deployment или StatefulSet, которые управляют набором Pod через ReplicaSet.
Подводные камни
- Риски. путать термины "контейнер" и "Pod" как взаимозаменяемые; пытаться создавать Pod вручную для прод-нагрузки вместо Deployment, из-за чего при сбое узла Pod не пересоздаётся автоматически; не учитывать, что все контейнеры Pod всегда планируются на один и тот же узел.