Встречается на 26% собеседований по DevOps

Что такое pod

Под (Pod) — это наименьшая и базовая единица развертывания в Kubernetes, представляющая собой группу из одного или нескольких контейнеров, которые разделяют хранилище, сетевые ресурсы и спецификацию запуска. Контейнеры в поде всегда размещаются вместе на одном рабочем узле (Node) и запускаются в общем сетевом пространстве, что позволяет им взаимодействовать через localhost.

Как это работает

Поды — это временные сущности: они создаются и уничтожаются в процессе работы Kubernetes для поддержания желаемого состояния приложения. Если под умирает, он не восстанавливается самостоятельно, если только не управляется контроллером более высокого уровня, таким как ReplicaSet или Deployment. Поды рассматриваются как атомарная единица: все контейнеры внутри запускаются и останавливаются вместе.

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

  • Совместное использование ресурсов: контейнеры в одном поде могут делить локальные диски и обращаться друг к другу через localhost, как отдельные процессы в одной системе.
  • Управление жизненным циклом: поды создаются и удаляются целиком, а их жизненным циклом управляют контроллеры (например, Deployment), которые обеспечивают нужное количество реплик.
  • Атомарность: под — это единица планирования и масштабирования; все его контейнеры размещаются на одном узле.

Пример

Простой манифест пода в YAML:

yaml
apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
  labels:
    app: myapp
spec:
  containers:
    - name: myapp-container
      image: myapp:1.0
      ports:
        - containerPort: 80

В этом примере определён под с одним контейнером, использующим образ myapp:1.0, и настроенным портом 80. Обычно поды создаются не напрямую, а через Deployment, который управляет их жизненным циклом.

Подводные камни

  • Не восстанавливаются сами: если под удалён или упал, он не появится снова без контроллера. Используйте Deployment или StatefulSet для управления.
  • Ограничения на одном узле: все контейнеры пода работают на одном узле, поэтому нельзя распределить их по разным машинам.
  • Совместное использование IP: контейнеры в поде имеют общий IP-адрес, поэтому порты не должны конфликтовать.
  • Не для всех сценариев: для слабо связанных сервисов лучше использовать отдельные поды, управляемые сервисами (Service).

Когда использовать

Поды подходят для:

  • Одноконтейнерных приложений — самый частый случай.
  • Мультиконтейнерных приложений, где контейнеры должны тесно взаимодействовать, например, веб-сервер и вспомогательный процесс для кэширования или обработки статического контента.
  • Сценариев, где контейнеры должны разделять данные или общаться через localhost.

Коротко

  • Под — минимальная единица развертывания в Kubernetes, группа контейнеров с общими ресурсами.
  • Контейнеры в поде всегда на одном узле и могут общаться через localhost.
  • Поды временные и не восстанавливаются без контроллеров (Deployment, ReplicaSet).
  • Используйте поды для тесно связанных контейнеров; для независимых сервисов — отдельные поды.
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы