kubernetes - 某些查询中附加了 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
这里发生了什么?!文档是错误的还是我的集群内部有问题?
解决方案
默认 ndots:n 为 5。这意味着如果名称中包含的点少于 5 个,系统调用将尝试依次通过所有本地搜索域来解析它,并且 - 如果没有成功 - 将其解析为绝对最后只取名字。
推荐阅读
- html - VSCode script type="text/html" 不提供 html 智能感知功能
- c# - 如何使用 c# 获取估计的执行计划以将该代码包含在 SSIS 组件中
- c# - ARCore Unity - 触摸/更新帧问题
- c++ - 为什么在 C++ 中的删除操作后仍然可以访问释放的动态分配的内存?
- c# - 基于 Owin 的身份验证 - 在 web api 中找不到“配置”方法
- python - 使用 pandas 将包含数组数组的数据帧附加到 h5 文件时使用哪种对象类型映射?
- sql-server - T SQL 更新使用 LAG 关键字“FROM”附近的语法不正确
- spring-boot - 在 Zipkin UI 中以红色显示错误请求的跟踪
- java - Spring Data REST:将一对多对一作为多对多关系返回
- c++ - 如何在字符串中添加整数?