在騰訊雲容器新增外部 DNS 伺服器

2021-10-05 10:12:24 字數 3186 閱讀 4741

為什麼k8s需要dns服務

k8s給每個服務都分配了vip,通過vip可以訪問和該服務關聯的pod,應用無需關心pod的例項個數,vip會自動做負載均衡。如果乙個服務要訪問另外乙個服務,如何知道另外乙個服務對應的vip呢?

通過環境變數,每個pod啟動的時候,kubelet會把所有的服務以環境變數的形式注入到對應的容器,在容器中可以通過環境變數獲取到對應服務的vip,這種做法帶來的缺點就是容器只能獲取到比它早啟動的服務vip。

通過kuberntes內建的dns服務,服務之間通過服務名稱訪問,這個dns服務在k8s裡面的名字為kube-dns,位於kube-system的命名空間。kubelet啟動的時候通過 --cluster-dns引數指定kube-dns的vip,這樣後續建立的pod都會在對應容器的/etc/resolv.conf檔案中生成一條nameserver指向kube-dns vip的記錄,從而保證所有k8s建立的容器,dns伺服器都使用kube-dns。

kube-dns服務對應的pod包含3個容器:

kubedns:監控k8s服務資源並更新dns記錄

dnsmasq:提供dns快取,快取中的資料通過查詢kubedns獲取

exechealthz:定期檢查kubedns和dnsmasq的健康狀態,並提供dns服務是否健康的http的api

這三個容器的之間的關係如下:

新增外部dns伺服器的操作原理

新增外部dns伺服器的原理是利用dnsmasq的啟動引數,在dnsmasq的啟動引數中,有個叫server的引數,通過server引數可以指定上游的dns伺服器,在kube-dns的deployment yaml檔案中,dnsmasq容器將kubedns容器作為其上游dns伺服器,這個關係也是通過server引數指定的,下面的yaml檔案中,kubedns容器繫結的埠為10053,dnsmasq容器通過"-server=127.0.0.1#10053"指向kube-dns。同樣的方法也可以用於新增外部dns伺服器,只需修改kube-dns服務中dnsmasq的啟動引數即可。

- --no-resolv#預設的網域名稱解析伺服器使用上面的kubedns容器,因為在乙個pod裡所以直接用127.0.0.1的ip位址,kubedns容器的埠為10053

- --server=127.0.0.1#10053
#網域名稱以google.com結尾的使用192.168.10.2作為網域名稱解析伺服器

image: ccr.ccs.tencentyun.com/library/kube-dnsmasq-amd64:1.4.1dnsmasq的啟動引數除了server引數外,還有乙個address的引數,通過該引數可以新增ip和hostname的對映關係,類似於docker run的–add-host引數,–add-host的效果是在容器的/etc/hosts插入ip和hostanme的記錄,在k8s中沒有這樣的引數,如果碰到客戶要在pod中加入ip和主機名的對映關係,用dnsmsq的address引數可以實現該功能。

1、先登入到一台容器主機,將kube-dns的yaml檔案儲存下來

注:kubernetes 1.4.6版本kube-dns名稱為k8s-dns, kubernetes 1.7.8為kube-dns

kubectl get deployment kube-dns -n kube-system -o yaml > kubedns.yaml
2、修改kubedns.yaml檔案,找到kube-dnsmasq-amd64的映象位置,在其啟動引數中做修改,原來的引數如下:

- args:

- --cache-size=500

- --no-resolv

- --server=127.0.0.1#10053

- --log-facility=-

如果這個時候要新增2個外部的dns伺服器,對應的yaml檔案修改如下,修改內容就是加了兩個–server的啟動引數:

- --log-facility=-如果這時需要新增主機名和ip的對應關係,可以通過新增–address引數實現:

4、驗證新增的自定義dns伺服器是否在容器裡生效,驗證方法有很多種,可以通過在服務裡使用dig或nslookup命令來看;也可以直接通過某個依賴於該自定義dns的應用服務來驗證。

騰訊雲修改網域名稱DNS伺服器教程

下面老魏說下操作步驟 一 通過以下步驟檢視 dns 伺服器是否正確 選擇需要檢視的網域名稱,進入該網域名稱的管理頁面。選擇 記錄管理 頁籤。若存在如下提示,說明 dns 伺服器不正確。如下圖所示 注意 不同解析 對應的 dns 位址不同,請根據提示來修改。二 選擇 雲產品 網域名稱與 網域名稱管理 ...

騰訊雲如何修改網域名稱DNS伺服器

下面本文說下操作步驟 一 通過以下步驟檢視 dns 伺服器是否正確 選擇需要檢視的網域名稱,進入該網域名稱的管理頁面。選擇 記錄管理 頁籤。若存在如下提示,說明 dns 伺服器不正確。如下圖所示 注意 不同解析 對應的 dns 位址不同,請根據提示來修改。二 選擇 雲產品 網域名稱與 網域名稱管理 ...

騰訊在香港設資料中心推出騰訊雲服務

港媒稱,騰訊旗下國際業務部宣布,在香港推出騰訊雲服務。據香港頭條財經網 10 月 23 道,騰訊雲的資料中心位於香港,為本地初創企業和創業家提供高效能的雲服務,提高企業營運效率,提公升投資效益。報道稱,國際業務部技術及產品營運高階總監郭頌凱表示,在香港推出騰訊解決方案,同時透過各項策略性計畫,例如與...