Вы можете использовать безголовый сервис (следовательно, нет ClusterIP и нет внутренней балансировки нагрузки).Если вы предоставляете селектор, вы можете запросить записи A службы.
См .: https://kubernetes.io/docs/concepts/services-networking/service/#headless-services
Рассмотрим следующий пример:
Развертывание некоторых модулей:
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.16
ports:
- containerPort: 80
Для этого развертывания добавлена следующая безголовая служба:
apiVersion: v1
kind: Service
metadata:
name: nginx
labels:
app: nginx
spec:
ports:
- port: 80
name: web
clusterIP: None
selector:
app: nginx
Теперь это можно запрашивать с помощью DNS (внутри кластера)
$ kubectl run shell -i --rm --tty --restart=Never --image=busybox
# nslookup -type=A nginx
Server: 10.96.0.10
Address: 10.96.0.10:53
Name: nginx.default.svc.cluster.local
Address: 10.34.0.2
Name: nginx.default.svc.cluster.local
Address: 10.42.0.2
Name: nginx.default.svc.cluster.local
Address: 10.46.0.1
Все внутренниеIP-адреса блоков возвращаются в виде записей DNS A.