Если вы только входите в Kubernetes, чаще всего путают именно три базовых сущности: Pod, Deployment и Service. Понять их различия — значит сделать первый большой шаг к работе с k8s без хаоса.
1. Pod — минимальная единица запуска 📦
Pod — это объект, внутри которого запускается один или несколько контейнеров.
Что важно:
- контейнеры в одном Pod делят сеть и хранилище
- обычно в Pod размещают один основной контейнер
- Pod может быть удалён, пересоздан и получить новый IP
Проще говоря: Pod — это “обёртка” для запуска контейнера в Kubernetes.
Когда используется:
- запуск приложения
- sidecar-контейнеры рядом с основным сервисом
- временные задачи
2. Deployment — управление Pod’ами ⚙️
Deployment не запускает приложение напрямую, а описывает желаемое состояние: сколько Pod должно работать, какой образ использовать, как обновляться.
Что умеет Deployment:
- поддерживать нужное количество реплик
- автоматически пересоздавать упавшие Pod
- выполнять rolling update без простоя
- откатывать релизы
Пример логики: вы указали 3 replicas, и Kubernetes будет следить, чтобы всегда работали 3 Pod.
Итог:
Pod — это единица запуска, а Deployment — способ управлять этими Pod в продакшене.
3. Service — стабильный доступ к Pod 🌐
Pod’ы в Kubernetes не вечны: они пересоздаются, меняют IP. Поэтому нельзя надёжно обращаться к ним напрямую.
Service решает эту проблему:
- даёт постоянную точку доступа
- распределяет трафик между Pod
- позволяет другим сервисам находить приложение по имени
Основные типы Service:
- ClusterIP — доступ только внутри кластера
- NodePort — открывает сервис через порт ноды
- LoadBalancer — внешний доступ через облачный балансировщик
Итог:
Service — это стабильный сетевой слой поверх Pod.
Как это работает вместе 🔗
Связка обычно выглядит так:
- Pod — где реально работает контейнер
- Deployment — управляет количеством и обновлением Pod
- Service — даёт доступ к этим Pod по стабильному адресу
Простая схема:
- Вы создаёте Deployment
- Deployment запускает Pod’ы
- Service направляет трафик на эти Pod’ы
Типичная аналогия:
- Pod = квартира
- Deployment = управляющая компания
- Service = адрес дома и домофон
Что чаще всего спрашивают новички 🤔
Нужен ли Service для каждого Pod?
Нет. Service обычно создают для группы Pod, а не для каждого отдельно.
Можно ли запускать Pod без Deployment?
Да, но в реальной эксплуатации это неудобно: не будет нормального масштабирования, самоисцеления и обновлений.
Почему нельзя просто обращаться к IP Pod?
Потому что IP может измениться после пересоздания.
Главная мысль 💡
Если запомнить одну формулу, то вот она:
Pod запускает контейнер, Deployment управляет Pod, Service даёт к ним доступ.
Это база, без которой сложно понимать Ingress, StatefulSet, Helm и вообще любую практическую работу с Kubernetes.
👀 Ниже по ленте стоит посмотреть подборку каналов про IT — там много полезного по Kubernetes, DevOps, backend и инфраструктуре.