本篇文章給大家分享的是有關(guān)如何理解CoreDNS作為kubernetes后端的DNS服務(wù)器,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。
創(chuàng)新互聯(lián)2013年開(kāi)創(chuàng)至今,先為獨(dú)山子等服務(wù)建站,獨(dú)山子等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為獨(dú)山子企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。coredns之所以如此名聲大噪,就是因?yàn)閺膋ubernetes1.9開(kāi)始引入,作為kubernetes內(nèi)部服務(wù)發(fā)現(xiàn)的默認(rèn)dns。毫無(wú)疑問(wèn)kubernetes是coredns的后端之一,所以我們講coredns,就從kubernetes作為其后端開(kāi)始。 |
coredns的諸多特性網(wǎng)上很多文章都有提及,在這里不再贅述。簡(jiǎn)單對(duì)比下其相對(duì)于bind和skydns的優(yōu)勢(shì):
bind可以將解析存儲(chǔ)到mysql或者文件中,coredns也可以將解析存儲(chǔ)到etcd或者文件中,也支持將kubernetes作為其后端,直接調(diào)用kubernetes的api獲取解析數(shù)據(jù),然后緩存到本地內(nèi)存。coredns支持插件擴(kuò)展,目前在第三方插件中還同時(shí)支持將powerdns及amazondns作為其后端,后續(xù)還會(huì)支持越來(lái)越來(lái)的后端。bind在kubernetes的應(yīng)用場(chǎng)景下,基本無(wú)用武之地。
coredns本身就是skydns的繼任者,支持skydns的所有特性,而且性能更好,更易于擴(kuò)展。其插件式特性無(wú)論是bind還是skydns都無(wú)法比擬。
coredns官方網(wǎng)站地址: /tupian/20230522/coredns.io
coredns代碼地址: https://github.com/coredns/coredns
coredns官方插件地址: /tupian/20230522/coredns.io/plugins
coredns第三方插件地址: /tupian/20230522/coredns.io/explugins/
配置kubernetes后端存儲(chǔ)
配置說(shuō)明
其實(shí)官方有kubernetes插件的相關(guān)示例及配置說(shuō)明,地址如下: /tupian/20230522/coredns.io/plugins/kubernetes/
我這里就以官方的配置示例作說(shuō)明:
kubernetes [ZONES...] { resyncperiod DURATION endpoint URL [URL...] tls CERT KEY CACERT namespaces NAMESPACE... labels EXPRESSION pods POD-MODE endpoint_pod_names upstream [ADDRESS...] ttl TTL fallthrough [ZONES...] }
下面對(duì)一些常用參數(shù)作下說(shuō)明:
resyncperiod: 用于從kubernetes的api同步數(shù)據(jù)的時(shí)間間隔
endpoint: 指定kubernetes的api地址,coredns會(huì)自動(dòng)對(duì)其執(zhí)行健康檢查并將請(qǐng)求代理到健康的節(jié)點(diǎn)上。示例如下:
endpoint https://10.1.61.129:6443 https://10.1.61.130:6443
tls: 用于指定連接遠(yuǎn)程kubernetes api的相關(guān)證書(shū)。示例:
tls admin.pem admin-key.pem ca.pem
pods: 指定POD-MODE,有以下三種:
disabled:默認(rèn)
insecure:返回一個(gè)A記錄對(duì)應(yīng)的ip,但并不會(huì)檢查這個(gè)ip對(duì)應(yīng)的Pod當(dāng)前是否存在。這個(gè)選項(xiàng)主要用于兼容kube-dns
verified:推薦的方式,返回A記錄的同時(shí)會(huì)確保對(duì)應(yīng)ip的pod存在。比insecure會(huì)消耗更多的內(nèi)存。
upstream: 定義外部域名解析轉(zhuǎn)發(fā)的地址,可以是一個(gè)ip地址,也可以是一個(gè)resolv.conf文件。示例:
upstream 8.8.8.8:53 8.8.4.4:53
ttl: 默認(rèn)5s,大3600s
示例
一個(gè)完整的配置示例:
# /opt/coredns/cfg/Corefile .:53 { kubernetes wh01 { resyncperiod 10s endpoint https://10.1.61.175:6443 tls admin.pem admin-key.pem ca.pem pods verified endpoint_pod_names upstream /etc/resolv.conf } health log /var/log/coredns.log prometheus :9153 proxy . /etc/resolv.conf cache 30 reload 10s }
也可以使用如下寫(xiě)法:
wh01 { kubernetes { resyncperiod 10s endpoint https://10.1.61.129:6443 tls admin.pem admin-key.pem ca.pem pods verified endpoint_pod_names upstream /etc/resolv.conf } health log errors prometheus :9153 proxy . /etc/resolv.conf cache 30 reload 10s }
其他配置也簡(jiǎn)單作下說(shuō)明:
health:插件,用于檢測(cè)當(dāng)前配置是否存活,默認(rèn)監(jiān)聽(tīng)http 8080端口,可配置
log: 插件,將日志打印到標(biāo)準(zhǔn)輸出
errors:將錯(cuò)誤打印到標(biāo)準(zhǔn)輸出
prometheus: 插件,用于prometheus監(jiān)控
proxy: wh01之外的域名解析都通過(guò)proxy指定的地址實(shí)現(xiàn)代理
cache: 插件,用于在內(nèi)存中緩存dns解析,單位為s
reload: 插件,單位為s,如果配置文件發(fā)生變更,自動(dòng)reload的間隔
啟動(dòng)coredns
nohup /opt/coredns/bin/coredns -conf /opt/coredns/cfg/Corefile &
使用systemd啟動(dòng)coredns
# cat /lib/systemd/system/coredns.service [Unit] Description=CoreDNS Documentation=/tupian/20230522/coredns.io [Service] ExecStart=/opt/coredns/bin/coredns \ -conf /opt/coredns/cfg/Corefile Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.targe
# systemctl start coredns # systemctl enable coredns
以上就是如何理解CoreDNS作為kubernetes后端的DNS服務(wù)器,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道。