kubernetes dns перечисляет все ips для службы

У меня есть список таких стручков:

      ❯ kubectl get pods -l app=test-pod                                                                                                                              (base)
NAME                               READY   STATUS    RESTARTS   AGE
test-deployment-674667c867-jhvg4   1/1     Running   0          14m
test-deployment-674667c867-ssx6h   1/1     Running   0          14m
test-deployment-674667c867-t4crn   1/1     Running   0          14m

у меня есть услуга

      kubectl get services                                                                                                                          (base)
NAMESPACE     NAME                                TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                        AGE
default       test-service                        ClusterIP   10.100.4.138     <none>        4000/TCP                       15m

Я выполняю DNS-запрос:

      ❯ kubectl exec -ti test-deployment-674667c867-jhvg4  -- /bin/bash                                                                                               (base)
root@test-deployment-674667c867-jhvg4:/# busybox nslookup test-service
Server:     10.100.0.10
Address:    10.100.0.10:53

Name:   test-service.default.svc.cluster.local
Address: 10.100.4.138

Моя конфигурация:

      apiVersion: apps/v1
kind: Deployment
metadata:
  name: test-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: test-pod
  template:
    metadata:
      labels:
        app: test-pod
    spec:
      containers:
      - name: python-http-server
        image: python:2.7
        command: ["/bin/bash"]
        args: ["-c", "echo \" Hello from $(hostname)\" > index.html; python -m SimpleHTTPServer 80"]
        ports:
        - name: http
          containerPort: 80
kind: Service
apiVersion: v1
metadata:
  name: test-service
spec:
  selector:
    app: test-pod
  ports:
  - protocol: TCP
    port: 4000
    targetPort: http

Как я могу вместо этого получить список IP-адресов всех модулей через DNS-запрос?

В идеале я хотел бы выполнить nslookupимени и получить список всех IP-адресов модуля в списке.

1 ответ

Вы должны использовать безголовый сервис с селекторами. Он возвращает IP-адреса модулей.

См. здесь:https://kubernetes.io/docs/concepts/services-networking/service/#headless-services .

.spec.clusterIP должен быть «Нет».

Другие вопросы по тегам