kubernetes集群中的DNS解析问题

2023-12-09

我们有一个 kubernetes 集群,由 4 个工作节点和 1 个主节点组成。上worker1 and worker2我们无法解析 DNS 名称,但在其他两个节点中一切正常!我按照官方文档的说明进行操作here and 我意识到 coredns pod 没有收到来自worker1 和2 的查询。
我再说一遍,一切都很好worker3 and worker4,我有一个问题worker1 and worker2。例如,当我运行busybox容器中的worker1 and do nslookup kubernetes.default它不会返回任何东西,但是当它运行在worker3DNS解析正常。

集群信息:

$ kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"12", GitVersion:"v1.12.1", GitCommit:"4ed3216f3ec431b140b1d899130a69fc671678f4", GitTreeState:"clean", BuildDate:"2018-10-05T16:43:08Z", GoVersion:"go1.10.4", Compiler:"gc", Platform:"linux/amd64"}

$ kubectl get pod -n kube-system
NAME                                    READY   STATUS    RESTARTS   AGE
coredns-576cbf47c7-6dtrc                1/1     Running   5          82d
coredns-576cbf47c7-jvx5l                1/1     Running   6          82d
etcd-master                             1/1     Running   35         298d
kube-apiserver-master                   1/1     Running   14         135m
kube-controller-manager-master          1/1     Running   42         298d
kube-proxy-22f49                        1/1     Running   9          91d
kube-proxy-2s9sx                        1/1     Running   34         298d
kube-proxy-jh2m7                        1/1     Running   5          81d
kube-proxy-rc5r8                        1/1     Running   5          63d
kube-proxy-vg8jd                        1/1     Running   6          104d
kube-scheduler-master                   1/1     Running   39         298d
kubernetes-dashboard-65c76f6c97-7cwwp   1/1     Running   45         293d
tiller-deploy-779784fbd6-dzq7k          1/1     Running   5          87d
weave-net-556ml                         2/2     Running   12         66d
weave-net-h9km9                         2/2     Running   15         81d
weave-net-s88z4                         2/2     Running   0          145m
weave-net-smrgc                         2/2     Running   14         63d
weave-net-xf6ng                         2/2     Running   15         82d

$ kubectl logs coredns-576cbf47c7-6dtrc -n kube-system | tail -20
10.44.0.28:32837 - [14/Dec/2019:12:22:51 +0000] 2957 "AAAA IN spark-master.default.svc.cluster.local. udp 56 false 512" NOERROR qr,aa,rd,ra 149 0.000661167s
10.44.0.28:51373 - [14/Dec/2019:12:25:09 +0000] 46278 "AAAA IN spark-master.default.svc.cluster.local. udp 56 false 512" NOERROR qr,aa,rd,ra 149 0.000440918s
10.44.0.28:51373 - [14/Dec/2019:12:25:09 +0000] 47697 "A IN spark-master.default.svc.cluster.local. udp 56 false 512" NOERROR qr,aa,rd,ra 110 0.00059741s
10.44.0.28:44969 - [14/Dec/2019:12:27:27 +0000] 33222 "AAAA IN spark-master.default.svc.cluster.local. udp 56 false 512" NOERROR qr,aa,rd,ra 149 0.00044739s
10.44.0.28:44969 - [14/Dec/2019:12:27:27 +0000] 52126 "A IN spark-master.default.svc.cluster.local. udp 56 false 512" NOERROR qr,aa,rd,ra 110 0.000310494s
10.44.0.28:39392 - [14/Dec/2019:12:29:11 +0000] 41041 "AAAA IN spark-master.default.svc.cluster.local. udp 56 false 512" NOERROR qr,aa,rd,ra 149 0.000481309s
10.44.0.28:40999 - [14/Dec/2019:12:29:11 +0000] 695 "AAAA IN spark-master.svc.cluster.local. udp 48 false 512" NXDOMAIN qr,aa,rd,ra 141 0.000247078s
10.44.0.28:54835 - [14/Dec/2019:12:29:12 +0000] 59604 "AAAA IN spark-master. udp 30 false 512" NXDOMAIN qr,rd,ra 106 0.020408006s
10.44.0.28:38604 - [14/Dec/2019:12:29:15 +0000] 53244 "A IN spark-master.default.svc.cluster.local. udp 56 false 512" NOERROR qr,aa,rd,ra 110 0.000209231s
10.44.0.28:38604 - [14/Dec/2019:12:29:15 +0000] 23079 "AAAA IN spark-master.default.svc.cluster.local. udp 56 false 512" NOERROR qr,rd,ra 149 0.000191722s
10.44.0.28:57478 - [14/Dec/2019:12:32:15 +0000] 15451 "AAAA IN spark-master.default.svc.cluster.local. udp 56 false 512" NOERROR qr,aa,rd,ra 149 0.000383919s
10.44.0.28:57478 - [14/Dec/2019:12:32:15 +0000] 45086 "A IN spark-master.default.svc.cluster.local. udp 56 false 512" NOERROR qr,aa,rd,ra 110 0.001197812s
10.40.0.34:54678 - [14/Dec/2019:12:52:31 +0000] 6509 "A IN kubernetes.default.svc.monitoring.svc.cluster.local. udp 69 false 512" NXDOMAIN qr,aa,rd,ra 162 0.000522769s
10.40.0.34:60234 - [14/Dec/2019:12:52:31 +0000] 15538 "AAAA IN kubernetes.default.svc.monitoring.svc.cluster.local. udp 69 false 512" NXDOMAIN qr,aa,rd,ra 162 0.000851171s
10.40.0.34:43989 - [14/Dec/2019:12:52:31 +0000] 2712 "AAAA IN kubernetes.default.svc.svc.cluster.local. udp 58 false 512" NXDOMAIN qr,aa,rd,ra 151 0.000306038s
10.40.0.34:59265 - [14/Dec/2019:12:52:31 +0000] 23765 "A IN kubernetes.default.svc.cluster.local. udp 54 false 512" NOERROR qr,aa,rd,ra 106 0.000274748s
10.40.0.34:45622 - [14/Dec/2019:13:26:31 +0000] 38766 "AAAA IN kubernetes.default.svc.monitoring.svc.cluster.local. udp 69 false 512" NXDOMAIN qr,aa,rd,ra 162 0.000436681s
10.40.0.34:42759 - [14/Dec/2019:13:26:31 +0000] 56753 "A IN kubernetes.default.svc.monitoring.svc.cluster.local. udp 69 false 512" NXDOMAIN qr,aa,rd,ra 162 0.000706638s
10.40.0.34:39563 - [14/Dec/2019:13:26:31 +0000] 37876 "AAAA IN kubernetes.default.svc.svc.cluster.local. udp 58 false 512" NXDOMAIN qr,aa,rd,ra 151 0.000445999s
10.40.0.34:57224 - [14/Dec/2019:13:26:31 +0000] 33157 "A IN kubernetes.default.svc.svc.cluster.local. udp 58 false 512" NXDOMAIN qr,aa,rd,ra 151 0.000536896s

