Доступ к Pod через кубеднс без предоставления в качестве сервиса - PullRequest
0 голосов
/ 07 мая 2019

Я пытаюсь проверить связь между модулями без предоставления в качестве службы. Я прочитал, что у модуля есть полное доменное имя в kubedns. kubernetes doc

Его значение по умолчанию должно быть (A Record)
metadata_name.namespace.svc.cluster.local
или
hostname.subdomain.namespace.svc.cluster.local

Но я попробовал как с curl, так и с nslookup. Все не удалось. Сервис исправен, я мог его свернуть с помощью IP-адреса (172.17.0.5)

curl: (6) не удалось разрешить хост
nslookup: не удается разрешить '(null)': имя не разрешено

Чего мне не хватает?

Ответы [ 2 ]

2 голосов
/ 07 мая 2019

Если существует служба без заголовка в том же пространстве имен, что и модуль, и с тем же именем, что и субдомен, сервер KubeDNS кластера также возвращает запись A для полного имени хоста модуля.Например, если для модуля с именем хоста установлено значение «busybox-1», а для субдомена - «default-subdomain», а служба без заголовка с именем «default-subdomain» в том же пространстве имен, то модуль увидит свое собственное полное доменное имя как«Busybox-1.default-subdomain.my-namespace.svc.cluster.local».

Так что в вашем случае вам нужно определить поддомен для pod и создать безголовую службу с тем же именем, которое указывает на стручки.

1 голос
/ 07 мая 2019

Я предлагаю добавить сервис с типом ClusterIP для этого: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types

kind: Service
apiVersion: v1
metadata:
  name: my-service
spec:
  selector:
    app: MyApp
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
  type: ClusterIP

Он не предоставляет ваш модуль вне кластера.Обратите внимание, что это тип службы по умолчанию, и вы можете не указывать его.

Затем запросите службу, например:

curl http://my-service.namespace.svc.cluster.local

Этот подход лучше, чем прямое использование pod DNS по двум причинам:

  • вам не нужно знать точное имя модуля (например, name-id)

  • , в этом случае вы можете запустить несколько модулей за службойи это будет балансировать запросы.Или просто запустите один и он сделает именно то, что вы хотите.

...