1、问题描述

最近查看kubernetes 的events,发现了有两个节点经常出现下面的信息:

DNSConfigForming  Nameserver limits were exceeded, some nameservers have been omitted, the applied nameserver line is: 192.96.0.10 10.2.5.1 10.2.5.2

这个是kubelet打出来的,字面意思很好理解,就是nameserver 超出限制,超出的将被忽略。那限制是多少呢?so带着这个疑问就去github kubernetes源码一探究竟。

首先确定知道这个是kubelet里面的events,找到dns的相关源码:kubernetes/pkg/kubelet/network/dns/dns.go

func (c *Configurer) formDNSNameserversFitsLimits(nameservers []string, pod *v1.Pod) []string {
if len(nameservers) > validation.MaxDNSNameservers {
nameservers = nameservers[:validation.MaxDNSNameservers]
log := fmt.Sprintf("Nameserver limits were exceeded, some nameservers have been omitted, the applied nameserver line is: %s", strings.Join(nameservers, " "))
c.recorder.Event(pod, v1.EventTypeWarning, "DNSConfigForming", log)
klog.Error(log)
}
return nameservers
}

找到上面的函数,有一个validation.MaxDNSNameservers,所以kubelet读取resolv.conf里面的nameserver是有数量限制的,最大值就是validation.MaxDNSNameservers,我们现在去找validation的源码。在上面的import里面

找到k8s.io/kubernetes/pkg/apis/core/validation,找到validation这个package的源码:

const (
// Limits on various DNS parameters. These are derived from
// restrictions in Linux libc name resolution handling.
// Max number of DNS name servers.
MaxDNSNameservers =
// Max number of domains in search path.
MaxDNSSearchPaths =
// Max number of characters in search path.
MaxDNSSearchListChars =
)

原来默认的支持最大nameserver是3个。然后去两台抛出DNSConfigForming的服务器上面检查/etc/resolv.conf里面的nameserver发现果然超过了三个。

二、解决问题

当然一般被忽略掉的那个nameserver不影响服务使用的话,可以不作为紧急处理。

可以在kubelet设置一个kubermetes专用的resolv.conf文件,保证kubernetes使用到的nameserver不超过三个,这样就可以解决。

在/var/lib/kubelet路径下,修改config.yaml

resolvConf: /etc/resolv.conf

重启kubelet生效。

最新文章

  1. 二叉树的递归实现(java)
  2. jQuery-1.9.1源码分析系列(十六)ajax——jsonp原理
  3. Storm的ack机制在项目应用中的坑
  4. java接口的嵌套
  5. Python: Lambda Functions
  6. linux:ACL权限
  7. spring data redis RedisTemplate操作redis相关用法
  8. CSS筛选器简单实例1
  9. 3xx Redirection
  10. windows下更新python报错permission denied
  11. Mac下修改环境变量并保存
  12. js第一课总结
  13. 通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?
  14. 构造方法关键字---this
  15. C. Party Lemonade
  16. 【BZOJ3144】【HNOI2013】切糕
  17. 学习 MySQL中导入 导出CSV
  18. JS控制div跳转到指定的位置的几种解决方案总结
  19. nvm-windows的安装配置
  20. 第一章 Linux内核简介

热门文章

  1. 在Asp.net Razor Pages/MVC程序中集成Blazor
  2. 315道Python常见面试题
  3. java基础第十五篇之IO流和递归算法
  4. SpringMVC学习笔记一(请求流程和配置,启动项目)
  5. JavaWeb之Fliter & Listener
  6. Android框架Volley之:ImageRequest请求实现图片加载
  7. 微信小程序使用weui构建搜索栏(searchbar)+导航(navbar)
  8. ABP进阶教程2 - 组合查询
  9. PHP代码篇(二)-- array_column函数将二维数组格式化成固定格式的一维数组,及优化查询方法
  10. RAW数据格式解析