$ kubectl get svc -n kube-system
NAME                   TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)         AGE
kube-dns               ClusterIP   10.96.0.10      <none>        53/UDP,53/TCP   298d
kubernetes-dashboard   ClusterIP   10.96.204.236   <none>        443/TCP         298d
tiller-deploy          ClusterIP   10.110.41.66    <none>        44134/TCP       123d

$ kubectl get ep kube-dns --namespace=kube-system
NAME       ENDPOINTS                                               AGE
kube-dns   10.32.0.98:53,10.44.0.21:53,10.32.0.98:53 + 1 more...   298d

当busybox在worker1中时:

$ kubectl exec -ti busybox -- nslookup kubernetes.default
Server:    10.96.0.10
Address 1: 10.96.0.10

nslookup: can't resolve 'kubernetes.default'
command terminated with exit code 1

但是当busybox在worker3中时:

$ kubectl exec -ti busybox -- nslookup kubernetes.default
Server:    10.96.0.10
Address 1: 10.96.0.10
Name:      kubernetes.default
Address 1: 10.96.0.1 kubernetes.default.svc.cluster.local

所有节点均为:Ubuntu 16.04

所有 pod 的 /etc/resolv.conf 内容相同。

我能发现的唯一区别在于kube代理 logs:

工作节点kube-proxy日志:

$ kubectl logs kube-proxy-vg8jd -n kube-system

W1214 06:12:19.201889       1 server_others.go:295] Flag proxy-mode="" unknown, assuming iptables proxy
I1214 06:12:19.321747       1 server_others.go:148] Using iptables Proxier.
W1214 06:12:19.332725       1 proxier.go:317] clusterCIDR not specified, unable to distinguish between internal and external traffic
I1214 06:12:19.332949       1 server_others.go:178] Tearing down inactive rules.
I1214 06:12:20.557875       1 server.go:447] Version: v1.12.1
I1214 06:12:20.601081       1 conntrack.go:98] Set sysctl 'net/netfilter/nf_conntrack_max' to 131072
I1214 06:12:20.601393       1 conntrack.go:52] Setting nf_conntrack_max to 131072
I1214 06:12:20.601958       1 conntrack.go:83] Setting conntrack hashsize to 32768
I1214 06:12:20.602234       1 conntrack.go:98] Set sysctl 'net/netfilter/nf_conntrack_tcp_timeout_established' to 86400
I1214 06:12:20.602300       1 conntrack.go:98] Set sysctl 'net/netfilter/nf_conntrack_tcp_timeout_close_wait' to 3600
I1214 06:12:20.602544       1 config.go:202] Starting service config controller
I1214 06:12:20.602561       1 controller_utils.go:1027] Waiting for caches to sync for service config controller
I1214 06:12:20.602585       1 config.go:102] Starting endpoints config controller
I1214 06:12:20.602619       1 controller_utils.go:1027] Waiting for caches to sync for endpoints config controller
I1214 06:12:20.702774       1 controller_utils.go:1034] Caches are synced for service config controller
I1214 06:12:20.702827       1 controller_utils.go:1034] Caches are synced for endpoints config controller

