Почему dig не разрешает службу K8s по имени dns, а nslookup не имеет с этим проблем? - PullRequest
0 голосов
/ 03 июня 2018

Вот шаги для воспроизведения:

minikube start
kubectl run nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=ClusterIP

kubectl run -i --tty --rm alpine --image=alpine --restart=Never -- sh
apk add --no-cache bind-tools

Теперь давайте попробуем запросить kibe-dns для nginx службы

с nslookup:

/ # nslookup nginx.default 10.96.0.10
Server:     10.96.0.10
Address:    10.96.0.10#53

Name:   nginx.default.svc.cluster.local
Address: 10.97.239.175

и с dig:

dig nginx.default @10.96.0.10 any

; <<>> DiG 9.11.3 <<>> nginx.default @10.96.0.10 any
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46414
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;nginx.default.         IN  ANY

;; Query time: 279 msec
;; SERVER: 10.96.0.10#53(10.96.0.10)
;; WHEN: Sun Jun 03 15:31:15 UTC 2018
;; MSG SIZE  rcvd: 42

Ничто не изменится, если я заменю имя nginx.default просто nginx.

версия мини-куба: v0.27.0, версия k8s: 1.10.0

1 Ответ

0 голосов
/ 03 июня 2018

Несколько замечаний:

  1. Всегда используйте «nginx.default.svc.cluster.local» и не полагайтесь на инструмент для его завершения.
  2. Запустить dig nginx.default.svc.cluster.local NS вы увидите, что для него нет хостинг-сервера имен.Вы можете указать только один, когда есть хотя бы один.
  3. Интересно, что я обнаружил, что dig any в альпийском не действительно так, так что в этом случае, я боюсь, что вы должны явно использоватьA или оставьте его пустым (по умолчанию A)

Вывод:

Выполните dig nginx.default.svc.cluster.local или dig nginx.default.svc.cluster.local A вместо.

...