Чем Pod, ReplicaSet и Deployment отличаются друг от друга?
- Почему не создают поды напрямую?
- Зачем в поде несколько контейнеров?
Pod — минимальная единица: один или несколько контейнеров с общей сетью (один IP, localhost) и томами; под смертен, его IP меняется. ReplicaSet поддерживает заданное число одинаковых подов. Deployment управляет ReplicaSet-ами и даёт обновления и откаты: при смене образа создаёт новый ReplicaSet и постепенно переносит поды.
- Поды напрямую не создают — некому будет их пересоздать
- Несколько контейнеров в поде — sidecar (прокси, сборщик логов) и init-контейнеры
- Для stateful-сервисов — StatefulSet, для агента на каждом узле — DaemonSet, для разовых задач — Job/CronJob
А ещё Обращаются к подам не по IP, а через Service
Подробно
Связь через метки. ReplicaSet находит «свои» поды по selector. Service тоже выбирает поды по меткам. Метки — основной механизм связи объектов.
Контроллеры рабочих нагрузок:
| объект | для чего |
|---|---|
| Deployment | stateless-сервисы, обновления и откаты |
| StatefulSet | стабильные имена и свои тома (БД, Kafka) |
| DaemonSet | по поду на каждом узле (агенты логов, мониторинга) |
| Job / CronJob | задачи до завершения, по расписанию |
Многоконтейнерный под. Контейнеры пода делят сетевое пространство и могут делить тома. Init-контейнеры выполняются по порядку до основных (миграции, ожидание зависимостей). Sidecar добавляет функциональность, не меняя приложение.
Пример
apiVersion: apps/v1
kind: Deployment
metadata:
name: orders
spec:
replicas: 3
selector:
matchLabels: { app: orders }
template:
metadata:
labels: { app: orders }
spec:
containers:
- name: app
image: registry.example.com/orders:1.4.2
ports: [{ containerPort: 8080 }]Что хотят услышать
- Иерархия Deployment → ReplicaSet → Pod.
- Почему поды не создают напрямую.
- Другие контроллеры и многоконтейнерные поды.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗Pod — группа узлов, ReplicaSet — копия кластера, Deployment — образ контейнера
- ✗Поды лучше создавать напрямую — Deployment нужен только для сбора статистики
- ✓Pod — контейнеры с общей сетью, ReplicaSet — копии, Deployment — версии
- ✗Deployment создаёт поды напрямую без ReplicaSet и поэтому не умеет откатываться к прошлой версии
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.