Поды, деплойменты и сервисы
три базовых ресурса Kubernetes, на которых строится почти всё.
Почему это важно: Без понимания этих трёх абстракций невозможно ни задеплоить приложение, ни понять, почему оно недоступно.
Главная идея
Pod — единица запуска, Deployment — управляет репликами Pod'ов, Service — стабильная точка доступа к ним.
Как это выглядит на практике
- Pod содержит один или несколько контейнеров с общей сетью.
- Deployment описывает желаемое количество подов и стратегию обновления.
- Service даёт стабильный DNS и IP, балансируя запросы между подами.
- При rolling update Deployment поэтапно заменяет старые поды новыми.
Что происходит под капотом
- Pod — эфемерен: его IP меняется при пересоздании, поэтому к нему нельзя обращаться напрямую.
- ReplicaSet (создаваемый Deployment) следит за количеством реплик.
- Service использует label selector, чтобы найти свои поды.
- Типы Service: ClusterIP (внутри), NodePort (наружу через порт), LoadBalancer (через cloud LB).
Типичные ошибки и заблуждения
- Ошибка: Pod = контейнер. Pod может содержать несколько контейнеров (sidecar pattern).
- Ошибка: Service — это load balancer уровня L7. По умолчанию он L4 (TCP).
- Ошибка: достаточно создать Pod вручную. Без Deployment он не пересоздастся при падении узла.
- Ошибка: rolling update — это zero-downtime магия. Без правильных probes возможны таймауты.
Ключевые выводы
- Pod — единица масштабирования и эфемерен.
- Deployment управляет подами и обновлениями.
- Service даёт стабильную точку доступа.
- Label selector связывает Service с подами.
Термины урока
Pod: единица запуска одного или нескольких контейнеров.
Deployment: контроллер, управляющий ReplicaSet и подами.
Service: абстракция для доступа к набору подов.
Label: пара ключ-значение, используемая для группировки ресурсов.
Связь с работой backend-разработчика
Понимание тройки Pod/Deployment/Service закрывает 80% повседневных задач разработчика в Kubernetes.
Мини-разбор реальной ситуации
Команда обновила образ в Deployment, и 30% запросов стали падать. Оказалось, не было readinessProbe, и Service отправлял трафик на ещё не готовые поды.
Что запомнить
- Pod эфемерен, поэтому нужен Service.
- Deployment — про реплики и обновления.
- Probes критичны для zero-downtime.
Итог
Pod, Deployment, Service — кирпичики, из которых строится почти любое приложение в Kubernetes.
Комментарии к уроку
Войдите, чтобы оставить комментарий.
Пока нет комментариев — будьте первым.