您好,登錄后才能下訂單哦!
這篇文章主要介紹了IPVS下CoreDNS滾動更新解析失敗原理是什么的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇IPVS下CoreDNS滾動更新解析失敗原理是什么文章都會有所收獲,下面我們一起來看看吧。
IPVS 模式下,當 coredns 滾動更新期間,集群監控日志出現大量的連接超時,由于日志異常的時間和 coredns 變更時間完全重疊,懷疑是 coredns 滾動更新造成,下面進行問題復現,并給出優化方案。
創建一個由 2 個 POD 作為后端的 coredns service
通過創建大量 DNS 查詢來訪問此服務
觸發滾動更新 coredns
while true;do time (dig +tries=1 -4 +short A <name> @<dns clusterIP> >> dig.log) >> dig.log 2>&1;done
可以看到在 順序執行(非并發壓測)的情況下,已經出現較多DNS解析超時的情況
dnsperf是一個開源的DNS壓力測試工具,用戶可以用它來對DNS服務器或者Local DNS做壓力測試。dnsperf目前的實現是單進程模式,通過epoll非阻塞地處理網絡事件
$ echo "www.mervinwang.com A" > dnstest $ dnsperf -d dnstest -s <DNS的IP> -c100000 -Q100000 -l60
數據\解析超時時間 | 1000ms | 500ms |
---|---|---|
sent | 67423 | 40925 |
completed | 64358 | 34519 |
lost | 3065 (4.55%) | 6406 (15.65%) |
通過查閱 issue 得知,這里可能與ipvs_udp_timeout
有關,默認的設置的是300s
,coredns
滾動更新的時候 ipvs 中 udp 老鏈接會 300s 才刪除,如果在 300s
內客戶端有端口重用的話就會出現這個問題,并且這個時間和日志發生的時間也很類似,持續了5分鐘。
優化改動
kube-proxy
加了ipvs-udp-timeout=10s
spec: containers: - args: - --kubeconfig=/var/lib/kube-proxy/config - --hostname-override=$(NODE_NAME) - --v=2 - --proxy-mode=ipvs ... - --ipvs-udp-timeout=10s
等待5分鐘(關鍵!!)
coredns
configmap
中 health lameduck
配置改成20s
Corefile: |- .:53 { errors health { lameduck 20s } ready ... }
查看 coredns
日志,等待 reload
修改 coredns configmap 后,coredns 會自動 Reload,Relaod 過程中打印輸出的 lameduck 時間為 上次配置的時間
數據類型\解析超時時間 | 1000ms | 500ms |
---|---|---|
sent | 85027 | 80502 |
completed | 84930 | 80423 |
lost | 97 (0.11%) | 79 (0.10%) |
可以看到,效果還是很明顯的~
最后附上 dnspref 工具的常用參數:
Dnsperf 支持下面的這些命令行參數: -s 用來指定DNS服務器的IP地址,默認值是127.0.0.1 -p 用來指定DNS服務器的端口,默認值是53 -d 用來指定DNS消息的內容文件,該文件中包含要探測的域名和資源記錄類型,見下文 -t 用來指定每個請求的超時時間,默認值是3000ms -Q 用來指定本次壓測的最大請求數,默認值是1000 -c 用來指定并發探測數,默認值是100. dnsperf會從-d指定的文件中隨機選取100個座位探測域名來發送DNS請求. -l 用來指定本次壓測的時間,默認值是無窮大。 -e 本選項通過EDNS0,在OPT資源記錄中運用edns-client-subnet來指定真實的client ip. -i 用來指定前后探測的時間間隔,因為dnsperf是一個壓測工具,所以本選項目前還不支持。 -P 指定用哪個傳輸層協議發送DNS請求,udp或者tcp。默認值是udp -f 指定用什么地址類型發送DNS請求,inet或者inet6。默認值是inet -v 除了標準的輸出外,還輸出每個相應碼的個數。 -h 打印幫助
關于“IPVS下CoreDNS滾動更新解析失敗原理是什么”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“IPVS下CoreDNS滾動更新解析失敗原理是什么”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。