Урок 8: Service — стабильная сеть для Pod'ов
До сих пор мы узнали, что Kubernetes поддерживает несколько копий (Pod'ов) вашего приложения в рабочем состоянии и пересоздаёт их, когда они падают. Но здесь есть тихая проблема: у каждого Pod'а есть собственный сетевой адрес (IP), и этот адрес эфемерный — он меняется всякий раз, когда Pod умирает,
Service — это как номер телефона стойки регистрации в офисе. Сотрудники постоянно меняются, но тот, кто звонит, всегда набирает один и тот же номер — и звонок попадает к тому, кто свободен.
- Service
- Объект Kubernetes, который даёт группе Pod'ов стабильные имя и сетевой адрес и распределяет запросы между ними (load-balancing). Адрес остаётся фиксированным, даже когда Pod'ы меняются.
- ClusterIP
- Тип Service по умолчанию: внутренний виртуальный адрес, доступный только изнутри кластера, так что внутренние компоненты могут к нему обращаться, а внешний мир — нет.
- Selector и метки
- Метка (label) — это пара ключ-значение, прикреплённая к Pod'у (например, app: web). Selector в Service указывает, какие метки искать, чтобы Service знал, каким Pod'ам отправлять трафик.
- Эфемерный IP Pod'а
- Каждый Pod получает собственный IP, но этот IP нестабилен: он меняется, когда Pod пересоздаётся или переезжает на другой node. Поэтому нельзя полагаться на него напрямую.
- Балансировка нагрузки
- Распределение входящих запросов между несколькими идентичными Pod'ами, чтобы ни одна копия не была перегружена и сервис оставался доступным.
- targetPort
- Порт, на котором на самом деле слушает приложение внутри Pod'а. Service получает трафик на своём port и перенаправляет его на targetPort Pod'а.