当前位置: 首页 > 知识库问答 >
问题:

Kube-dns-间歇性名称解析错误

颛孙霖
2023-03-14

我们正在AWS的CoreOS上运行kubernetes 1.5.7。我们的kube dns映像版本是

gcr.io/google_containers/kubedns-amd64: 1.9gcr.io/google_containers/kube-dnsmasq-amd64: 1.4.1

我们传递给dnsmasq的参数是

  --cache-size=1000
  --no-resolv
  --server=/in-addr.arpa/ip6.arpa/cluster.local/ec2.internal/127.0.0.1#10053
  --server=169.254.169.253
  --server=8.8.8.8
  --log-facility=-
  --log-async
  --address=/com.cluster.local/com.svc.cluster.local/com.kube-system.svc.cluster.local/<ourdomain>.com.cluster.local/<ourdomain>.com.svc.cluster.local/<ourdomain>.com.kube-system.svc.cluster.local/com.ec2.internal/ec2.internal.kube-system.svc.cluster.local/ec2.internal.svc.cluster.local/ec2.internal.cluster.local/

我们在20个节点集群中每个节点运行1个kube dns pod。在过去的几个月里,我们一直在经历DNS故障,从一个5-10分钟的事件,使我们的服务几乎无法使用,因为名称解析是失败的大多数名称查找。在这些活动中,我们运行了3-6个kube dns吊舱。从那时起,我们已经将我们的kube dns吊舱大幅过度配置为每个节点1个,并且没有看到任何5-10分钟的长dns故障事件。然而,现在我们仍然看到较小的DNS故障事件,范围为1-30秒。在调查这些问题的过程中,我们在日志中注意到来自dnsmasq度量容器的以下错误

错误:在标记之前记录。解析:W0517 03:19:50.139060 1服务器。转到:53]从dnsmasq获取度量值时出错:读取udp 127.0.0.1:36181-

当我们有一个较小的DNS事件持续1-30秒时,我们会从kube DNS吊舱中找到这些日志。有一段时间,我们怀疑我们遇到了一个iptables/conntrack问题,无法连接到命中kube dns服务的吊舱。但基于这些与dnsmasq相关的错误,我们认为dnsmasq在一段时间内拒绝连接,导致了我们所经历的DNS故障。对于不熟悉dnsmasq metrics容器的人,它正在同一个pod中对dnsmasq容器执行DNS查找,以获取dnsmasq统计数据。如果无法通过DNS查找检索dnsmasq统计数据,那么认为执行DNS查找的服务可能会遇到相同的问题似乎是合乎逻辑的。

值得注意的是,在这些问题中,我们没有看到来自dnsmasq的以下日志,这使我相信我们没有达到这个阈值。

dnsmasq:已达到最大并发DNS查询数(最大:150)

我非常确信,我们当前的DNS错误与dnsmasq断断续续地拒绝连接有关。我很好奇其他用户是否看到了库贝-dns pod从dnsmasq度量中记录错误,并且在同一时间帧内从集群中的应用程序记录DNS错误的相同问题。

此外,如果任何人对下一步要做什么有任何想法,以了解到底发生了什么,请使用dnsmasq拒绝连接。我正在考虑在调试模式下运行dnsmasq是否有用,但也担心这会带来与在调试模式下运行相关的其他问题。我们正在考虑的其他方案正在缓慢推出CoreDNS(https://github.com/coredns/coredns).

共有1个答案

司马辉
2023-03-14

您提供了许多集群域。每个集群域将被插入到本地/etc/resolv.conf中并被使用。对于resolv.conf中的每个域,都会有单独的dns请求。在您的情况下,每个dns查询将有10个dns查询。

--地址=/com.cluster.local/com.svc.cluster.local/com.kube-system.svc.cluster.local/

我的建议是将集群域的数量减少到只cluster.local

您提供多个群集域的原因是什么?

 类似资料:
  • 我的集群运行的是KubernetesV1.18.2(calico for networking),与KubesPray一起安装。我可以从外部访问我的服务,但当它们需要相互连接时,它们就会失败(例如,当UI试图连接到数据库时)。 下面提供了以下命令的一些输出:https://kubernetes.io/docs/tasks/administer-cluster/dns-debugging-resol

  • 我已经编写了一个程序,从usb摄像头捕获图像,并根据检测到的每帧颜色跟踪对象的位置。间歇性(可能在1分钟、10分钟或半小时后发生)我收到错误消息: 我遵循的流程是: 用相机拍摄一帧,cap=cv2。视频捕获(1)/cap。read() 变换几何,cv2。透视图 高斯模糊滤波器,cv2。高斯模糊 BGR到HSV转换,cv2。CVT彩色(模糊帧,cv2.COLOR\u BGR2HSV) 轮廓发现和分析

  • 我们有一个SSL问题,我是99%,这不是你通常的证书信任商店旋转木马。 我们有一个Weblogic服务器试图通过LDAPS与Active Directory建立SSL连接,底层SSL实现是JSSE。 有时,它是有效的。通常在重新启动Weblogic后的几个小时内。 之后,我们开始得到SSL握手错误,与SSL调试打开我们看到: [ACTIVE]ExecuteThread:'10'用于队列:'webl

  • DNS解析用于将简单好记的域名解析为计算机用于通信的IP地址,便于用户通过域名访问到指定的网址或服务器等。 DNS解析用于将简单好记的域名解析为计算机用于通信的IP地址,便于用户通过域名访问到指定的网址或服务器等。目前仅支持阿里云、腾讯云和AWS,且腾讯云只支持PublicZone类型的DNS。 PublicZone DNS:即公共DNS解析服务,用户可以通过Internet之前访问域名。 Pri

  • DNS记录主要用于将域名转换为托管本网站的服务器IP。 记录是在域名注册商处输入的,这一点很重要。 他们通常为您提供一个DNS管理器面板。 主要目的是人员和应用程序不必记住大数字来导航到一个域。 例如,www.yiibai.com 的IP为 ,所以记住一个友好的名字更容易。 指向一个域的IP是通过一个记录完成的。 例如:www.yiibai.com A记录为 还有其他类型的DNS记录用于网页,具体