日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Kubernetes 之 Nameserver limits were exceeded

發布時間:2023/12/13 综合教程 43 生活家
生活随笔 收集整理的這篇文章主要介紹了 Kubernetes 之 Nameserver limits were exceeded 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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[0: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 = 3
    // Max number of domains in search path.
    MaxDNSSearchPaths = 6
    // Max number of characters in search path.
    MaxDNSSearchListChars = 256
)

原來默認的支持最大nameserver是3個。然后去兩臺拋出DNSConfigForming的服務器上面檢查/etc/resolv.conf里面的nameserver發現果然超過了三個。

二、解決問題

當然一般被忽略掉的那個nameserver不影響服務使用的話,可以不作為緊急處理。

可以在kubelet設置一個kubermetes專用的resolv.conf文件,保證kubernetes使用到的nameserver不超過三個,這樣就可以解決。

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

resolvConf: /etc/resolv.conf

重啟kubelet生效。

總結

以上是生活随笔為你收集整理的Kubernetes 之 Nameserver limits were exceeded的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。