不工作的节点 kube-proxy 日志:

$ kubectl logs kube-proxy-fgzpf -n kube-system

W1215 12:47:12.660749       1 server_others.go:295] Flag proxy-mode="" unknown, assuming iptables proxy
I1215 12:47:12.679348       1 server_others.go:148] Using iptables Proxier.
W1215 12:47:12.679538       1 proxier.go:317] clusterCIDR not specified, unable to distinguish between internal and external traffic
I1215 12:47:12.679665       1 server_others.go:178] Tearing down inactive rules.
E1215 12:47:12.760702       1 proxier.go:529] Error removing iptables rules in ipvs proxier: error deleting chain "KUBE-MARK-MASQ": exit status 1: iptables: Too many links.
I1215 12:47:12.799926       1 server.go:447] Version: v1.12.1
I1215 12:47:12.832047       1 conntrack.go:98] Set sysctl 'net/netfilter/nf_conntrack_max' to 131072
I1215 12:47:12.833067       1 conntrack.go:52] Setting nf_conntrack_max to 131072
I1215 12:47:12.833266       1 conntrack.go:98] Set sysctl 'net/netfilter/nf_conntrack_tcp_timeout_established' to 86400
I1215 12:47:12.833498       1 conntrack.go:98] Set sysctl 'net/netfilter/nf_conntrack_tcp_timeout_close_wait' to 3600
I1215 12:47:12.833934       1 config.go:202] Starting service config controller
I1215 12:47:12.834061       1 controller_utils.go:1027] Waiting for caches to sync for service config controller
I1215 12:47:12.834253       1 config.go:102] Starting endpoints config controller
I1215 12:47:12.834338       1 controller_utils.go:1027] Waiting for caches to sync for endpoints config controller
I1215 12:47:12.934408       1 controller_utils.go:1034] Caches are synced for service config controller
I1215 12:47:12.934564       1 controller_utils.go:1034] Caches are synced for endpoints config controller

第五行没有出现在第一行中。我不知道这与这个问题是否相关。

欢迎任何建议。


svc.svc in kubernetes.default.svc.svc.cluster.local看起来很奇怪。检查是否相同coredns-576cbf47c7-6dtrc pod.

关闭coredns-576cbf47c7-6dtrcpod 来保证剩余的单个 DNS 实例将回答来自所有工作节点的 DNS 查询。

根据docs,像这样的问题“...表明 coredns/kube-dns 附加组件或相关服务存在问题”。重新启动 coredns 可能会解决该问题。

我会添加到要调查的事项列表中以进行检查和比较/etc/resolv.conf在节点上。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

kubernetes集群中的DNS解析问题 的相关文章

