摘要:在中,的默認(rèn)配置信息如下的配置信息包含以下的插件錯(cuò)誤日志會(huì)以標(biāo)準(zhǔn)輸出的方式打印到容器日志的健康狀況插件是中用來替代的模塊,將的域名轉(zhuǎn)為的工作由該插件完成,其中常用的參數(shù)作用如下用于設(shè)置的記錄處理模式,如。
本文主要介紹如何在UK8S集群中,使用自定義的DNS服務(wù)。
從Kubernetes 1.11起,CoreDNS取代kube-dns成為默認(rèn)的DNS方案,UK8S目前支持的Kubernetes版本>=1.11,因此本文主要介紹如何修改CoreDNS的配置以達(dá)到使用自定義DNS服務(wù)的目的。
簡(jiǎn)介CoreDNS是一個(gè)模塊化、插件式的DNS服務(wù)器,其配置文件信息保存在Corefile內(nèi)。UK8S集群管理員可通過修改ConfigMap,來配置自定義DNS服務(wù)。
在UK8S中,CoreDNS的默認(rèn)Corefile配置信息如下:
</>復(fù)制代碼
apiVersion: v1
kind: ConfigMap
data:
Corefile: |
.:53 {
errors
health
kubernetes cluster.local in-addr.arpa ip6.arpa {
pods insecure
upstream
fallthrough in-addr.arpa ip6.arpai
ttl 30
}
prometheus :9153
forward . /etc/resolv.conf {
policy sequential
}
cache 30
loop
reload
loadbalance
}
metadata:
name: coredns
namespace: kube-system
Corefile的配置信息包含以下CoreDNS的插件:
errors: 錯(cuò)誤日志會(huì)以標(biāo)準(zhǔn)輸出的方式打印到容器日志;
health: CoreDNS的健康狀況;
kubernetes: kubernetes插件是CoreDNS中用來替代kube-dns的模塊,將service的域名轉(zhuǎn)為IP的工作由該插件完成,其中常用的參數(shù)作用如下:
pods POD-MODES: 用于設(shè)置Pod的A記錄處理模式,如1-2-3-4.ns.pod.cluster.local. in A 1.2.3.4。pods disabled為默認(rèn)值,表示不為pod提供dns記錄;pods insecure會(huì)一直返回對(duì)應(yīng)的A記錄,而不校驗(yàn)ns;pods verified會(huì)校驗(yàn)ns是否正確,如果該ns下有對(duì)應(yīng)的pod,則返回A記錄。
upstream [ADDRESS..]: 定義用于解析外部hosts的上游dns服務(wù)器。如果不指定,則CoreDNS會(huì)自行處理,例如使用后面會(huì)介紹到的proxy插件。
fallthrough [ZONE..]: 如果指定此選項(xiàng),則DNS查詢將在插件鏈上傳遞,該插件鏈可以包含另一個(gè)插件來處理查詢,例如in-addr.arpa。
prometheus: CoreDNS對(duì)外暴露的監(jiān)控指標(biāo),默認(rèn)為http://localhost:9153/metrics。
forward [from to]: 任何不屬于Kubernetes集群內(nèi)部的域名,其DNS請(qǐng)求都將指向forword指定的 DNS 服務(wù)器地址。from一般為".",代表所有域名,to可以為多個(gè),如111.114.114.114 8.8.8.8。需要注意的是,新版本的CoreDNS已forward插件替代proxy插件,不過使用方法是一致的,如果你的集群是proxy,建議改為forward插件,性能更好。
reload: 允許自動(dòng)加載變化了的Corefile,建議配置,這樣CoreDNS可以實(shí)現(xiàn)熱更新。
其他選項(xiàng)的意義請(qǐng)查看Kubernetes官方文檔,下面我們舉例說明下如何修改ConfigMap。
示例為特殊域配置DNS服務(wù)器假設(shè)我們有一個(gè)ucloudk8s的服務(wù)域,自建的私有DNS Server地址為10.9.10.8,則集群管理員可以執(zhí)行kubectl edit configmap/coredns -n kube-system中添加如下所示的一段規(guī)則,這是個(gè)獨(dú)立的Server Block,我們可以在Corefile里面為不同的域配置不同的Server Block。
</>復(fù)制代碼
ucloudk8s.com:53 {
errors
cache 30
forward . 10.9.10.8
}
并且,我們不希望使用/etc/resolv.conf里配置的DNS服務(wù)器作為上游服務(wù)器,而是指向自建的DNS Server,只需要直接修改之前提到的upstream和proxy選項(xiàng)即可
</>復(fù)制代碼
upstream 10.9.10.8
forward . 172.16.0.1
修改完畢后的configmap如下:
</>復(fù)制代碼
apiVersion: v1
kind: ConfigMap
data:
Corefile: |
.:53 {
errors
health
kubernetes cluster.local in-addr.arpa ip6.arpa {
pods insecure
upstream 10.9.10.8
fallthrough in-addr.arpa ip6.arpa
}
prometheus :9153
forward . 10.9.10.8
cache 30
loop
reload
loadbalance
}
ucloudk8s.com:53 {
errors
cache 30
forward . 10.9.10.8
}
metadata:
name: coredns
namespace: kube-system
驗(yàn)證我們?cè)谕琕PC下的某臺(tái)云主機(jī)中(請(qǐng)勿在UK8S Node節(jié)點(diǎn)中操作)安裝一個(gè)DNS服務(wù)器,來驗(yàn)證自定義DNS是否正常工作。
通過Docker安裝DNS服務(wù)器</>復(fù)制代碼
docker run -d -p 53:53/tcp -p 53:53/udp --cap-add=NET_ADMIN --name dns-server andyshinn/dnsmasq:2.75
進(jìn)入容器</>復(fù)制代碼
docker exec -it dns-server /bin/sh
配置上游DNS服務(wù)器</>復(fù)制代碼
vi /etc/resolv.dnsmasq
nameserver 114.114.114.114
nameserver 8.8.8.8
配置本地解析規(guī)則</>復(fù)制代碼
vi /etc/dnsmasqhosts
110.110.110.110 baidu.com
修改dnsmasq配置文件,指定使用上述兩個(gè)我們自定義的配置文件,修改下述兩個(gè)選項(xiàng),并重啟容器。</>復(fù)制代碼
vi /etc/dnsmasq.conf
resolv-file=/etc/resolv.dnsmasq
addn-hosts=/etc/dnsmasqhosts
docker restart dns-server
修改CoreDNS的configmap,添加如下規(guī)則。</>復(fù)制代碼
baidu.com:53{
errors
cache 30
forward . 10.9.10.8(測(cè)試時(shí)需修改成你的DNS地址)
}
進(jìn)入K8S在容器內(nèi)測(cè)試,使用dig命名測(cè)試,可以看到解析地址為110.110.110.110,符合預(yù)期。</>復(fù)制代碼
bash-4.4# dig baidu.com
; <<>> DiG 9.12.3-P4 <<>> baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39140
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;baidu.com. IN A
;; ANSWER SECTION:
baidu.com. 5 IN A 110.110.110.110
;; Query time: 4 msec
;; SERVER: 172.17.0.2#53(172.17.0.2)
;; WHEN: Mon May 27 09:11:50 UTC 2019
;; MSG SIZE rcvd: 63
常見問題修改了CoreFile,但解析不成功首先確認(rèn)CoreFile是否包含了reload插件,如果沒有包含,需要添加reload,并且重建CoreDNS,使其可以加載到最新的DNS規(guī)則。
其次,通過kubectl logs COREDNS-POD-NAME -n kube-system查看CoreDNS日志,確認(rèn)CoreDNS是否正常工作,以及DNS配置是否加載成功。
如果依然不能正常工作,在容器或Pod內(nèi)執(zhí)行dig @YOUR-DNS-SERVER-ADDRESS YOUR-DOMAIN,確認(rèn)您的DNS服務(wù)器是否正常工作。
如以上操作皆無效,請(qǐng)聯(lián)系UCloud技術(shù)支持協(xié)助處理。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/126934.html
摘要:宋體本文從拉勾網(wǎng)的業(yè)務(wù)架構(gòu)日志采集監(jiān)控服務(wù)暴露調(diào)用等方面介紹了其基于的容器化改造實(shí)踐。宋體此外,拉勾網(wǎng)還有一套自研的環(huán)境的業(yè)務(wù)發(fā)布系統(tǒng),不過這套發(fā)布系統(tǒng)未適配容器環(huán)境。寫在前面 拉勾網(wǎng)于 2019 年 3 月份開始嘗試將生產(chǎn)環(huán)境的業(yè)務(wù)從 UHost 遷移到 UK8S,截至 2019 年 9 月份,QA 環(huán)境的大部分業(yè)務(wù)模塊已經(jīng)完成容器化改造,生產(chǎn)環(huán)境中,后臺(tái)管理服務(wù)已全部遷移到 UK8...
摘要:介紹本章節(jié)主要為您簡(jiǎn)要介紹中的一個(gè)重要概念即服務(wù),本文中兩者等同,以及的相關(guān)知識(shí)。在每臺(tái)的固定端口上暴露服務(wù),選擇的服務(wù)類型,集群會(huì)自動(dòng)創(chuàng)建一個(gè)類型的服務(wù),負(fù)責(zé)處理接收到的外部流量。集群外部的可以通過的方式訪問該服務(wù)。Service 介紹本章節(jié)主要為您簡(jiǎn)要介紹 Kubernetes 中的一個(gè)重要概念 Service(即服務(wù),本文中兩者等同),以及ULB的相關(guān)知識(shí)。Service 介紹Serv...
摘要:介紹介紹介紹是集群中的一個(gè)資源對(duì)象,用于定義如何訪問一組帶有相同特征的。下面我們分別介紹下如何通過在內(nèi)網(wǎng)外網(wǎng)訪問。 Service 介紹本篇目錄1. Service 介紹2. ULB 簡(jiǎn)要介紹本章節(jié)主要為您簡(jiǎn)要介紹 Kubernetes 中的一個(gè)重要概念 Service(即服務(wù),本文中兩者等同),以及ULB的相關(guān)知識(shí)。1. Service 介紹Service 是 Kubernetes 集群中...
摘要:為什么在節(jié)點(diǎn)直接起容器網(wǎng)絡(luò)不通為什么在節(jié)點(diǎn)直接起容器網(wǎng)絡(luò)不通為什么在節(jié)點(diǎn)直接起容器網(wǎng)絡(luò)不通使用自己的插件,而直接用起的容器并不能使用該插件,因此網(wǎng)絡(luò)不通。 UK8S 集群常見問題本篇目錄1. UK8S 完全兼容原生 Kubernetes API嗎?2. UK8S 人工支持3. UK8S對(duì)Node上發(fā)布的容器有限制嗎?如何修改?4. 為什么我的容器一起來就退出了?5. Docker 如何調(diào)整日...
摘要:集群常見問題單個(gè)集群最多能添加多少個(gè)節(jié)點(diǎn)當(dāng)前單個(gè)集群對(duì)應(yīng)節(jié)點(diǎn)數(shù)量可查看集群節(jié)點(diǎn)配置推薦。創(chuàng)建失敗,使用發(fā)現(xiàn)報(bào)錯(cuò)為,是啥原因在創(chuàng)建等資源時(shí),都需要扮演云賬戶的身份調(diào)用來完成相關(guān)操作。集群內(nèi)可以解析,但無法聯(lián)通外網(wǎng)拉取數(shù)據(jù)失敗。集群常見問題單個(gè)集群最多能添加多少個(gè)節(jié)點(diǎn)?A:當(dāng)前單個(gè)UK8S集群對(duì)應(yīng)節(jié)點(diǎn)數(shù)量可查看集群節(jié)點(diǎn)配置推薦。UK8S完全兼容原生Kubernetes API嗎?A:完全兼容。U...
摘要:客戶端庫,為需要監(jiān)控的服務(wù)生成相應(yīng)的并暴露給。根據(jù)配置文件,對(duì)接收到的警報(bào)進(jìn)行處理,發(fā)出告警。再創(chuàng)建一個(gè)來告訴需要監(jiān)控帶有為的背后的一組的。什么是Prometheus關(guān)于PrometheusPrometheus 是一套開源的系統(tǒng)監(jiān)控報(bào)警框架。它的設(shè)計(jì)靈感源于 Google 的 borgmon 監(jiān)控系統(tǒng),由SoundCloud 在 2012 年創(chuàng)建,后作為社區(qū)開源項(xiàng)目進(jìn)行開發(fā),并于 2015 ...
閱讀 461·2024-11-07 18:25
閱讀 130795·2024-02-01 10:43
閱讀 949·2024-01-31 14:58
閱讀 908·2024-01-31 14:54
閱讀 83013·2024-01-29 17:11
閱讀 3276·2024-01-25 14:55
閱讀 2068·2023-06-02 13:36
閱讀 3180·2023-05-23 10:26