Ответ
Сервис с clusterIP: None называется Headless Service. Он не получает виртуальный кластерный IP-адрес и не выполняет балансировку нагрузки или проксирование трафика на уровне Kubernetes.
Основное назначение: Прямое взаимодействие с конкретными подами. DNS-запрос к имени такого сервиса возвращает не один IP (адрес сервиса), а набор IP-адресов всех подов, которые соответствуют селектору сервиса.
Пример манифеста Headless Service:
apiVersion: v1
kind: Service
metadata:
name: cassandra-headless
spec:
clusterIP: None # Ключевой параметр
selector:
app: cassandra
ports:
- port: 9042
Типичные сценарии использования:
- StatefulSet: Для доступа к отдельным экземплярам stateful-приложений (например, узлы Cassandra, MongoDB, Elasticsearch). Каждый под получает стабильное DNS-имя вида
pod-name.service-name.namespace.svc.cluster-domain. - Сервис обнаружения (Service Discovery): Когда клиенту (часто внутри кластера) необходимо знать адреса всех экземпляров приложения для прямого подключения.
- Интеграция со сторонними системами балансировки или мониторинга, которым нужны прямые IP-адреса подов.
Ответ 18+ 🔞
Бля, ну слушай, тут есть одна хитрая штука в кубере — Headless Service. Это когда сервису похуй на кластерный IP, он его просто не берёт, типа «нахуй не нужен». Никакой балансировки нагрузки, никакого проксирования — всё честно и прямо.
Зачем это, спросишь? А затем, ёпта, чтобы твоё приложение могло тупо накидать DNS-запрос и получить в ответ не один ебучий IP сервиса, а сразу все IP-адреса подов, которые под этот сервис попадают. Прямой доступ, без посредников.
Вот смотри, как это выглядит, простыня на ямле:
apiVersion: v1
kind: Service
metadata:
name: cassandra-headless
spec:
clusterIP: None # Вот это, бля, самый главный параметр! Вырубает IP нахуй.
selector:
app: cassandra
ports:
- port: 9042
А теперь, чувак, где это реально впаривают:
- StatefulSet'ы всякие: Ну, типа Кассандра, Монга, Эластик — там каждому поду нужно своё стабильное DNS-имя, чтобы к нему можно было приехать лично. Получается что-то вроде
pod-name.service-name.namespace.svc.cluster-domain. Удобно, блядь. - Сервис-дискавери на минималках: Когда твоему клиенту внутри кластера надо знать адреса всех инстансов приложения, чтобы подключиться к каждому по отдельности. Не через прокси, а напрямую, по-пацански.
- Интеграция с левыми системами: Допустим, у тебя своя, ебаная, система мониторинги или балансировщик, которым подавай голые IP подов. Вот тут headless сервис и выручает — отдаёт им всё как есть, без прикрас.