随机推荐

  • 访问由文件夹引用添加的 Swift 变量

    事实上 我在这个简单的问题上花了大约 3 个小时 并用 google 搜索了很多 但没有办法 我的问题很简单 我想将一个目录作为 文件夹引用 添加到我的 Swift xCode 项目中 但无法访问它们 我不需要添加然后使用组引用 有什么建议
  • 如何仅由单个用户发布 Facebook 用户墙/页面状态 不为其他用户安装应用程序

    我正在一个网站上工作 如果在该网站上发布了某些内容 我需要将页面链接从该网站发布到特殊的用户墙或页面 这意味着我只需要一个用户来发布该问题 我面临的问题是访问令牌 因为我不想在网站流量前面显示 Facebook 登录页面 它不像在用户墙上共
  • 如何让Maven下载特定依赖项的源代码和javadoc?

    我需要特定的依赖项文档 一些文档和源代码 告诉 Maven 这样做的最佳方法是什么 首先 IntelliJ 应该自动为您下载源代码 尽管有时您可能需要单击 下载源代码 这实际上使用 Maven 来获取源代码和 javadoc 如果您想使用
  • 角度路线开始和路线结束事件

    我如何访问路由开始和路由结束事件 我想在路由和加载数据时显示进度栏 有人能告诉我这是如何工作的吗 如果您更喜欢使用可观察的 import Router NavigationStart from angular router construc
  • 如何从电子表格编写 Google 表单脚本以根据答案转到特定页面?

    我已经成功创建了一个 Google 表单 该表单使用从此处改编的代码从电子表格填充 https www youtube com watch v BYA4URuWw0s 现在我想让表单根据上一个问题的答案转到一个特定的问题 而不失去从电子表格
  • 引起原因:java.net.NoRouteToHostException:没有到主机的路由

    我正在尝试在 openshift 上从 eclipse 部署我的 Jersey 项目 并且在尾部文件中收到此错误Caused by java net NoRouteToHostException No route to host 以前当我有
  • 如何在php中获取会议邀请电子邮件的回复

    我正在向用户的电子邮件发送日历会议邀请 当接收者接受邀请时 它会出现在接收者日历中 但我无法得到回复 有什么方法可以获得回复并在我的网站中使用它 在这种情况下 Google 服务帐户是完美的解决方案 在这种情况下 用户不需要任何 API 详
  • 如何将 Action Listener 设置为 3 个按钮

    我正在尝试制作一个带有三个按钮的秒表 开始 暂停 和 停止 我的老师只教我们如何将动作监听器设置为两个按钮 如何为三个按钮设置动作监听器 这是到目前为止我的编码 JButton startButton new JButton Start J
  • 获取当前进程中 JavaVM* 的所有实例?

    这仅特定于 Windows JNI 是否提供返回所有实例的 APIJavaVM 调用过程 考虑以下场景 将 C dll 注入到java exe过程 现在的问题是 C dll如何定位当前的实例JavaVM 在它运行的进程内 据我所知 所有 J
  • Django DRF ListField 反序列化 GET 查询参数中的 id 列表

    尝试使用 DRF 的 ListField 选项来反序列化查询参数中的值列表 下例中的应用程序 我很难让它发挥作用 在网上找不到示例 希望有人提供一些帮助 api getAppStats applications one two three
  • 如何从 Genymotion android 模拟器访问本地主机?

    我不知道如何从 Genymotion android 模拟器访问本地主机 顺便说一句 我正在使用 MAMP Update genymotion更新到2 2后你可以使用10 0 3 2 ref 另一种方法 要通过 Genymotion 访问本
  • SignalR、JQuery 和 Node

    在我目前正在进行的一个项目中 我们使用 Electron 作为主机 在 Electron 主进程 这是一个普通的 Node 进程 中 我们需要连接到具有 SignalR 端点的下游后端 然而 由于 SignalR 是一个 JQuery 模块
  • 为什么这两个变量 `${ "_<$filename" }` 和 `${ "::_<$filename" }` 不相等?

    这个问题与this one 你说这两个是一样的 lt filename Not allowed under strict lt filename In main package Not allowed under strict 但接下来怎么
  • Firefox 过渡不起作用

    这是我的 CSS 设置 element1 element2 webkit transition left 0 3s moz transition left 0 3s o transition left 0 3s transition lef
  • 存储用户对象时避免使用 db.UserProperty()

    编辑 2014 年 8 月 1 日 截至本次编辑时 我意识到主题属性db UserProperty 至少从 ndb 数据存储中删除 好的 所以 有 db UserProperty 模型类存储电子邮件地址 按 Unicode 顺序 它与仅存储
  • 改变图例的顺序以实现多种美学

    又一个 传奇 问题 我有几种美学 并希望指定每种美学的图例的绘制顺序 大多数主题都是关于更改项目的顺序within审美 但这不是我的问题 在我的示例中 我想指定填充图例的位置 有趣的是 颜色图例绘制在填充图例的顶部 但是当在底部绘制图例时
  • 过滤pandas数据框列时如何使用.le()和.ge()?

    这是一个 pandas DataFrame 示例 import pandas as pd import numpy as np data first column item1 item2 item3 item4 item5 item6 it
  • TYPO3 - 如何禁用页面上特定内容元素的缓存?

    是否可以禁用页面上某一特定元素的缓存 我已经尝试过以下打字稿 如中所述这个答案 但它对我不起作用 TYPO3 v8 tt content textmedia 20 USER INT 我在用ext fluid styled content使用
  • 班级失衡严重的训练

    这是一个由三部分组成的问题 1 类大小 我正在 5 个类上训练 TF 对象检测 API 其中大小彼此并不接近 第1类图像数量 401 第2类图像数量 389 第3类图像数量 532 第4类图像数量 159393 第5类图像数量 185313
  • kubernetes集群中的DNS解析问题

    我们有一个 kubernetes 集群 由 4 个工作节点和 1 个主节点组成 上worker1 and worker2我们无法解析 DNS 名称 但在其他两个节点中一切正常 我按照官方文档的说明进行操作here and 我意识到 core