首页 > 解决方案 > 某些查询中附加了 kubernetes dns 搜索域

问题描述

我正在运行一个带有主节点和 2 个工作节点的 kubernetes 集群。

root@kube-master:~# kubectl get nodes
NAME           STATUS   ROLES    AGE     VERSION
kube-master    Ready    master   4d19h   v1.14.3
kube-node-01   Ready    <none>   4d18h   v1.14.3
kube-node-02   Ready    <none>   6h3m    v1.14.3

现在我的 traefik 入口控制器无法解析 dns 查询。

/ # nslookup acme-v02.api.letsencrypt.org
nslookup: can't resolve '(null)': Name does not resolve

Name:      acme-v02.api.letsencrypt.org
Address 1: <my.public.ip> mail.xxx.xxx

现在,在我的 opnsense 框中使用 tcpdump,我收到了带有内部搜索域的查询,并附加了解析到我的公共 IP 的查询,这是错误的。

但由于某种原因......启动一个busybox测试吊舱正在工作......

/ # nslookup acme-v02.api.letsencrypt.org
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

Name:      acme-v02.api.letsencrypt.org
Address 1: 2a02:26f0:ef:197::3a8e g2a02-26f0-00ef-0197-0000-0000-0000-3a8e.deploy.static.akamaitechnologies.com
Address 2: 2a02:26f0:ef:181::3a8e g2a02-26f0-00ef-0181-0000-0000-0000-3a8e.deploy.static.akamaitechnologies.com
Address 3: 104.74.120.43 a104-74-120-43.deploy.static.akamaitechnologies.com

两个 /etc/resolve.conf 文件都是一样的namespace

由于 kubernetes 1.11 coredns 是默认的 dns 解析系统。在页面上使用 coredns 调试 dns 系统说我应该使用

root@kube-master:~# kubectl get pods --namespace=kube-system -l k8s-app=coredns
No resources found.

但这不会返回任何东西!使用kube-dns返回coredns豆荚!

root@kube-master:~# kubectl get pods --namespace=kube-system -l k8s-app=kube-dns
NAME                      READY   STATUS    RESTARTS   AGE
coredns-fb8b8dccf-jmhdm   1/1     Running   5          4d19h
coredns-fb8b8dccf-tfw7v   1/1     Running   5          4d19h

这里发生了什么?!文档是错误的还是我的集群内部有问题?

标签: kubernetescoredns

解决方案


默认 ndots:n 为 5。这意味着如果名称中包含的点少于 5 个,系统调用将尝试依次通过所有本地搜索域来解析它,并且 - 如果没有成功 - 将其解析为绝对最后只取名字。


推荐阅读