Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 为什么dig不通过dns名称解析K8s服务,而nslookup没有问题?_Kubernetes_Nslookup_Dig_Kube Dns_Kubernetes Service - Fatal编程技术网

Kubernetes 为什么dig不通过dns名称解析K8s服务,而nslookup没有问题?

Kubernetes 为什么dig不通过dns名称解析K8s服务,而nslookup没有问题?,kubernetes,nslookup,dig,kube-dns,kubernetes-service,Kubernetes,Nslookup,Dig,Kube Dns,Kubernetes Service,以下是复制的步骤: 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服务 使用n

以下是复制的步骤:

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
dig nginx.default@10.96.0.10任意
;  挖掘9.11.3 nginx.default@10.96.0.10任何
;; 全局选项:+cmd
;; 得到答案:

;; ->>HEADER需要指出的几点:

  • 始终使用“nginx.default.svc.cluster.local”,不要依赖工具来完成它
  • 运行
    dig nginx.default.svc.cluster.local NS
    您将看到它没有宿主名称服务器。当至少存在一个时,您只能指定一个
  • 有趣的是,我发现alpine中的
    dig any
    实际上不起作用,因此在这种情况下,我担心您必须显式使用
    A
    或将其留空(默认为A)
  • 结论:


    改为运行
    dig nginx.default.svc.cluster.local
    dig nginx.default.svc.cluster.local A

    谢谢。建议的两个选项都为我提供了使用
    dig
    的DNS解析。这个问题实际上是在经历了HaProxy之后出现的。我有一个
    解析器
    部分和后端服务器,使用dns名称而不是网络地址。我试图检查当dns名称第一次停止解析并在一段时间内继续解析时,HaProxy是否继续代理。有趣的是,
    nginx
    在启动时被正确解析。但它无法每隔30秒通过这个“短”名称检查服务器后端。HaProxy解析器也更喜欢
    nginx.default.svc.cluster.local
    ,即使它在启动时只能处理
    nginx
    。默认情况下,dig不使用搜索路径。尝试dig+搜索shortname。参考: