CoreDNS解析域失敗以及內網轉發出現5秒卡頓

問題描述

  1. 測試環境中服務在內網調用其他服務時偶爾出現5秒卡頓,但是在外部網絡調用不會出現卡頓;
  2. 測試環境中訪問外網,偶現解析域名失敗;

調查過程

內網訪問出現卡頓

  1. 對服務自身以及調用目標進行打點計時,發送方接收響應式出現卡頓,目標服務正常;
  2. 對網關以及Nginx進行打點計時,均未出現超時;
  3. 由於外網訪問正常而內網不正常,排除網絡傳輸問題;
  4. 外網訪問與內網的區別是URL不同以及DNS解析所獲取的ip不同,但是實際上接受最終接受請求的都是Nginx,所以嘗試跳過DNS解析直接訪問ip,成功解決卡頓現象.

訪問外網域名解析失敗

  1. 對請求域名進行抓包分析;
  2. 根據抓包返回結果定位到問題出現在CoreDns獲取外部服務ip失敗.

解決方案

內網訪問出現卡頓

CoreDns在解析域名的時候回去嘗試獲取ipv6的地址,在默認情概況下獲取ipv6有可能會出現卡頓現象,設置爲快速模式之後相當於對獲取ipv6地址過程增加了一個超時限制,ipv6解析不存在的時候會快速的返回並嘗試ipv4的解析

修改coredns 的配置增加ipv6解析快速解析

template ANY AAAA {
        rcode NXDOMAIN
}

訪問外網域名解析失敗

在k8s集羣內部想要訪問外網需要從CoreDns統一獲取DNS解析,默認情況下會使用forward模式,兩種模式的區別:

forward:轉發域名查詢到上游DNS服務器;

proxy:轉發特定的域名查詢到多個其他DNS服務器,同時提供多個DNS服務器的負載均衡功能.

修改coredns 的配置,將forward 換成proxy

proxy . /etc/resolv.conf
發佈了78 篇原創文章 · 獲贊 8 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章